阿宽

Nothing is more powerful than habit!
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

Posted on 2010-10-17 10:19  宽田  阅读(3339)  评论(14编辑  收藏  举报

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

  为什么称为半自动编写方式,主要是因为服务使用系统模板创建,但需要自己建立程序来运行服务。就好像系统给你一个半成品,剩余部分由你自己来完成。

  用例子来说明。例子的功能是通过WCF得到字符串“Hello,Wcf半自动服务建立成功,并调用成功!”。例子代码用Vs2010编写。


建立步骤

  与前一篇文章“WCF快速入门——全自动方式编写WCF入门程序”一样,先参照“WCF快速入门——WCF介绍”中的“WCF程序的基本架构”图,我们可以知道要建立三个项目:

    1)服务
    2)运行服务的平台,即服务宿主
    3)客户端

   注:以下程序用VS2010编写。  

 

一、建立方法
  1、新建一个空方案WcfHalfAuto。
  2、在空方案WcfHalfAuto中建立三个项目,如下表。

项目名称

类型

用途

WcfHalfService

Wcf Service Library

用于建立WCF服务

HalfServiceHost

Console Application

运行WCF 服务的平台。即WCF 服务的宿主

UserClient

Console Application

客户端。用于调用WCF

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


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

 

  根据“WCF程序的基本架构图”,可以看出服务主要有地址、契约、绑定三部分组成。在建立WCF Service Application项目时,系统已帮我们建好了契约、服务类型。
  注:WcfHalfService项目有个应用程序配置文件App.Config。此配置文件是宿主的配置模板。此项目中用不到此文件,可以删除。

  2.1、编写契约

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

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

 

  2.2、编写服务类型
    服务类型是契约实现。修改WcfHalfService项目中的HalfService,变成下边代码。

 

namespace WcfHalfService
{
    
/*
     服务类型
     
*/
    
public class HalfService : IHalfService
    {
        
public string GetData()
        {
            
return "Hello,Wcf半自动服务建立成功,并调用成功!";
        }
    }
}

 

  这样基本服务已建好。

 

三、编写运行服务,即编写宿主
   服务编写好后要让其运行。前一篇文章“WCF快速入门——全自动方式编写WCF入门程序”中我们使用IIS作为WCF的宿主,在这里我们自己建立运行服务的程序。

  建立WCF宿主方法
     3.1、添加引用。
      在“HalfServiceHost”项目中需要添加两个引用,一是WCF必须引用的类System.ServiceModel。二是WCF的服务WcfHalfService。如下图。

 

 

  

     3.2、添加配置文件
      在HalfServiceHost项目中添加一个应用程序配置文件(Application Configuration file)。使用置认的名称App.Config。如下图中。

 
     3.3、配置App.Config文件
      WCF的配置可以通过微软件的WCF配置工具进行配置。此工具通“Tools”->“WCF Service Configuration Editer”打开。如下图。  

 

 
     我们在编写“HalfServiceHost”项目时,只编写了“服务类型”和“契约”。参照“WCF快速入门——WCF介绍”中的“WCF程序的基本架构”图。我们会发现。服务中还有“地址”、“绑定”及“行为”没有定义。这时我们需要在此配置文件中定义。如下图。 

 
     最终App.Config文件内容为如下。

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  
<system.serviceModel>
    
<services>
      
<service name="WcfHalfService.HalfService" behaviorConfiguration="HalfServiceBehavior">
        
<host>
          
<baseAddresses>
            
<add baseAddress="http://localhost:8001/HalfServices/" />
          
</baseAddresses>
        
</host>
        
<endpoint address="HalfService" binding="basicHttpBinding"
         contract
="WcfHalfService.IHalfService"  />
      
</service>
    
</services>
    
<behaviors>
      
<serviceBehaviors>
        
<behavior name="HalfServiceBehavior">
          
<serviceMetadata httpGetEnabled="true" />
        
</behavior>
      
</serviceBehaviors>
    
</behaviors>
  
</system.serviceModel>
</configuration>

 

  上边配置文件说明请看“WCF 宿主配置文件app.config 的简单配置 说明”。
  
    3.4、编写宿主
     打开“HalfServiceHost”项目中的Program.cs,并编写下边代码,这样,启动和关闭服务的代码就编写好了。

using System.ServiceModel;

namespace HalfServiceHost
{
    
class Program
    {
        
static void Main(string[] args)
        {
            
using (ServiceHost host=new ServiceHost(typeof(WcfHalfService.HalfService)))
            {
                host.Open();
                Console.WriteLine(
"WCF半自动方法服务已启动,按任意键退出!");
                Console.ReadKey();
                host.Close();
            }
        }
    }
}

 


   3.5、测试宿主程序
    将“HalfServiceHost”项目设为启动项目。运行程序。结果如下图。
 

 

    我们在浏览器中输入“http://localhost:8001/HalfServices/”测试服务是否正常。正常结果如下图。

 
四、编写客户端

 

  4.1、添加服务引用
    进入HalfServiceHost的根目录下,在“\bin\Debug”目录,运行“HalfServiceHost.exe”,将WCF服务启动起来。

    在“UserClient”项目上右键->“添加服务引用(Add Service Reference)”。在地址中输入刚刚配置的WCF服务的路径 “http://localhost:8001/HalfServices/”。点“Go”,运行正常会出现下图。在Namespace中输入此服务在客户端的命名空间“WcfHalfServices”。 

    引用完成后关闭刚刚打开的服务。

 

 

4.2、编写客户端代码
    服务编写好后,客户就可以调用了。在Program.cs中调用服务,代码如下。

 

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

 

  4.3、运行程序
   先启动“WcfServiceHost”,后运行“UserClient”,出现结果如下图。
   注:启动“WcfServiceHost”可以在WcfServiceHost项目的Debug文件夹中启动。也可以设置方案的启动顺序,启动这两个项目。  

 

 

 


  这样“半自动方式编写WCF入门程序”就完成了。编写完此程序后,对WCF基本上有了个轮廓。

 

  源码下载:WcfHalfAuto.rar