一、服务器搭建
1、HelloWCFService.cs
using System;
using System.ServiceModel;namespace LearnWCF
{/**定义两个协定接口,一个 服务协定接口 IHelloWCF,一个 回调协定接口 IHelloWCFCallback,* 把 服务协定接口 的实现类写在 服务端 ,* 把 回调协定接口 的实现类写在 客户端 。 **///SessionMode = SessionMode.Required 允许会话//CallbackContract 回调协议[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(IHelloWCFCallback))]public interface IHelloWCF{ //IsOneWay=true 单向通讯,不需要返回[OperationContract(IsOneWay=true)]void HelloWCF();}public interface IHelloWCFCallback{[OperationContract(IsOneWay=true)]void Callback(string msg);}public class HelloWCFService : IHelloWCF{private int _Counter;public void HelloWCF(){System.Threading.Thread.Sleep(5000);string msg = "Hello From Service! Time" + DateTime.Now.ToLongTimeString();//获得回调通道(通过操作上下文,获得当前操作的客户端实例通道)IHelloWCFCallback callbackChannel = OperationContext.Current.GetCallbackChannel<IHelloWCFCallback>();//调用回调操作callbackChannel.Callback(msg);}}}
<%@ServiceHost language=c# Debug="true" Service="LearnWCF.HelloWCFService"%>
<configuration><system.serviceModel><services><service name="LearnWCF.HelloWCFService" behaviorConfiguration="metadataExchange"><endpoint address="" binding="wsDualHttpBinding" contract="LearnWCF.IHelloWCF"/><endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/></service></services><behaviors><serviceBehaviors><behavior name="metadataExchange"><serviceMetadata httpGetEnabled="true" /></behavior></serviceBehaviors></behaviors></system.serviceModel>
</configuration>
二、客户端
本文发布于:2024-02-01 22:39:58,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170679839939893.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |