Skip to content

v3.0.0

Latest
Compare
Choose a tag to compare
@gimlichael gimlichael released this 01 Sep 21:46
· 1 commit to main since this release
915ca90

Noticeable highlights:

  • Support for Azure Storage Queue
  • Support for Azure Event Grid
  • CloudEvent now supports attribute extensions
  • Both Newtonsoft and System.Text.Json marshallers now supports naming conventions other than camelCase
  • Messages now support Acknowledgeable

Added

Savvyio.Commands.Messaging

  • CommandExtensions class in the Savvyio.Commands.Messaging namespace that consist of extension methods for the ICommand interface: ToMessage{T}
  • InMemoryCommandQueue class in the Savvyio.Commands.Messaging namespace that provides an in-memory implementation of the IPointToPointChannel{TRequest} interface useful for unit testing and the likes thereof

Savvyio.Core

  • AcknowledgedEventArgs class in the Savvyio.Messaging namespace that provides data for message related operations
  • IAcknowledgeable interface in the Savvyio.Messaging namespace that defines a generic way to make a message acknowledgeable
  • AsyncEventHandler{TEventArgs} delegate in the Savvyio namespace that represents the method that will handle an event when the event provides data asynchronously

Savvyio.EventDriven.Messaging

  • CloudEventExtensions class in the Savvyio.EventDriven.Messaging.CloudEvents.Cryptography namespace that consist of extension methods for the ICloudEvent{T} interface: SignCloudEvent{T}
  • SignedCloudEventExtensions class in the Savvyio.EventDriven.Messaging.CloudEvents.Cryptography namespace that consist of extension methods for the ISignedCloudEvent{T} interface: CheckCloudEventSignature{T}
  • SignedCloudEvent{T} class in the Savvyio.EventDriven.Messaging.CloudEvents.Cryptography namespace that provides a default implementation of the ISignedCloudEvent{T} interface
  • CloudEvent{T} class in the Savvyio.EventDriven.Messaging.CloudEvents namespace that provides a default implementation of the ICloudEvent{T} interface
  • MessageExtensions class in the Savvyio.EventDriven.Messaging.CloudEvents namespace that consist of extension methods for the IMessage{T} interface: ToCloudEvent{T}
  • IntegrationEventExtensions class in the Savvyio.EventDriven.Messaging namespace that consist of extension methods for the IIntegrationEvent interface: ToMessage{T}
  • InMemoryEventBus class in the Savvyio.EventDriven.Messaging namespace that provides an in-memory implementation of the IPublishSubscribeChannel{TRequest} interface useful for unit testing and the likes thereof

Savvyio.Extensions.DependencyInjection

  • ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.Domain namespace was extended with a new extension method for the IServiceCollection interface: AddUnitOfWork{TService}

Savvyio.Extensions.DependencyInjection.QueueStorage

  • AzureCommandQueue{TMarker} class in the Savvyio.Extensions.DependencyInjection.QueueStorage.Commands namespace that provides a default implementation of the AzureCommandQueue class that is optimized for Dependency Injection
  • AzureEventBus{TMarker} class in the Savvyio.Extensions.DependencyInjection.QueueStorage.EventDriven namespace that provides a default implementation of the AzureEventBus class that is optimized for Dependency Injection
  • AzureEventBusOptions{TMarker} class in the Savvyio.Extensions.DependencyInjection.QueueStorage.EventDriven namespace that provides configuration options for AzureEventBus{TMarker}
  • AzureQueueOptions{TMarker} class in the Savvyio.Extensions.DependencyInjection.QueueStorage namespace that provides configuration options for AzureQueueOptions{TMarker}
  • ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.QueueStorage namespace that consist of extension methods for the IServiceCollection interface: AddAzureCommandQueue, AddAzureEventBus

Savvyio.Extensions.Newtonsoft.Json

  • JsonSerializerExtensions class in the Savvyio.Extensions.Newtonsoft.Json namespace that consist of extension methods for the JsonSerializer class: ResolvePropertyKeyByConvention, ResolveDictionaryKeyByConvention

Savvyio.Extensions.QueueStorage

  • AzureCommandQueue class in the Savvyio.Extensions.QueueStorage.Commands namespace provides an Azure Storage Queue implementation of the IPointToPointChannel{TRequest}
  • AzureEventBus class in the Savvyio.Extensions.QueueStorage.EventDriven namespace provides a combined Azure Event Grid/Azure Storage Queue implementation of the IPublishSubscribeChannel{TRequest}
  • AzureEventBusOptions class in the Savvyio.Extensions.QueueStorage.EventDriven namespace that provides configuration options for AzureEventBus
  • AzureQueue{TRequest} class in the Savvyio.Extensions.QueueStorage namespace that represents the base class from which all implementations of Azure Storage Queue should derive
  • AzureQueueOptions class in the Savvyio.Extensions.QueueStorage namespace that provides configuration options for AzureQueue{TRequest}
  • AzureQueueReceiveOptions class in the Savvyio.Extensions.QueueStorage namespace that provides options that is related to receiving messages from an Azure Storage Queue
  • AzureQueueSendOptions class in the Savvyio.Extensions.QueueStorage namespace that provides options that is related to sending messages from an Azure Storage Queue

Changed

Savvyio.Commands

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Core

  • Dependencies to latest and greatest with respect to TFMs
  • IMessage interface to inherit from IAcknowledgeable

Savvyio.Domain

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Domain.EventSourcing

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.EventDriven

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.Dapper

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.DapperExtensions

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.DependencyInjection

  • Dependencies to latest and greatest with respect to TFMs
  • AddDataStore{TService, T} extension method on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.Data namespace to use a default lifetime of Scoped
  • AddDataStore{TService, T, TOptions} extension method on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.Data namespace to use a default lifetime of Scoped
  • AddRepository{TService, TEntity, TKey} extension method on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.Domain namespace to use a default lifetime of Scoped
  • AddMarshaller{TService} extension method on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection namespace to use a default lifetime of Singleton
  • AddDataSource{TService} extension method on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection namespace to use a default lifetime of Scoped
  • ConfigureTriple{TOptions} extension method on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection namespace was renamed to: AddConfiguredOptions{TOptions}

Savvyio.Extensions.DependencyInjection.Dapper

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.DependencyInjection.DapperExtensions

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.DependencyInjection.Domain

  • Dependencies to latest and greatest with respect to TFMs
  • AddAggregateRepository{TService, TEntity, TKey} extension method on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.Domain namespace to use a default lifetime of Scoped

Savvyio.Extensions.DependencyInjection.EFCore

  • Dependencies to latest and greatest with respect to TFMs
  • DefaultEfCoreDataStore{T, TMarker} class in the Savvyio.Extensions.DependencyInjection.EFCore namespace was renamed to EfCoreDataStore{T, TMarker}

Savvyio.Extensions.DependencyInjection.EFCore.Domain

  • Dependencies to latest and greatest with respect to TFMs
  • AddEfCoreAggregateDataSource extension methods on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.EFCore.Domain namespace uses Action{ServiceOptions} instead of Action{EfCoreServiceOptions}
  • AddEfCoreAggregateRepository extension methods on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.EFCore.Domain namespace uses Action{ServiceOptions} instead of Action{EfCoreServiceOptions}

Savvyio.Extensions.DependencyInjection.EFCore.Domain.EventSourcing

  • Dependencies to latest and greatest with respect to TFMs
  • AddEfCoreTracedAggregateRepository extension methods on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.EFCore.Domain.EventSourcing namespace uses Action{ServiceOptions} instead of Action{EfCoreServiceOptions}

Savvyio.Extensions.DependencyInjection.SimpleQueueService

  • Dependencies to latest and greatest with respect to TFMs
  • AddAmazonCommandQueue extension methods on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.SimpleQueueService namespace to use a default lifetime of Singleton
  • AddAmazonEventBus extension methods on the ServiceCollectionExtensions class in the Savvyio.Extensions.DependencyInjection.SimpleQueueService namespace to use a default lifetime of Singleton

Savvyio.Extensions.Dispatchers

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.EFCore

  • Dependencies to latest and greatest with respect to TFMs
  • EfCoreDataStore{T, TOptions} abstract class in the Savvyio.Extensions.EFCore namespace was refactored to EfCoreDataStore{T} class using fixed EfCoreQueryOptions{T} while making it consistent with other default implementations

Savvyio.Extensions.EFCore.Domain

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.EFCore.Domain.EventSourcing

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.Newtonsoft.Json

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.SimpleQueueService

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Extensions.Text.Json

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Messaging

  • Dependencies to latest and greatest with respect to TFMs

Savvyio.Queries

  • Dependencies to latest and greatest with respect to TFMs

Fixed

Savvyio.Extensions.Newtonsoft.Json

  • MessageConverter class in the Savvyio.Extensions.Newtonsoft.Json.Converters namespace so that it supports other naming conventions than the default (camelCase)
  • RequestConverter class in the Savvyio.Extensions.Newtonsoft.Json.Converters namespace so that it supports other naming conventions than the default (camelCase)

Savvyio.Extensions.Text.Json

  • MessageConverter class in the Savvyio.Extensions.Text.Json.Converters namespace so that it supports other naming conventions than the default (camelCase)
  • RequestConverter class in the Savvyio.Extensions.Text.Json.Converters namespace so that it supports other naming conventions than the default (camelCase)

Removed

Savvyio.Commands

  • CommandExtensions class from the Savvyio.Commands.Messaging namespace and moved it to its own assembly (Savvyio.Commands.Messaging)
  • InMemoryCommandQueue record from the Savvyio.Commands.Messaging namespace and moved it to its own assembly (Savvyio.Commands.Messaging)

Savvyio.Core

  • MessageExtensions class from the Savvyio.Messaging.Cryptography namespace and moved it to its own assembly (Savvyio.Messaging)
  • SignedMessage record from the Savvyio.Messaging.Cryptography namespace and moved it to its own assembly (Savvyio.Messaging)
  • SignedMessageOptions class from the Savvyio.Messaging.Cryptography namespace and moved it to its own assembly (Savvyio.Messaging)
  • Message record from the Savvyio.Messaging namespace and moved it to its own assembly (Savvyio.Messaging)
  • MessageExtensions class from the Savvyio.Messaging namespace and moved it to its own assembly (Savvyio.Messaging)
  • MessageOptions class from the Savvyio.Messaging namespace and moved it to its own assembly (Savvyio.Messaging)

Savvyio.EventDriven

  • CloudEvent record from the Savvyio.EventDriven.Messaging.CloudEvents namespace and moved it to its own assembly (Savvyio.EventDriven.Messaging)
  • CloudEventExtensions class from the Savvyio.EventDriven.Messaging.CloudEvents.Cryptography namespace and moved it to its own assembly (Savvyio.EventDriven.Messaging)
  • SignedCloudEvent class from the Savvyio.EventDriven.Messaging.CloudEvents.Cryptography namespace and moved it to its own assembly (Savvyio.EventDriven.Messaging)
  • MessageExtensions class from the Savvyio.EventDriven.Messaging.CloudEvents namespace and moved it to its own assembly (Savvyio.EventDriven.Messaging)
  • InMemoryEventBus class from the Savvyio.EventDriven.Messaging namespace and moved it to its own assembly (Savvyio.EventDriven.Messaging)
  • IntegrationEventExtensions class from the Savvyio.EventDriven.Messaging namespace and moved it to its own assembly (Savvyio.EventDriven.Messaging)

Savvyio.Extensions.DependencyInjection.EFCore

  • EfCoreServiceOptions class from the Savvyio.Extensions.DependencyInjection.EFCore namespace

Savvyio.Extensions.EFCore

  • DefaultEfCoreDataStore{T} class in the Savvyio.Extensions.EFCore namespace

Full Changelog: https://github.com/codebeltnet/savvyio/commits/v3.0.0