本文的主要结构为:1)WCF的概述2)WCF体系架构 3)实现代码分析及运行结果4)源码下载5)下一篇计划6)参考说明
(1)WCF的概述(What)
1.1.WCF全称Windows Communication Foundation,是Microsoft为构建面向服务的应用提供的分布式通信编程框架,是.NET Framework 3.5的重要组成部分。
使用该框架,开发人员可以构建跨平台、安全、可靠和支持事务处理的企业级互联应用解决方案。
根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。
它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。
WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0 和MSMQ消息队列。
以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service, COM+作为宿主(Host)。
WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML , Kerberos,X509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙。
1.2.WCF的大部分功能都包含在一个单独的程序集System.ServiceModel.dll中,命名空间为System.ServiceModel。
1.3.WCF是微软对一系列产业标准定义的实现,包括服务交互、类型转换、封送(Marshaling)以及各种协议的管理。正因为如此,WCF才能够提供服务之间的互操作性。WCF还为开发者提供了大多数应用程序都需要的基础功能模块,提高了开发者的效率。
(2)WCF的体系架构
2.1.WCF提供了对可靠性、事务性、并发管理、安全性以及实例激活等技术的有力支持,它们均依赖于基于拦截机制的WCF体系架构(WCF Architecture)。
(3)实现代码分析及运行结果
3.1契约(Contract)
定义实现的代码包括服务契约IWCFService、操作契约OperationContract、和数据契约DataContract。具体代码实现如下:
using System; using System.ServiceModel; namespace WCFService { //服务契约 [ServiceContract] public interface ISimpleCalculator { //操作契约 [OperationContract] int add(int arg1, int arg2); //操作契约 [OperationContract] int subtration(int arg1, int arg2); } //实现接口定义方法 public class MyCalculator : ISimpleCalculator { //实现加法 public int add(int arg1, int arg2) { return arg1 + arg2; } //实现减法 public int subtration(int arg1, int arg2) { return arg1 - arg2; } } }
3.2宿主(托管进程)
WCFHost宿主进程托管服务WCFService,项目类型也为控制台应用程序(你也可以创建其他的项目类型)。这里要添加对WCFService类库的引用。托管采用反射方式动态创建服务的实例。具体
代码如下:
using System; using System.ServiceModel; namespace WCFHost { class Program { static void Main(string[] args) { ServiceHost host = new ServiceHost(typeof(WCFService.MyCalculator), new Uri("http://localhost:1888/")); //判断是否打开连接,如果尚未打开,就打开侦听端口 if (host.State != CommunicationState.Opening) { host.Open(); } Console.WriteLine("host is running ,the state is {0}", host.State); //For debug Console.WriteLine("press ENTER to shut down service."); Console.ReadKey(); //Close Service host.Close(); } } }
3.3客户端及运行结果
客户端要添加对以上服务的引用.
(4)源码下载
http://download.csdn.net/source/2983012
(5)下一篇计划
下一篇主要介绍服务契约的相关知识。
(6)参考说明:
1.《programming in WCF》
2.http://www.cnblogs.com/frank_xl/archive/2009/03/16/1411751.html