Skip to content

Releases: eventflow/EventFlow

v0.40.2590

30 Mar 12:03
Compare
Choose a tag to compare
  • New: Updated EventFlow logo (thanks @olholm)
  • Fixed: Corrected logo path in NuGet packages

v0.39.2553

16 Jan 20:35
Compare
Choose a tag to compare
  • New: Autofac is no longer IL merged into the EventFlow core NuGet package.
    This is both in preparation for .NET Core and to simplify the build process.
    EventFlow now ships with a custom IoC container by default. The Autofac based
    IoC container is still available via the EventFlow.Autofac and will
    continue to be supported as it is recommended for production use
  • New: An IoC container based aggregate root factory is now the default
    aggregate factory. The old implementation merely invoked a constructor
    with the aggregate ID as argument. The new default also checks if any
    additional services are required for the constructor making the distinction
    between the two obsolete
  • New: Command<,,> now inherits from ValueObject
  • Obsolete: UseResolverAggregateRootFactory() and UseAutofacAggregateRootFactory()
    are marked as obsolete as this is now the default. The current implementation
    of these methods does nothing
  • Obsolete: All IEventFlowOptions.AddAggregateRoots(...) overloads are obsolete,
    the aggregate factory no longer has any need for the aggregate types to be
    registered with the container. The current implementation of the method does
    nothing

v0.38.2454

09 Dec 06:04
Compare
Choose a tag to compare
  • Fix: Single aggregate read models can now be re-populated again

v0.37.2424

08 Nov 21:21
Compare
Choose a tag to compare
  • Breaking: Remove the following empty and deprecated MSSQL NuGet packages. If
    you use any of these packages, then switch to the EventFlow.MsSql package
    • EventFlow.EventStores.MsSql
    • EventFlow.ReadStores.MsSql
  • Breaking: ITaskRunner.Run(...) has changed signature. The task factory now
    gets an instance of IResolver that is valid for the duration of the task
    execution
  • Fixed: The resolver scope of ISubscribeAsynchronousTo<,,> is now valid for
    the duration of the domain handling
  • New: Documentation is now released in HTML format along with NuGet packages.
    Access the ZIP file from the GitHub releases page

v0.36.2315

18 Oct 19:04
Compare
Choose a tag to compare
  • New: Documentation is now hosted at http://docs.geteventflow.net/ and
    http://eventflow.readthedocs.io/ and while documentation is still kept
    along the source code, the documentation files have been converted from
    markdown to reStructuredText
  • New: Added ISubscribeAsynchronousTo<,,> as an alternative to the existing
    ISubscribeSynchronousTo<,,>, which allow domain event subscribers to be
    executed using the new ITaskRunner
  • New: Added ITaskRunner for which the default implementation is mere a thin
    wrapper around Task.Run(...) with some logging added. Implemting this
    interface allows control of how EventFlows runs tasks. Please note that
    EventFlow will only use ITaskRunner in very limited cases, e.g. if
    there's implantations of ISubscribeAsynchronousTo<,,>

v0.35.2247

06 Sep 19:17
Compare
Choose a tag to compare
  • Fixed: IAggregateStore.UpdateAsync and StoreAsync now publishes committed
    events as expected. This basically means that its now possible to circumvent the
    command and command handler pattern and use the IAggregateStore.UpdateAsync
    directly to modify an aggregate root
  • Fixed: Domain events emitted from aggregate sagas are now published

v0.34.2221

23 Aug 19:07
Compare
Choose a tag to compare
  • New core feature: EventFlow now support sagas, also known as process
    managers. The use of sagas is opt-in. Currently EventFlow only supports sagas
    based on aggregate roots, but its possible to implement a custom saga store.
    Consult the documentation for details on how to get started using sagas
  • New: Added IMemoryCache for which the default implementation is a thin
    wrapper for the .NET built-in MemoryCache. EventFlow relies on extensive use
    of reflection and the internal parts of EventFlow will move to this
    implementation for caching internal reflection results to allow better control
    of EventFlow memory usage. Invoke the UsePermanentMemoryCache() extension
    method on IEventFlowOptions to have EventFlow use the previous cache
    behavior using ConcurrentDictionary<,,> based in-memory cache
  • New: Added Identity<>.With(Guid) which allows identities to be created
    based on a specific Guid
  • New: Added Identity<>.GetGuid() which returns the internal Guid

v0.33.2190

22 Aug 21:15
Compare
Choose a tag to compare

v0.32.2163

04 Jul 05:25
Compare
Choose a tag to compare
  • Breaking: This release contains several breaking changes related to
    Elasticsearch read models
    • Elasticsearch NuGet package has been renamed to EventFlow.Elasticsearch
    • Upgraded Elasticsearch dependencies to version 2.3.3
    • Purging all read models from Elasticsearch for a specific type now
      deletes the index instead of doing a delete by query. Make sure to
      create a separate index for each read model. Delete by query has been
      moved to a plugin in Elasticsearch 2.x and
      deleting the entire index is now recommended
    • The default index for a read model is now eventflow-[lower case type name],
      e.g. eventflow-thingyreadmodel, instead of merely eventflow
  • Breaking: The following NuGet dependencies have been updated
    • Elasticsearch.Net v2.3.3 (up from v1.7.1)
    • Elasticsearch.Net.JsonNET removed
    • NEST v2.3.3 (up from v1.7.1)
    • Newtonsoft.Json v8.0.3 (up from v7.0.1)
  • Breaking: Several non-async methods have been moved from the following
    interfaces to extension methods and a few additional overloads have
    been created
    • IEventStore
    • ICommandBus

v0.31.2106

30 Jun 06:42
Compare
Choose a tag to compare
  • New: EventFlow can now be configured to throw exceptions thrown by subscribers
    by options.Configure(c => c.ThrowSubscriberExceptions = true)
  • New: Added an ICommandScheduler for easy scheduling of commands