Ejemplo n.º 1
0
        private static IServiceRemotingListener CreateServiceRemotingListener(
            ServiceContext serviceContext,
            object serviceImplementation)
        {
            var serviceTypeInformation = ServiceTypeInformation.Get(serviceImplementation.GetType());
            var interfaceTypes         = serviceTypeInformation.InterfaceTypes;

            var provider = ServiceRemotingProviderAttribute.GetProvider(interfaceTypes);

            return(provider.CreateServiceRemotingListener(serviceContext, (IService)serviceImplementation));
        }
        private IServiceRemotingClientFactory CreateServiceRemotingClientFactory(Type serviceInterfaceType)
        {
            var callbackClient = new DummyServiceRemotingCallbackClient();

            var factory = this.CreateServiceRemotingClientFactory(callbackClient);

            if (factory == null)
            {
                var provider = ServiceRemotingProviderAttribute.GetProvider(new[] { serviceInterfaceType });
                factory = provider.CreateServiceRemotingClientFactory(callbackClient);
            }

            return(factory);
        }
        private static IServiceRemotingListener CreateServiceRemotingListener(
            ServiceContext serviceContext,
            object serviceImplementation)
        {
            var serviceTypeInformation = ServiceTypeInformation.Get(serviceImplementation.GetType());
            var interfaceTypes         = serviceTypeInformation.InterfaceTypes;

            var provider = ServiceRemotingProviderAttribute.GetProvider(interfaceTypes);

            if (provider.RemotingListener.Equals(RemotingListener.V2Listener))
            {
                throw new NotSupportedException(
                          "This extension method doesnt support V2Listener or CompatListener. Use CreateServiceRemotingReplicaListeners for using V2Stack ");
            }
            return(provider.CreateServiceRemotingListener(serviceContext, (IService)serviceImplementation));
        }
Ejemplo n.º 4
0
 private ServiceRemotingProviderAttribute GetProviderAttribute(Type serviceInterfaceType)
 {
     return(ServiceRemotingProviderAttribute.GetProvider(new[] { serviceInterfaceType }));
 }
        /// <summary>
        /// An extension method that creates an <see cref="IServiceRemotingListener"/>
        /// for a stateful service implementation.
        /// <typeparam name="TStatefulService">Type constraint on the service implementation. The service implementation must
        /// derive from <see cref="Microsoft.ServiceFabric.Services.Runtime.StatefulServiceBase"/> and implement one or more
        /// interfaces that derive from <see cref="Microsoft.ServiceFabric.Services.Remoting.IService"/> interface.</typeparam>
        ///</summary>
        /// <param name="serviceImplementation">A stateful service implementation.</param>
        /// <returns>A <see cref="IServiceRemotingListener"/> communication
        /// listener that remotes the interfaces deriving from <see cref="Microsoft.ServiceFabric.Services.Remoting.IService"/> interface.</returns>
        public static IEnumerable <ServiceReplicaListener> CreateServiceRemotingReplicaListeners <TStatefulService>(
            this TStatefulService serviceImplementation)
            where TStatefulService : StatefulServiceBase, IService

        {
            var serviceTypeInformation = ServiceTypeInformation.Get(serviceImplementation.GetType());
            var interfaceTypes         = serviceTypeInformation.InterfaceTypes;
            var impl     = (IService)serviceImplementation;
            var provider = ServiceRemotingProviderAttribute.GetProvider(interfaceTypes);

#if !DotNetCoreClr
            if (provider.RemotingListener.Equals(RemotingListener.V2Listener))
            {
                return(new[]
                {
                    new ServiceReplicaListener(
                        (t) =>
                    {
                        return provider.CreateServiceRemotingListenerV2(serviceImplementation.Context, impl);
                    }, ServiceRemotingProviderAttribute.DefaultV2listenerName
                        )
                });
            }

            if (provider.RemotingListener.Equals(RemotingListener.CompatListener))
            {
                return(new[]
                {
                    new ServiceReplicaListener((t) =>
                    {
                        return provider.CreateServiceRemotingListener(serviceImplementation.Context, impl);
                    }
                                               ),
                    new ServiceReplicaListener(
                        (t) =>
                    {
                        return provider.CreateServiceRemotingListenerV2(serviceImplementation.Context, impl);
                    }, ServiceRemotingProviderAttribute.DefaultV2listenerName
                        )
                });
            }
            else
            {
                return(new[]
                {
                    new ServiceReplicaListener((t) =>
                    {
                        return provider.CreateServiceRemotingListener(serviceImplementation.Context, impl);
                    }
                                               )
                });
            }
#else
            return(new[]
            {
                new ServiceReplicaListener(
                    (t) =>
                {
                    return provider.CreateServiceRemotingListenerV2(serviceImplementation.Context, impl);
                }, ServiceRemotingProviderAttribute.DefaultV2listenerName
                    )
            });
#endif
        }