zoukankan      html  css  js  c++  java
  • WCF学习我的第一个WCF程序

         本人是一个对新技术(尤其是非学不可的)特别感冒。WCF已经盛行一阵子了,本人现在才开始学习,有点晚啊,哈哈。这周买了本张逸翻译的书《WCF服务编程》,开始了我的WCF学习过程。
        
        我是学自考出身的,一般喜欢先看下实例效果。所以我就根据我对WCF的概念性的理解,创建了我的第一个WCF程序。
        
        第一:当然是要建立WCF服务程序了。



        程序创建后发现生成了三个文件:App.config,IService1.cs,
    Service1.cs
        App.config代码如下:
      
    Code

        这是个配置文件,类似于asp.net程序中的web.config。    

        IService1.cs
        我删除了点其它的方法,保留了一个方法.

    Code
        
        这里定义了一个接口,和普通程序中的接口是一样的,唯一不同的是在接口上面有一个特性[ServiceContract],这是契约中的一种:服务契约。有了这个标记,它就可能面向客户端了。在下面申明的方法中和普通方法也有点不同,同样是多了一个标记[OperationContract],这个标记将方法向客户端公开。

         Service1.cs :它继承了上面的接口.

    Code
         
           第二:有了服务端当然少不了客户端了。这我就用ASP.NET来充当了。
           客户端要想应用服务端程序,一定要添加服务引用了,这里我的服务端与客户端在一个项目里面就可以直接添加服务引用了。


       
       由于我的服务端是本地的,所在点击“发现”,程序就会发现项目中我上面创建的WCF程序。点确定就成功的添加了服务端的引用了。

        第三:写客户端的调用程序。

        页面代码:
       
    Code

           后台代码:
         
    Code
          
           上面的就是我的第一个基于HELLO WORLD 的程序了。
           客户端调用时要先创建代理类
     ServiceReference1 .Service1Client prox=new WebApplication1.ServiceReference1.Service1Client ();
    通过这个代理类就可以调用服务端的方法了。由于只在接口是对外公开的,所有只能调用到接口的方法,你并不能直接调用Service1.cs的方法。这样和我们现在一直提倡的“面向接口编程”非常相似。
    我在应用这个程序的时候,证明了WCF默认情况下是不运行操作符重载的。在C#中的利用重载是相当普遍的做法,但在WCF程序中如果你不做具体设置它会出现异常(InvalidOperationException)。
    下面是错误的代码,并不能编译成功。

    Code

        WCF并不是不支持这种操作重载,而要手动指定。这里要用到OperationContract特性的Name属性。下面是正确的代码.

    Code

        这样在生成代理的时候,程序就会自动在GetData后面加上相应的标记来区分了,这样就达到了操作重载的效果了。
  • 相关阅读:
    B1028人口普查
    B1004成绩排名
    B1041考试座位号
    A1009 Product of Polynomials多项式相乘
    A1002 A+B for Polynomials 多项式相加
    B1010一元多项式求导
    A1065 A+Band C(64 bit)
    A1046 Shortest Distance 最短路径
    排序
    windows 平台使用wireshark命令行抓包
  • 原文地址:https://www.cnblogs.com/ASPNET2008/p/1211613.html
Copyright © 2011-2022 走看看