Releases: OrleansContrib/Orleankka
Releases · OrleansContrib/Orleankka
2.0.0-RC
1.5.0
Changes since 1.0.1
Breaking
- .NET 4.6.1 minimum framework requirement (constraint of upstream Orleans v1.5)
ClientObservable.Create
->IClientActorSystem.CreateObservable()
-ClientActorSystem/EmbeddedActorSystem
now implement additionalIClientActorSystem
interface which allows to create client-side observablesClientObservable
doesn't have implicit conversion toObserverRef
anymore (since it was converted to interface). UseIClientObservable.Ref
to get observer reference- Removal of binary serialization from all references (StreamRef/ActorRef/ClientRef)
- Removal of static
ClientActorSystem.Current/ClusterActorSystem.Current
in favor of DI - inBootstrappers
and other providers use passedIServiceProvider
to obtain a reference (viaGetService<T>()
) toIActorSystem/ClusterActorSystem
- Removal of
Worker
andActor
attributes. Instead native Orleans attributes are now supported. UseStatelessWorker
and nativeXXXPlacement
attributes EmbeddedActorSystem
now hasTask
returningStart/Stop
methods. You need to await them.ClientActorSystem
now hasTask
returningConnect/Disconnect
methods since it could be created inside silo (actors) and should not blockClientActorSystem/ClusterActorSystem/EmbeddedActorSystem
now require cleanup of resources and implementIDisposable
InvocationPipeline
is gone. Actor interceptor registration is now part of configurator's fluent api. Use providedActorInvoker(IActorInvoker global)
orActorInvoker(string name, IActorInvoker invoker)
to register actor interceptors- Actor activator api has been reworked and simplified. Use provided
Activator(IActorActivator)
method to register it EmbeddedActorSystem
doesn't load silo in separateAppDomain
anymoreReentrant
attribute is gone. Use native Orleans attributes to control interleaving.Reentrant()
->Orleans.Concurrency.Reentrant
Reentrant(string callbackMethod)
->Orleans.Concurrency.MayInterleave
Reentrant(type)
has been renamed toInterleave(type)
attribute to avoid aliasing problems with nativeReentrant
attributeIClientObservable
now returnsClientRef
instead ofObserverRef
- All de-serialialization of references now need to be done via
IActorSystem
. UseActorOf(Path)
/StreamOf(Path)
/ClientOf(Path)
to restore and bind references when writing external serializers (see Hyperion example). CorrespondingDeserialize
methods were removed from all ref classes ActorPath/StreamPath
could be implicitly converted to strings for serialization purposes (see Hyperion example)- The fluent api of
EmbeddedConfigurator
has been reworked to be more intention revealing. Things which make sense only to a cluster or client now need to be configured separately using providedCluster(Action<ClusterConfigurator> configure)
andClient(Action<ClientConfigurator> configure)
callbacks PlaygroundConfigurator
lostTweakClient
/TweakCluster
configuration methods in favor of configuration callback mentioned above- Custom
IActorActivator
now need to be registered via native DI instead of dedicatedActivator()
registration method. See DependencyInjection.Autofac and Demo examples.
New Features
ActorRef
interceptors. This is similar to actor interceptors but for invocations ofActorRef.Tell/Ask/Notify
. Could be thought as replacement for client-side interception feature of Orleans but actor ref interception in Orleankka has broader applicability, since it could be also used inside silo, for example to log all requests made from one actor to another actor to Zipkin, etc.ClientConfigurator
now provides additionalServices(Action<IServiceCollection> configure)
method to inject dependencies via Orleans native DI. Some of the things (likeClusterConnectionLost
delegate) exposed prior Orleans 1.5 viaGrainClient
now need to be injected via DI- Full support for native DI via additional
Services(Action<IServiceCollection> configuie)
method onClusterConfigirator
. This allows registering custom placement strategies, etc - Default actor activator now resolves actor instances via native DI
- New
Actor
constructor overloads which makes using native DI possible.Id
,IActorRuntime
- are all optional now. To use native DI just make them optional in subclass constructors as well. See DependencyInjection.Native and Demo examples. - Exposed some useful grain provided properties such as
IServiceProvider
,IGrainFactory
,Identity
,Logger
, etc viaIActorHost
interface. ImportOrleankka.Core
namespace to gain access - Support multi-cluster registration attributes (
[GlobalSingleInstance]
/[OneInstancePerCluster]
) - Support
[Version]
attribute - Support all built-in
[XXXPlacement]
attributes - Support for custom placement attributes. Parameterized custom placement attributes are supported with public read/write properties of the following types:
- primitives -
string
,bool
,short
,int
,long
,float
anddouble
System.Type
System.Enum
- primitives -
- Actor behaviors now work without explicit pre-registration in unit tests.
ActorBehavior.Register
was removed - One-way invocation via
Notify()
has been optimized with[OneWay]
attribute ActorRef
interceptors. This is similar to actor interceptors but for invocations ofActorRef
Tell/Ask/Notify
. Could be thought as replacement for client-side interception feature of Orleans but actor ref interception in Orleankka has broader applicability, since it could be also used inside silo. Tracing all inter-actor communications to Zipkin is easy now.ClientConfigurator
now provides additionalServices(Action<IServiceCollection> configure)
method to inject dependencies via Orleans native DI. Some of the things (likeClusterConnectionLost
delegate) exposed prior Orleans 1.5 viaGrainClient
need to be injected via DI- Better integration with OrleansDashboard. Metrics will be shown for actual messages being sent to an actor instead of aggregating everything under dumb Receive() label
- Added support for actor storage providers via
ActorStorageProvider
, which basically is a grain storage provider tailored for Orelankka actor API. Check example inOrleankka.Tests/Features/Stateful_actors.cs
TestKit
- Improved
ClientObservable
testing with dedicated mock - Serialization round-trip testing now uses real
ClientBuilder
for validation (but is slower) - Renamed
SerializationOptions
toMessageSerialization
. Also, internally usedSerializationManager
now public. Useful to test serialization without being forced to dispatch viaActorRef
(in case of direct message serilization testing) - Unused members were removed from
StreamRefMock
FSharp
- Updated to FSharp.Core 4.4.1.0
1.5.0-preview8
- Better (future) integration with OrleansDashboard. Metrics will be shown for actual messages being sent to an actor instead of aggregating everything under dumb
Receive()
label
1.5.0-preview7
Breaking Changes
- Custom
IActorActivator
now need to be registered via native DI instead of dedicatedActivator()
registration method. See DependencyInjection.Autofac and Demo examples.
New Features
- Full support for native DI via additional
Services(Action<IServiceCollection> configuie)
method onClusterConfigirator
. This allows registering custom placement strategies, etc - Default actor activator now resolves actor instances via native DI
- New
Actor
constructor overloads which makes using native DI possible.Id
,IActorRuntime
- are all optional now. To use native DI just make them optional in subclass constructors as well. See DependencyInjection.Native and Demo examples.
1.5.0-preview6
Fixes
- Reminder service now correctly handles repeated reminder un-registration in case of repeated forwarding (see discussion here).
1.5.0-preview5
Fixes
- Client actor system connection in case of late cluster startup
- Scanning of
AppDoman.Current.GetAssemblies()
which was causing problems with some 3rd party libs (IKVM)
1.5.0-preview4
Breaking Changes
Reentrant
attribute is gone. Use native Orleans attributes to control interleaving.Reentrant()
->Orleans.Concurrency.Reentrant
Reentrant(string callbackMethod)
->Orleans.Concurrency.MayInterleave
Reentrant(type)
has been renamed toInterleave(type)
attribute to avoid aliasing problems with nativeReentrant
attributeIClientObservable
now returnsClientRef
instead ofObserverRef
- All de-serialialization of references now need to be done via
IActorSystem
. UseActorOf(Path)
/StreamOf(Path)
/ClientOf(Path)
to restore and bind references when writing external serializers (see Hyperion example). CorrespondingDeserialize
methods were removed from all ref classes ActorPath/StreamPath
could be implicitly converted to strings for serialization purposes (see Hyperion example)- The fluent api of
EmbeddedConfigurator
has been reworked to be more intention revealing. Things which make sense only to a cluster or client now need to be configured separately using providedCluster(Action<ClusterConfigurator> configure)
andClient(Action<ClientConfigurator> configure)
callbacks PlaygroundConfigurator
lostTweakClient
/TweakCluster
configuration methods in favor of configuration callback mentioned above
New Features
ActorRef
interceptors. This is similar to actor interceptors but for invocations ofActorRef.Tell/Ask/Notify
. Could be thought as replacement for client-side interception feature of Orleans but actor ref interception in Orleankka has broader applicability, since it could be also used inside silo, for example to log all requests made from one actor to another actor to Zipkin, etc.ClientConfigurator
now provides additionalServices(Action<IServiceCollection> configure)
method to inject dependencies via Orleans native DI. Some of the things (likeClusterConnectionLost
delegate) exposed prior Orleans 1.5 viaGrainClient
now need to be injected via DI
TestKit
- BREAK:
SerializationOptions
was renamed toMessageSerialiation
. Also, internally usedSerializationManager
now public. Useful to test serialization without being forced to dispatch viaActorRef
(in case of direct message serilization testing)
1.5.0-preview3
- FIX: bug with custom actor interface handling
- Updated to FSharp.Core 4.4.1.0
1.5.0-preview2
TestKit
- FIX: Serialization roundtrip testing
1.5.0-preview
Changes since 1.0.1
Breaking
- .NET 4.6.1 framework requirement (constraint of upstream Orleans v1.5)
ClientObservable.Create
->IClientActorSystem.CreateObservable()
-ClientActorSystem/EmbeddedActorSystem
now implement additionalIClientActorSystem
interface which allows to create client-side observablesClientObservable
doesn't have implicit conversion toObserverRef
anymore (since it was converted to interface). UseIClientObservable.Ref
to get observer reference- Removal of binary serialization from all references (StreamRef/ActorRef/ClientRef)
- Removal of static
ClientActorSystem.Current/ClusterActorSystem.Current
in favor of DI - inBootstrappers
and other providers use passedIServiceProvider
to obtain a reference (viaGetService<T>()
) toIActorSystem/ClusterActorSystem
- Removal of
Worker
andActor
attributes. Instead native Orleans attributes are now supported. UseStatelessWorker
and nativeXXXPlacement
attributes EmbeddedActorSystem
now hasTask
returningStart/Stop
methods. You need to await them.ClientActorSystem
now hasTask
returningConnect/Disconnect
methods since it could be created inside silo (actors) and should not blockClientActorSystem/ClusterActorSystem/EmbeddedActorSystem
now require cleanup of resources and implementIDisposable
InvocationPipeline
is gone. Actor interceptor registration is now part of configurator's fluent api. Use providedActorInvoker(IActorInvoker global)
orActorInvoker(string name, IActorInvoker invoker)
to register actor interceptors- Actor activator api has been reworked and simplified. Use provided
Activator(IActorActivator)
method to register it EmbeddedActorSystem
doesn't load silo in separateAppDomain
anymore
New features
- Exposed some useful grain provided properties such as
IServiceProvider
,IGrainFactory
,Identity
,Logger
, etc viaIActorHost
interface. ImportOrleankka.Core
namespace to gain access - Support multi-cluster registration attributes (
[GlobalSingleInstance]
/[OneInstancePerCluster]
) - Support
[Version]
attribute - Support all built-in
[XXXPlacement]
attributes - Support for custom placement attributes. Parameterized custom placement attributes are supported with public read/write properties of the following types:
- primitives -
string
,bool
,short
,int
,long
,float
anddouble
System.Type
System.Enum
- primitives -
- Actor behaviors now work without explicit pre-registration in unit tests.
ActorBehavior.Register
was removed - One-way invocation via
Notify()
has been optimized with[OneWay]
attribute
TestKit
- Improved
ClientObservable
testing with dedicated mock - BROKEN: Serialization roundtrip testing. Will be fixed in next beta release