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();
}
}








posted on 2011-12-04 20:24  Scarface  阅读(492)  评论(0编辑  收藏  举报

导航