HI WCF(1)

 

最近在读Juval LowyProgramming WCF Services。读英文,一知半解,边看边做点笔记吧。

Windows Communication Foundation (WCF).NET 3.0的一部分。对.NET 3.0的介绍有一个简单的公式:.NET 3.0=.NET 2.0+WCF+WPF+WCS+WF。所以,在.NET2.0中写的程序,在.NET3.0中是可以直接运行的,不像.NET1.1迁移到.NET2.0会有额外的工作要做。

先简单说说WCFWPFWCSWF这几个概念。

WCFWCF3个关键的设计理念是,互操作性、生产力、面向服务的开发。WCF结合并扩展了现有的微软分布式系统技术,诸如Enterprise ServicesSystem.Messaging.Net RemotingASMXWeb Services Extensions(WSE)等等。同时,通过支持大量WS-*标准,WCF也提供了合非微软技术应用程序的互操作性。

WFWorkflow Foundation):提供了企业级工作流开发框架和引擎。

WPF(Windows Presentation Foundation):也就是微软宣传的silverlight,利用XAML开发丰富的下一代界面。

WCS(Windows Cardspaces):是身份标识的数字化实现,WCS为不同身份标识管理技术的实现提供了一个总体框架。

大话说了一堆,开始读书吧:

第一章是WCF Essentials。看了5Section了。

11什么是WCF,大可不看,帽子~

12 服务(Services)。WCF的核心就是服务。什么是服务,我在HI SOA中也引了一堆大话,基本就是那个意思。面向过程——面向对象——面向组件,走到现在,就是——面向服务。基于面向服务构建应用时,就是调用一个个的服务,像搭积木一样(很理想化吧!~)。在WCF中使用Services时,约定是用代理方式调用。不管是在同一台机子上、还是局域网内、跨网络构建应用,调用Services时都要通过proxy。这样一来,在利用WCF时,就形成了一种统一的编程模型。

1.3 地址(Addresses)。调用服务,要通过地址实现。WCF中,Addresses的格式是这样的:

[base address]/[optional URI],其中base address又是这样的:[transport]://[machine or domain][:optional port]。因为WCF是支持多种协议的,所以[transport]部分就是指明所用协议的。来一组例子:

http://localhost:8001/MyService

net.tcp://localhost:8002/MyService

net.pipe://localhost/MyPipe

net.msmq://localhost/private/MyService

net.p2p://localhost/private/MyService

分别是基于HttpTCPIPC(Inter-Process Communication over named pipes)MSMQPeer network协议的地址。

其中,在TCPHttp协议的地址中,如果不显示指定断口号,则分别会使用默认的80880端口。

1.4契约(Contracts)。在使用WCF时,一定要有公开的Contracts。通过contract告诉服务使用者服务是干什么的。WCFContract包括4类:Service contractsData contractsFault contractsMessage contracts。分别对服务内容、数据类型、错误抛出处理机制、消息进行约定。其中,Message contracts时不推荐使用的。这一节,重点介绍了Service Contract。具体又包括:[ServiceContract][OperationContract]两部分。用法,同.net web services中指定某某方法为[WebMethod]一样。值得注意的是,在使用WCF时,指定服务契约推荐用接口的方式实现,不推荐直接在服务类上用[ServiceContract] attribute。为了更好的组织contracts,WCF中也提供了namespaces

1.5宿主(Hosting)WCF服务的宿主可以是IISSelf-HostingWAS Hosting

各种宿主的特点是:

IIS:利用了IIS来管理宿主进程(host process)的生命周期。优点是可以在客户端第一次调用服务是自动启动宿主进程。主要缺点是只能支持Http协议,特别是在IIS5中很难实现多个服务共用一个端口的应用。

Self-Hosting:开发人员自己提供宿主进程的生命周期管理。这就要求在客户端调用服务之前进程已经是开启的。在Main()中启动进程,例子:

public static void Main ( ){

   ServiceHost host = new ServiceHost(typeof(MyService));

   host.Open( );

   Application.Run(new MyForm( ));

   host.Close( );

}

利用Self-Hosting具有可实现in-proc(服务嵌入客户端应用)、客户应用环境不确定、简单编程实现等优点。

WASWindows Activation Service (WAS)vista中的系统服务,是IIS7的一部分,但是它可以单独安装。在WAS上构建WCF的优点是:解决IIS上只能支持Http协议的问题,同时相对self-hosting的方式而言,有应用池、垃圾回收、空闲时管理、身份认证管理、隔离等方面的优势。

 

今天就这么些

你可能感兴趣的:(HI WCF(1))