/// <summary> /// Adds remote listener to stateless service /// </summary> public static ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> AddRemotingListener <TService>( this ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> builder, string name, FabricTransportRemotingListenerSettings?settings = null) where TService : class, IService => builder .ConfigureServices((_, services) => services.TryAddTransient <TService>()) .AddRemotingListener(name, (provider, _) => provider.GetRequiredService <TService>(), settings);
/// <summary> /// Adds remote listener using delegate to create <see cref="IService"/> /// </summary> public static ServiceFabricHostBuilder <TService, TContext> AddRemotingListener <TService, TContext>( this ServiceFabricHostBuilder <TService, TContext> builder, string name, Func <IServiceProvider, TService, IService> createService, FabricTransportRemotingListenerSettings?settings = null) where TService : IServiceFabricService <TContext> where TContext : ServiceContext => builder.AddServiceListener(p => new GenericRemotingListenerBuilder <TService>(name, p, createService, settings));
/// <summary> /// Add Kestrel service listener to stateful service /// </summary> /// <typeparam name="TStartup">The type containing the startup methods for the web listener</typeparam> public static ServiceFabricHostBuilder <OmexStatefulService, StatefulServiceContext> AddKestrelListener <TStartup>( this ServiceFabricHostBuilder <OmexStatefulService, StatefulServiceContext> builder, string name, ServiceFabricIntegrationOptions options, Action <IWebHostBuilder>?builderExtension = null) where TStartup : class => builder.AddKestrelListener <TStartup, OmexStatefulService, StatefulServiceContext>( name, options, builderExtension);
private static ServiceFabricHostBuilder <TService, TContext> AddKestrelListener <TStartup, TService, TContext>( this ServiceFabricHostBuilder <TService, TContext> builder, string name, ServiceFabricIntegrationOptions options, Action <IWebHostBuilder>?builderExtension = null, Action <WebHostBuilderContext, KestrelServerOptions>?kestrelOptions = null) where TStartup : class where TService : IServiceFabricService <TContext> where TContext : ServiceContext => builder.AddServiceListener(provider => new KestrelListenerBuilder <TStartup, TService, TContext>(
public void AddRemotingListener_ToStatelessService_RegisterType() { HostBuilder builder = new HostBuilder(); ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> sfBuilder = MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatelessService, StatelessServiceContext>(builder); sfBuilder.AddRemotingListener <MockRemoteListenerBuilder <OmexStatelessService> >(); IListenerBuilder <OmexStatelessService> value = builder.Build().Services.GetService <IListenerBuilder <OmexStatelessService> >(); Assert.IsInstanceOfType(value, typeof(MockRemoteListenerBuilder <OmexStatelessService>)); }
public void AddRemotingListener_ToStatefulServiceUsingIServiceType_RegisterType() { string expectedName = nameof(AddRemotingListener_ToStatefulServiceUsingIServiceType_RegisterType); FabricTransportRemotingListenerSettings settings = new FabricTransportRemotingListenerSettings(); HostBuilder builder = new HostBuilder(); ServiceFabricHostBuilder <OmexStatefulService, StatefulServiceContext> sfBuilder = MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatefulService, StatefulServiceContext>(builder); sfBuilder.AddRemotingListener <MockService>(expectedName, settings); IListenerBuilder <OmexStatefulService> value = builder.Build().Services.GetService <IListenerBuilder <OmexStatefulService> >(); Assert.IsInstanceOfType(value, typeof(GenericRemotingListenerBuilder <OmexStatefulService>)); Assert.AreEqual(expectedName, value.Name); Assert.AreEqual(settings, GetSettings(value)); }
public void AddRemotingListener_UsingFunc_RegisterType() { string expectedName = nameof(AddRemotingListener_UsingFunc_RegisterType); FabricTransportRemotingListenerSettings settings = new FabricTransportRemotingListenerSettings(); HostBuilder builder = new HostBuilder(); ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> sfBuilder = MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatelessService, StatelessServiceContext>(builder); sfBuilder.AddRemotingListener(expectedName, (p, s) => new MockService(), settings); IListenerBuilder <OmexStatelessService> value = builder.Build().Services.GetService <IListenerBuilder <OmexStatelessService> >(); Assert.IsNotNull(value); Assert.AreEqual(expectedName, value.Name); Assert.AreEqual(settings, GetSettings(value)); }
public void AddRemotingListener_ToStatelessServiceUsingIServiceTypeThatHasUnregisteredDependency_BuildThrowsInvalidOperationException() { string expectedName = nameof(AddRemotingListener_ToStatelessServiceUsingIServiceType_RegisterType); FabricTransportRemotingListenerSettings settings = new FabricTransportRemotingListenerSettings(); HostBuilder builder = new HostBuilder(); ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> sfBuilder = MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatelessService, StatelessServiceContext>(builder); sfBuilder.AddRemotingListener <MockServiceWithDependencies>(expectedName, settings); IListenerBuilder <OmexStatelessService> value = builder.Build().Services.GetRequiredService <IListenerBuilder <OmexStatelessService> >(); InvalidOperationException exception = Assert.ThrowsException <InvalidOperationException>(() => value.Build(MockServiceFabricServices.MockOmexStatelessService)); StringAssert.Contains(exception.Message, typeof(MockServiceWithDependencies).FullName); StringAssert.Contains(exception.Message, typeof(IMockServiceDependency).FullName); }
public void AddRemotingListener_ToStatelessServiceUsingIServiceTypeThatHasNoDependencies_BuildDoesNotThrow() { string expectedName = nameof(AddRemotingListener_ToStatelessServiceUsingIServiceType_RegisterType); FabricTransportRemotingListenerSettings settings = new FabricTransportRemotingListenerSettings(); HostBuilder builder = new HostBuilder(); ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> sfBuilder = MockServiceFabricHostBuilder.CreateMockBuilder <OmexStatelessService, StatelessServiceContext>(builder); sfBuilder.AddRemotingListener <MockService>(expectedName, settings); IListenerBuilder <OmexStatelessService> value = builder.Build().Services.GetRequiredService <IListenerBuilder <OmexStatelessService> >(); ICommunicationListener service = value.Build(MockServiceFabricServices.MockOmexStatelessService); Assert.IsNotNull(service); Assert.AreEqual(expectedName, value.Name); Assert.AreEqual(settings, GetSettings(value)); }
/// <summary> /// Adds remote listener to stateless service /// </summary> public static ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> AddRemotingListener <TListener>( this ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> builder) where TListener : RemotingListenerBuilder <OmexStatelessService> => builder.AddServiceListener <TListener>();
/// <summary> /// Adds remote listener to stateless service /// </summary> public static ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> AddRemotingListener <TService>( this ServiceFabricHostBuilder <OmexStatelessService, StatelessServiceContext> builder, string name, FabricTransportRemotingListenerSettings?settings = null) where TService : IService => builder.AddRemotingListener(name, (provider, _) => provider.GetService <TService>(), settings);