InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

使用尖括号和契约优先开发有何关联?

作者 Dilip Krishnan 译者 王波 发布于 2009年7月12日

领域
企业架构,
架构 & 设计,
语言 & 开发
主题
WSDL ,
WS-I ,
WCF ,
Web服务 ,
.NET ,
SOA ,
设计 ,
企业架构 ,
架构 ,
XSD ,
编程 ,
契约优先开发

Thinktecture公司Christian Weyer宣布正式发布一款Visual Studio外接程序 WSCF.blue,这是一款使用WCF进行Web服务的契约优先开发外接程序。

我创建这款Web服务的契约优先工具已经很长时间了......  

这个工具简称WSCF,既可用于命令行也可作为Visual Studio的外接程序使用,它主要定位于ASMX平台。

契约优先开发构思已经很久了。契约优先的需求来自于信息状态的规范表示,这些信息主要以Web服务请求的方式流动。大部分主流语言有支持WSDL和XSD的工具,以及用这些信息“契约”来描述Schema和WSDL,而这种方式作为一种可互操作的解决方案是否可靠则存在着争议

契约优先的开发方式解决对象和XML之间的阻抗失配。由于Xml Schema语言的描述格式格外丰富,所以用它对协议建模需要考虑降低序列化和互操作性之间的区别,以下列出了部分内容:

  • 无法映射特定Schema语言的构造,例如:XSD类型的扩展和约束
  • 无法映射或至少不能有效映射特定对象类型到Schema类型,例如:泛型列表和HashMaps等
  • 不能用XML有效的表示对象图形,尤其是不能用父/子关系来有效表示,父对象保留子对象的引用,而子对象也保留对父对象的引用
  • 定义语言未知的契约可提高互操作性,也让服务的设计人员遵守WS-I互操作标准
  • 促使企业间对契约定义的重复利用,例如:XSD和WSDL
  • 允许控制服务的版本并最终给监管提供借鉴

Visual Studio 2008外接程序WCSF.blue是一个开源项目,它已经发布到CodePlex站点。该工具的功能如下所示:

  • WSDL向导——开发者可从一个或者多个XSD开始逐步创建WSDL
  • DataContract生成器——类似于XSD.exe、XSDObjectGen.exe和Svcutil.exe,可生成与.NET兼容的XSD类型
  • 服务和终端存根(SVC)生成器
  • 客户代理生成器

该工具仍有若干待解决的问题,相信最终会在Beta后的产品中得到解决。该工具还包含WSCF.classic外接程序0.7版本的相关指南。要是微软WCF支持契约编码,就不需要尖括号、XSD乃至WSDL。那么,使用WSDL和XSD对信息和服务契约建模的工具还有那么重要吗?

查看英文原文:How Relevant Is Contract First Development Using Angle Brackets?

译者 王波 是匆匆IT过客,涉足于.NET编程技术,潜心研究和译书,与友人共译《C# 3.0揭秘》 。