两个服务之间的WCF回调
我想在两个服务之间建立连接。 Service1将向service2发送事件通知。
我想在这两个服务之间使用回调。 service1将事件发送到service2,service2将事件传递给客户端。
是否可以在两个服务之间使用回调?
我已经查看了wcf回调的示例,但是无法在服务与服务通信之间找到任何内容。
任何帮助都是适用的。 请参阅下面的1个服务的代码。 我的问题:其他服务的代码如何与回调中的代码相似?
或者在这种情况下,其中一项服务就像客户一样? 那怎么样?
Service1代码:(接口类)
public interface IMyEvents { [OperationContract(IsOneWay = true)] void Event1(); } [ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IMyEvents))] public interface SampleInterface { [OperationContract] void DoSomethingAndFireEvent(); [OperationContract] void SubscribeEvent(); }
这是服务类
public class SampleHandlerSimulator : SampleInterface { static Action m_Event1 = delegate { Console.WriteLine("Catch");}; public void SubscribeEvent() { IMyEvents subscriber = OperationContext.Current.GetCallbackChannel(); m_Event1 += subscriber.Event1; } public static void FireEvent() { m_Event1(); } public void DoSomethingAndFireEvent() { CCStateHandlerSimulator.FireEvent(); }
通过向其中一个服务引用添加服务引用来配置服务(请参阅其他服务)。 为此,请确保要引用的服务已启动并正在运行,然后右键单击子服务项目并选择“添加服务引用”。 现在,您可以调用父服务公开的方法。
您将需要一个配置了双工绑定的端点用于回叫。 有关双面装订的信息,请参见此处 将新端点配置添加到父服务时,请更新服务引用。 您需要托管您的服务。
这里提出了类似的问题。
您的观点将如下所示:
请注意,wsDualHttpBinding是需要注意的重要事项。
您的服务合同将如下所示:
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IDuplexCallback))] public interface IDuplexService { [OperationContract(IsOneWay = true)] void FormatString(string institution); }
并且服务实现将如下:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] public class DuplexService : IDuplexService { IDuplexCallback _callback; string _requestString = String.Empty; public DuplexService() { _callback = OperationContext.Current.GetCallbackChannel(); } public void FormatString(string text) { //Make the thread to sleep for 10 seconds Thread.Sleep(4000); //Format the input data _requestString = string.Format("Welcome to {0}", text); //Pass the string to the client through the call back function _callback.DuplexCallbackFunction(_requestString); } }
最后IDuplexCallback声明为:
上述就是C#学习教程:两个服务之间的WCF回调分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public interface IDuplexCallback { [OperationContract(IsOneWay = true)] void DuplexCallbackFunction(string requestString); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1022776.html