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,变成下边代码。
{
/*
契约
*/
[ServiceContract]
public interface IHalfService
{
[OperationContract]
string GetData();
}
}
2.2、编写服务类型
服务类型是契约实现。修改WcfHalfService项目中的HalfService,变成下边代码。
{
/*
服务类型
*/
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。如下图中。
WCF的配置可以通过微软件的WCF配置工具进行配置。此工具通“Tools”->“WCF Service Configuration Editer”打开。如下图。
我们在编写“HalfServiceHost”项目时,只编写了“服务类型”和“契约”。参照“WCF快速入门——WCF介绍”中的“WCF程序的基本架构”图。我们会发现。服务中还有“地址”、“绑定”及“行为”没有定义。这时我们需要在此配置文件中定义。如下图。
最终App.Config文件内容为如下。
<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,并编写下边代码,这样,启动和关闭服务的代码就编写好了。
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中调用服务,代码如下。
{
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