格式化消息的设计
现在你已经创建了样例的请求和返回消息,你需要把这些消息的设计格式化,以便Visual Studio .NET等开发工具可以理解这些设计,并且提供更加强大的开发功能,如客户代理生成。
你需要去创建一个XML架构来描绘你的请求和返回消息,从而格式化这些消息的设计。虽然你可以用很多种的工具甚至文本编辑器来生成这些XML架构文件,我还是建议你使用Visual Studio的XML架构编辑器。
使用XML架构编辑器,启动Visual Studio并且选择菜单: 新建 | 文件 | XML架构。设计器有一个专门的工具箱面板,里面包含有XML架构的组件,例如元素声明和类型定义等,想声明WeatherRequest一类的元素,只需要把元素(Element)图标从工具箱中拖到设计界面上就可以了。每个元素都包含有两个必须设置的主要属性:元素的名称和数据类型,当你设置元素的数据类型时,你可以从XSD内置的类型中选择,也可以自定义类型。例如,WeatherRequest就是内置的字符串类型(WeatherRequest 元素包含字符串),而CurrentWeather则是包含有其他元素的自定义类型。
对类型进行定义,然后再声明这些类型的具体元素,这和你在编程时所作的工作非常类似:先定义类(例如CurrentWeather类),然后就成为你工程里的一个新的类型。随后你就可以对这些类声明变量了,就像示例1中的cw变量。
XML架构设计器使声明新的类型变得容易,通过在CurrentWeather元素的界面内增添行的方式就可以定义新的 CurrentWeather类型。就如示例3展示的那样,CurrentWeather元素包含有未命名的类型,这个类型包含有Conditions, IconUrl,Humidity,Barometer,FahrenheitTemperature和CelsiusTemperature元素。

示例3:Visual Studio XML架构设计器
到此为止就还有最后一步来完成消息的设计,你要为XML架构设置targetNamespace属性,来唯一的标识你的Web服务或应用程序,就像在示例3种属性窗口中的设置一样。这是一个良好的习惯,但它不是必须的,以致于很多开发者都忽略了这重要的一步。
如过你需要对XML架构进行深入的工作,你可以通过点击示例3中底部的XML附签,来切换到XML视图。它展现了整个XML架构的源文件,你可以根据需要对它进行深入的编辑,就像示例4那样。
示例4:消息架构
完成界面的定义
示例4中的XML架构充分描述了请求和返回消息的数据定义,但消息还有很多其他方面的信息需要被用一种正式的,机器可读的方式所描述出来。例如消息是否使用了 SOAP远程调用?消息是怎样被编码的?为了提供这些方面的信息,你可以创建Web服务描述语言(WSDL)文件。现在Visual Studio .NET里还没有内置的WSDL设计器,不过有第三方的产品可以提供图形用户界面的WSDL设计器,而且WSDL是符合XML语法的,你可以用任何的 XML或者是文本编辑器来创建WSDL文件。由于需要提供大量的特性,所以WSDL语法会有一些复杂,但实际上你只会用到其中很小的一部份,你最好建立一个WSDL模板文件(类似示例5中的那样),然后在其基础上修改,来满足你的需要。
示例6展示了为天气服务定制的WSDL模板文件,我修改了请求与返回消息中的部分信息,指向在ServiceMessages架构中设计的 WeatherRequest和CurrentWeather元素,还把操作命名为GetWeather,把绑定命名为 WeatherInterface。这些命名都会在你的代码中分别作为Web方法名称和绑定名称,所以尽量使名称有良好含义。
到此为止就完成了设计的工作,你现在准备好了Web服务界面的正式设计,包括每个请求和返回消息中的应用程序数据的定义。接下来服务的开发者就应该开始实现这些接口的功能,客户端的开发者也要进行相应的编程了。清注意,客户端的开发者不需要等到服务开发完成后才能开始开发工作,这意味着你可以通过让两种开发同时进行来节省时间。
