zoukankan      html  css  js  c++  java
  • WCF快速入门——全自动方式编写WCF入门程序

    WCF快速入门——全自动方式编写WCF入门程序 

    本人认为编写WCF程序有三个方式:

      1、全自动方式编写
      2、半自动方式编写
      3、纯手工方式编写

    全自动方式编写WCF程序

      为什么称为全自动编写方式,主要是因为服务使用系统模板创建,使用工具配置服务,并用IIS作为宿主,我们只需要编写一点点的代码即可。

      例子的功能是通过WCF得到字符串“Hello,Wcf自动服务调用成功!”。

     建立步骤

      参照“WCF快速入门——WCF介绍”中的“WCF程序的基本架构”图,我们可以知道要建立三个项目:

        1)服务

        2)运行服务的平台,因为此例使用IIS作为宿主,所以此项目不需要建立。

        3)客户端

       注:以下程序用VS2010编写。  

    一、建立方案    

      1、新建一个空方案WcfAuto。

      2、在空方案WcfAuto中建立二个项目,如下表。

    项目名称

    类型

    用途

    WcfAutoService

    WCF Service Application

    用于建立WCF服务

    UserClient

    Console Application

    客户端。用于调用WCF

      修改项目中的一些名称,最终此方案如下图。   

      

    二、编写服务,即编写WcfAutoService项目

      根据“WCF程序的基本架构图”,可以看出服务主要有地址、契约、绑定三部分组成。在建立WCF Service Application项目时,系统已帮我们建好了契约和服务类型。

      2.1、编写契约

       契约其实是一个接口修改。修改WcfAutoService项目中的IAutoService,变成下边代码。

       注:契约用ServiceContract标识,操作用OperationContract标识。

    namespace WcfAutoService
    {
        
    /*
         契约
         
    */
        [ServiceContract]
        
    public interface IAutoService
        {
            [OperationContract]
            
    string GetData();
        }
    }


      2.2、编写服务类型

        服务类型是契约实现。修改WcfAutoService项目中的AutoService,变成下边代码。

    namespace WcfAutoService
    {
        
    /*
         服务类型
         
    */
        
    public class AutoService : IAutoService
        {
            
    public string GetData()
            {
                
    return "Hello,Wcf自动服务调用成功!";
            }
        }
    }

      2.3 修改Web.Config

      将 “WcfAutoService”项目中Web.Config底部的system.serviceModel部分变成下列代码。服务配置方法请看“WCF 宿主配置文件app.config 的简单配置 说明”。

      <system.serviceModel>
        
    <services>
          
    <service behaviorConfiguration="WcfAutoService.Service1Behavior"
            name
    ="WcfAutoService.AutoService">
            
    <endpoint address="" binding="wsHttpBinding" contract="WcfAutoService.IAutoService">
              
    <identity>
                
    <dns value="localhost" />
              
    </identity>
            
    </endpoint>
            
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
          
    </service>
        
    </services>
        
    <behaviors>
          
    <serviceBehaviors>
            
    <behavior name="WcfAutoService.Service1Behavior">
              
    <serviceMetadata httpGetEnabled="true"/>
              
    <serviceDebug includeExceptionDetailInFaults="false"/>
            
    </behavior>
          
    </serviceBehaviors>
        
    </behaviors>
      
    </system.serviceModel>


      这样基本服务已建好。

    、编写运行服务,即编写宿主

       服务编写好后要让其运行。“WCF Service Application”项目运行有两种方式,一个是通过IIS运行服务,另一种是自己建立运行服务的程序。因为全自动方式编写WCF入门程序,所以这里采用IIS来启动WCF,即用IIS作为WCF宿主。

       使用IIS运行服务方法:

        1)我们找到WcfAutoService项目的根目录,并将此目录设置成虚拟目录。

          修改虚拟目录的属性:允许匿名访问;设置默认启动文档为“AutoService.svc”。如下图。

     

        2)测试服务

          在游览器地址中输入“http://localhost/WcfAutoService/AutoService.svc”。会看到下边界面。表示WCF服务已可以运行。

        

        四、编写客户端

         4.1、添加服务引用

          在“UserClient”项目上右键->“添加服务引用(Add Service Reference)”。如下图。

      在地址中输入刚刚在IIS配置的虚拟目录中svc的路径,“http://localhost/WcfAutoService/AutoService.svc”。点“Go”,运行正常会出现下图。在Namespace中输入此服务在客户端的命名空间。 

     

      4.2、编写客户端代码

        在Program.cs中调用服务,代码如下。

    namespace UserClient
    {
        
    class Program
        {
            
    static void Main(string[] args)
            {
                
    using (WcfAutoService.AutoServiceClient client = new WcfAutoService.AutoServiceClient())
                {
                    
    string result = client.GetData();
                    Console.WriteLine("Wcf调用结果是:{0}",result);
                    Console.ReadKey();
                }
            }
        }
    }


      4.3、运行程序

       将“UserClient”项目设为启动项目并运行,出现结果如下图。

     

      这样“全自动方式编写WCF程序”就完成了。其中有一些如“宿主”、“契约”、“终结点”等关键词语关没有作详细的说明,不过在编写完三个入门程序后在理解起来会更容易些。

       源码下载:WcfAuto.rar

  • 相关阅读:
    Asp.Net构架(Http请求处理流程)、(Http Handler 介绍)、(HttpModule 介绍)
    JQuery中的事件(三)
    关于asp.net mvc中的httpModules 与 httpHandler
    jQuery中的CSS(二)
    JQuery选择器(一)
    JavaScript中利用Ajax 实现客户端与服务器端通信(九)
    JavaScriptDom操作与高级应用(八)
    oracle(二)V$lock 视图中ID1 , ID2 列的含义
    关于static、内部类
    oracle(一)复习起航
  • 原文地址:https://www.cnblogs.com/scottckt/p/1852339.html
Copyright © 2011-2022 走看看