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?
评论