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

  • Dilip Krishnan
  • 王波

2009 年 7 月 12 日

话题:SOA.NET语言 & 开发架构

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?

SOA.NET语言 & 开发架构