WCF双工通信
1. 打卡VS2010添加一个 wcf类库模板.
2.在默认个IService1这个契约接口添加一个新的接口IService1Callback 用于服务端调用客户端方法
public interface IService1Callback
{
[OperationContract(IsOneWay = true)]
void Equal(string a);
}
3.修改IService1接口中 默认的服务器端接口的属性 添加一个CallbackContract的属性和SessionMode的属性
[ServiceContract(CallbackContract = typeof(IService1Callback), SessionMode = SessionMode.Required)]
public interface IService1
{
}
4.修改服务器端的配置文件 把binding改为wsDualHttpBinding
<endpoint address ="" binding="wsDualHttpBinding" contract="ServiceLibrary.IService1"></endpoint>
5.接口实现类Service1
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class Service1 : IService1
{
IService1Callback ic = null;
public Service1()
{
ic = OperationContext.Current.GetCallbackChannel<IService1Callback>();
}
}
6.客户端实现IService1Callback
public class client : IService1Callback
{
public void Equal(string a)
{
Console.WriteLine("客户端回调方法" + a);
}
}
7.客户端调用
class Program
{
static void Main(string[] args)
{
InstanceContext instance = new InstanceContext(new client());
ServiceReference1.Service1Client client = new Service1Client(instance);
Console.WriteLine(client.GetData(50));
client.Close();
Console.ReadLine();
}
}