/// <summary> /// Constructs a WCF based service remoting client factory. /// </summary> /// <param name="clientBinding"> /// WCF binding to use for the client. If the client binding is not specified or null, /// a default client binding is created using /// <see cref="Microsoft.ServiceFabric.Services.Communication.Wcf.WcfUtility.CreateTcpClientBinding"/> method /// which creates a <see cref="System.ServiceModel.NetTcpBinding"/> with no security. /// </param> /// <param name="callbackClient"> /// The callback client that receives the callbacks from the service. /// </param> /// <param name="exceptionHandlers"> /// Exception handlers to handle the exceptions encountered in communicating with the service. /// </param> /// <param name="servicePartitionResolver"> /// Service partition resolver to resolve the service endpoints. If not specified, a default /// service partition resolver returned by <see cref="ServicePartitionResolver.GetDefault"/> is used. /// </param> /// <param name="traceId"> /// Id to use in diagnostics traces from this component. /// </param> /// <param name="createWcfClientFactory"> /// Delegate function that creates <see cref="Microsoft.ServiceFabric.Services.Communication.Wcf.Client.WcfCommunicationClientFactory{TServiceContract}"/> using the /// <see cref="Microsoft.ServiceFabric.Services.Remoting.V2.Wcf.IServiceRemotingContract"/>. /// </param> /// <param name="serializationProvider"></param> /// <remarks> /// This factory uses <see cref="WcfExceptionHandler"/> and <see cref="ServiceRemotingExceptionHandler"/> in addition to the /// exception handlers supplied to the constructor. /// </remarks> public WcfServiceRemotingClientFactory( Binding clientBinding = null, IServiceRemotingCallbackMessageHandler callbackClient = null, IEnumerable <IExceptionHandler> exceptionHandlers = null, IServicePartitionResolver servicePartitionResolver = null, string traceId = null, Func < Binding, IEnumerable <IExceptionHandler>, IServicePartitionResolver, string, IServiceRemotingCallbackContract, WcfCommunicationClientFactory <IServiceRemotingContract> > createWcfClientFactory = null, IServiceRemotingMessageSerializationProvider serializationProvider = null) { if (serializationProvider == null) { serializationProvider = new BasicDataContractSerializationProvider(); } var serializersManager = new ServiceRemotingMessageSerializersManager(serializationProvider, new BasicDataContractHeaderSerializer()); this.Initialize(serializersManager, clientBinding, callbackClient, exceptionHandlers, servicePartitionResolver, traceId, createWcfClientFactory); }
/// <summary> /// Constructs a WCF based service remoting listener. /// </summary> /// <param name="serviceContext">The context of the service for which the remoting listener is being constructed.</param> /// <param name="messageHandler">The handler for receiving and processing remoting messages. As the messages are received /// the listener delivers the messages to the handler. /// </param> /// <param name="serializationProvider"></param> /// <param name="listenerBinding">WCF binding to use for the listener. If the listener binding is not specified or null, /// a default listener binding is created using <see cref="WcfUtility.CreateTcpListenerBinding"/> method which creates /// a <see cref="System.ServiceModel.NetTcpBinding"/> with no security. /// </param> /// <param name="endpointResourceName">The name of the endpoint resource defined in the service manifest that /// should be used to create the address for the listener. If the endpointResourceName is not specified or it is null, /// the default value "ServiceEndpointV2" is used. /// </param> public WcfServiceRemotingListener( ServiceContext serviceContext, IServiceRemotingMessageHandler messageHandler, IServiceRemotingMessageSerializationProvider serializationProvider = null, Binding listenerBinding = null, string endpointResourceName = "ServiceEndpointV2") { if (serializationProvider == null) { serializationProvider = new BasicDataContractSerializationProvider(); } var serializerManager = new ServiceRemotingMessageSerializersManager(serializationProvider, new BasicDataContractHeaderSerializer()); this.Initialize(serviceContext, messageHandler, listenerBinding, endpointResourceName, serializerManager); }
/// <summary> /// Constructs a WCF based service remoting listener. /// </summary> /// <param name="serviceContext">The context of the service for which the remoting listener is being constructed.</param> /// <param name="messageHandler">The handler for receiving and processing remoting messages. As the messages are received /// the listener delivers the messages to the handler. /// </param> /// <param name="serializationProvider"></param> /// <param name="listenerBinding">WCF binding to use for the listener. If the listener binding is not specified or null, /// a default listener binding is created using <see cref="WcfUtility.CreateTcpListenerBinding"/> method. /// </param> /// <param name="address">The endpoint address to use for the WCF listener. If not specified or null, the endpoint /// address is created using the default endpoint resource named "ServiceEndpointV2" defined in the service manifest. /// </param> public WcfServiceRemotingListener( ServiceContext serviceContext, IServiceRemotingMessageHandler messageHandler, IServiceRemotingMessageSerializationProvider serializationProvider = null, Binding listenerBinding = null, EndpointAddress address = null) { if (serializationProvider == null) { serializationProvider = new BasicDataContractSerializationProvider(); } var serializerManager = new ServiceRemotingMessageSerializersManager(serializationProvider, new BasicDataContractHeaderSerializer()); this.Initialize(serviceContext, listenerBinding, address, serializerManager, messageHandler); }
/// <summary> /// Constructs a WCF based service remoting listener. /// </summary> /// <param name="serviceContext">The context of the service for which the remoting listener is being constructed.</param> /// <param name="serviceImplementation">The service implementation object.</param> /// <param name="listenerBinding">WCF binding to use for the listener. If the listener binding is not specified or null, /// a default listener binding is created using <see cref="WcfUtility.CreateTcpListenerBinding"/> method which creates /// a <see cref="System.ServiceModel.NetTcpBinding"/> with no security. /// </param> /// <param name="serializationProvider"></param> /// <param name="endpointResourceName">The name of the endpoint resource defined in the service manifest that /// should be used to create the address for the listener. If the endpointResourceName is not specified or null, /// the default value "ServiceEndpointV2" is used. /// </param> public WcfServiceRemotingListener( ServiceContext serviceContext, IService serviceImplementation, Binding listenerBinding = null, IServiceRemotingMessageSerializationProvider serializationProvider = null, string endpointResourceName = "ServiceEndpointV2") { if (serializationProvider == null) { serializationProvider = new BasicDataContractSerializationProvider(); } var serializerManager = new ServiceRemotingMessageSerializersManager(serializationProvider, new BasicDataContractHeaderSerializer()); this.messageHandler = new ServiceRemotingMessageDispatcher(serviceContext, serviceImplementation, serializerManager.GetSerializationProvider().CreateMessageBodyFactory()); this.wcfListener = new WcfCommunicationListener <IServiceRemotingContract>( serviceContext, new WcfRemotingService( this.messageHandler, serializerManager), listenerBinding, endpointResourceName); }