文章:重新考虑“代码优先”的Web服务

在本文中,Dennis Sosnoski质疑了Web服务开发的至理名言——“契约优先(contract first)”,即“由WSDL开始(start-from-WSDL)”优于“由代码开始”。他展示了如何使用JiBX框架来实践“由代码开始(start-from-code)”的开发,且规避了其缺点,尤其是没有将实现和接口耦合得过于紧密。

如果你现在在使用SOAP Web服务的话,那么你有两种开发风格可选择。第一种被称为“由WSDL开始(start-from-WSDL)”,或是“契约优先(contract first)”,牵涉构建一个WSDL服务描述,并直接关联用于数据交换的XML模式。第二种被称为“由代码开始(start-from-code)”,或是“代码优先(code first)”,牵涉将例子服务代码插入你选择的框架,并由那个代码产生WSDL+模式(schema)。

“由代码开始”开发Web服务的想法被许多Web服务和SOA领域的权威人士反对。他们觉得“由代码开始”将XML消息结构绑定到了一个特定的实现,这废弃了使用WSDL和模式的整个目的。对于“由代码开始”的最初形式——SOAP编码模式(SOAP encoding scheme)——的确是这样,它被广泛使用以支持rpc/encoded。使用SOAP编码,XML模式直接由服务提供者应用数据结构产生,客户端代码使用这些产生的数据结构副本进行工作。这种数据模型和XML之间自动转换的特性使得rpc/encoded在早期的SOAP中流行——但是它也是这种风格后来被废止的一个重要原因。

但选择使用契约优先的方式就一定是正确的吗?作者提出了自己的不同见解,因为选择契约优先要求一个高层的投资,包括对WSDL和模式的学习,以及支持这些格式的工具等。而“由代码开始”虽然自身有很多毛病,但因为现代数据绑定框架允许你从实际的XML表示中隔离数据模型,从实用的角度看,开发者使用代码工作要较使用WSDL和模式工作更具生产力。

阅读全文:重新考虑“代码优先”的Web服务

你可能感兴趣的:(文章:重新考虑“代码优先”的Web服务)