/google-cloudevents-dotnet

CloudEvent Types for .NET

Primary LanguageC#Apache License 2.0Apache-2.0

Google CloudEvents for .NET

Build Status

Overview

This repository contains .NET libraries for CloudEvents issued by Google. The following packages are provided:

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 remaining packages each contain the Google event data types, but each package supports a different serialization framework. The intention is for frameworks such as the .NET Functions Framework to 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 are multiple representations of each event type, which has potential downsides. See issue 12 for further discussion.

Usage

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);

Development

See BUILDING for more information about developing the code within this repository.