在业务流程中融合J2EE和.NET技术 - 编程入门网
技巧的主要目的之一,就是说明如何为消息和数据类型谨慎地设计 XML schema,以避免出现互操作性问题。
要构建 .NET Web 服务,您需要使用稍微有些不同的方法。但通常都应该首先设计 XSD schema。 假设 Supplier B 对保存它的库存产品信息有不同的需求。与 Supplier A 中列出库存产品名称不同,Supplier B 保存了产品信息清单,例如生产日期、库存日期或是重新进货日期等。 图 6.Supplier B Web 服务的接口图 在 UML 图中,Product 有 _dates 属性,该属性是 DateInfo 的集合,DateInfo 都是复杂类型。在编程语言中,UML 集合转化成为数组。但在另一个端,如何用 XML schema 或是 XSD 类型来表示 Product 和 DateInfo 之间的关系呢?此时,需要另一个复杂类型的属性 ArrayOfDateInfo 用来描述两者之间的关系。ArrayOfDateInfo 类型有 DateInfo 类型元素的未绑定序列。因此,要正确序列化 .NET Web 服务中的 Product 对象,需要在 XML Schema 中定义三种复杂类型:DateInfo、ArrayOfDateInfo 和 Product。 和先前演示的步骤类似,首先用目标命名空间 http://schema.b.supplier 创建 SupplierBSchema.xsd 并定义复杂类型 DateInfo,如清单 4 所示。 清单 4. 定义复杂类型 DateInfo
在业务流程中融合J2EE和.NET技术(6)时间:2011-03-14接下来,通过 SupplierBSchema.xsd 中 DateInfo 类型元素的未绑定序列来添加复杂类型 ArrayOfDateInfo。 在 Outline 视图中,右键单击 SupplierBSchema.xsd 并单击 Add Complex Type。 将新的复杂类型重命名为 ArrayOfDateInfo。 右键单击 ArrayOfDateInfo 并单击 Add Content Model。 右键单击 content model icon 并单击 Add element。 将新元素重新命名为: DateInfo。 设置用户定义的复杂类型:SupplierBSchema:DateInfo。 将 minOccurs 属性设置为零,并将 maxOccurs 属性设置为 unbounded。 ArrayOfDateInfo schema 的结果如 清单 5 所示。 清单 5. ArrayOfDateInfo schema
按照如定义 complexType Product 类似的步骤进行,如以下清单 6 所示。 清单 6. complexType Product
在 .NET Framework 1.1 中,XML Schema Definition 工具(Xsd.exe)可通过 XSD 文件生成运行时类。Xsd.exe 实用程序通过 XSD schema 中生成一组 C# 类模板。通过模板,您可以提供具体的实现并生成整个项目。然而,Xsd.exe 实用程序需要在 schema 中定义至少一个顶级元素,因此您需要定义一个全局元素:productItem。 在 Outline 视图中,右键单击 SupplierBSchema.xsd 并单击 Add Glob |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |