现在的位置: 首页 > 综合 > 正文

面向接口的编程(WCF)

2013年10月03日 ⁄ 综合 ⁄ 共 1364字 ⁄ 字号 评论关闭

http://www.shangxueba.com/jingyan/100645.html

1.创建解决方案

2.创建服务接口

添加一个接口类型

703x440

添加引用

502x385

编写该接口。很简单。就定义了一个OperationContract

1052x751

3.创建服务类型

703x466

添加对接口类型的引用和System.ServiceModel的引用

260x202 

编写服务类型

1052x751

4.创建宿主程序

703x466

添加对System.ServiceModel的引用,添加对服务以及接口的引用

 

编写程序

【备注】这是完全用代码的方式进行托管的,当然还可以用配置的方式来完成

5.创建客户程序

添加对接口类型的引用和System.ServiceModel的引用

260x202 

编写客户端代理类型

6.调试

  

7.进一步扩展

我另外比较欣赏WCF 的是,它所用到的复杂类型也可以更好地在服务端和客户端之间共享。一般可以直接用一个Model项目来保存

【备注】关于这一点,我印象最深刻的是在Web Service的架构中,复杂类型在传递的时候并不那么理想。在生成客户端代理的时候,其实生成那个类型和服务端的那个不是一个东西。

添加引用

 

8.修改接口,添加一个操作

 

9。修改服务,实现该操作

 

10.修改宿主,只需要添加对Model的引用即可

11.修改客户端

修改代理类

/// 


/// 这个类型往常都是通过工具生成的,但也可以自己编写
/// 

class HelloServiceClient : ClientBase,Contracts.IHelloContract{
    public HelloServiceClient(Binding binding, EndpointAddress address) : base(binding, address) { }
    #region IHelloContract 成员
    public string HelloWorld()
    {
        return Channel.HelloWorld();
    }
    #endregion
    #region IHelloContract 成员
    public Model.Employee GetEmployee()
    {
        return Channel.GetEmployee();
    }
    #endregion
}

修改调用代码

static void Main(string[] args)
{
    Binding tcpBinding = new NetTcpBinding();
    EndpointAddress tcpAddress = new EndpointAddress("net.tcp://localhost:81/HelloService");
    HelloServiceClient proxy = new HelloServiceClient(tcpBinding, tcpAddress);
    Console.WriteLine(proxy.HelloWorld());
    Model.Employee employee = proxy.GetEmployee();
    Console.WriteLine(employee);
    Console.Read();
}

调试

抱歉!评论已关闭.