Chinaunix首页 | 论坛 | 博客
  • 博客访问: 46448
  • 博文数量: 11
  • 博客积分: 640
  • 博客等级: 上士
  • 技术积分: 175
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-27 23:19
文章分类
文章存档

2011年(1)

2008年(10)

我的朋友

分类:

2008-11-20 17:24:37

WCF之初识

                                                           ----杨植群

自从华工微软俱乐部的SIG选秀大赛后,懵懂的我兴致勃勃地加入了WCF特别兴趣小组,其实在选秀大赛中,也没能知道WCF到底是什么,它可以做什么。之后由于对构建WCF面向服务的应用程序系列课程和MSDN Library的学习,终于也对WCF有个大概的了解。虽然不是说有什么深入的体会,但至少自己也对正要学习的东西有初步了解,在此写写对WCF的一些理解:

1.WCF

Windows通信基础(Windows Communication FoundationWCF)是基于Windows平台下开发和部署服务的软件开发包(Software Development KitSDK)。WCF为服务提供了运行时环境(Runtime Environment),使得开发者能够将CLR类型公开为服务,又能够以CLR类型的方式使用服务。理论上讲,创建服务并不一定需要WCF,但实际上,使用WCF却可以使得创建服务的任务事半功倍。

2.契约

WCF的所有服务都会公开为契约(Contract)。契约与平台无关,是描述服务功能的标准方式。WCF定义了四种类型的契约:

A服务契约(Service Contract

服务契约定义了向外部暴露的行为,它既可以应用于接口也可以应用于具体的类。但是考虑到某些类可能会实现多个接口如果定义在Class上,就只能实现一种契约,此外Class是易变的,而Interface是相对稳定的,所以最好把服务契约定义在Interface上。如果标记了ServiceContractAttribute那么在内部域中必须包含或者说是至少包含一个操作契约(OperateContractAttribute)标记。

在服务契约中,通过指定Name属性可以改变在客户端使用的类型名称。

在方法签名中使用MesageParameterAttribute,例如:

void SaveLinkItem([MessageParameter(Name = “EasyFlowLinkItem”)] LinkItem item)

使用这种标记后,在客户端通过代理调用时方法的参数将是EasyFlowLinkItem而不是item. 尤其在多个系统交互时,可能方法的参数名称不同,通过这个属性完成SOAP消息中方法参数的映射,在从客户端发送到服务端后,WCF将完成这个名称的映射。

标记为服务契约的接口或类是不具备一些OO特性的,例如继承性和多态。

B数据契约(Data Contract

数据契约定义了与服务交互的数据类型。WCF为内建类型如intstring隐式地定义了契约;我们也可以非常便捷地将定制类型定义为数据契约。

C错误契约(Fault Contract

错误契约定义了服务抛出的错误,以及服务处理错误和传递错误到客户端的方式。

D消息契约(Message Contract

消息契约允许服务直接与消息交互。消息契约可以是类型化的,也可以是非类型化的。如果系统要求互操作性,或者遵循已有消息格式,那么消息契约会非常有用。

虽然和别人比起来不多,也可以说很少,但这确实是我自己学习的。第一次写文章,写得不好,敬请见谅,以后会更好,

      因为有大家,所以有了这个WCF小组。大家既要赶路,也要留意路边的风景!

       

阅读(846) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~