This repository contains .NET libraries for CloudEvents issued by Google.
The Google.Events
package is very small and has no dependencies.
Its purpose is to expose attributes such as
CloudEventDataConverterAttribute,
as well as the
CloudEventConverters
class that uses those attributes.
The Google.Events.Protobuf
contains the Google event data types,
using Protocol Buffers as the serialization framework.
The design allows for other serialization frameworks (e.g.
System.Text.Json or Json.NET) to be supported in the future, each in
a separate package. Frameworks such as the .NET Functions
Framework
can depend only on Google.Events
, but application code can depend
on whichever package fits in best with their other dependencies. (If
your application already depends on System.Text.Json, you may want
to avoid a dependency on Google.Protobuf, or vice versa.)
This does mean that there could be multiple representations of each event type, which has potential downsides. See issue 12 for further discussion.
From the .NET Functions Framework, these packages are automatically
used for CloudEvent functions implementing
ICloudEventFunction<TData>
, where TData
is one of the event data
classes.
If you wish to use these classes in a different context, code might typically look something like this:
CloudEvent cloudEvent = ...; // However you obtain a CloudEvent
// The event data type from any of the serialization-specific packages.
StorageObjectData data = CloudEventConverters.ConvertCloudEventData<StorageData>(cloudEvent);
See BUILDING for more information about developing the code within this repository.