目前Web Services 开发的两种模式:一种为代码优先的开发模式(Contract Last);另一种为契约优先的开发模式(Contract First)。
为它迎合了开发人员的惰性。代码驱动Web 服务构建,是通过相关工具类库(如CXF等)直接导出服务类的Web Service 调用接口,绕过编写数据契约(XSD)及SOAP 的烦
类型及请求响应消息的数据契约,然后再编写相应服务端点的业务处理逻辑。契约优先与代码优先最大的不同就是自己要编写服务的数据契约,这也是许多沉浸在
传统开发模式中的开发人员所不愿做的事。对他们来讲,这是一个“多余”的步骤,又是一个比较“难”入手的步骤。因为自己编写数据契约,必须要去学习XML 及XSD 的知识,
而且还要去学习XML 处理的知识,如OXM 等。而如果采用代码优先,这些过程都无须
代码优先的开发模式
代码优先是传统Web Services 开发世界中最常见、最容易上手的一种开发模式,也是大多数开发人员喜欢的一种开发模式。其开发过程相对比较简单,之所以简单,是因为它迎合了开发人员的惰性。代码驱动Web 服务构建,是通过相关工具类库(如CXF等)直接导出服务类的Web Service 调用接口,绕过编写数据契约(XSD)及SOAP 的烦
琐过程。
契约优先的开发模式
契约优先的开发模式,是目前Web Services 开发领域中的最佳实践,也是Spring 极力倡导的。所谓的契约优先,先要定义Web 服务的数据契约,也就是服务交互过程中的数据类型及请求响应消息的数据契约,然后再编写相应服务端点的业务处理逻辑。契约优先与代码优先最大的不同就是自己要编写服务的数据契约,这也是许多沉浸在
传统开发模式中的开发人员所不愿做的事。对他们来讲,这是一个“多余”的步骤,又是一个比较“难”入手的步骤。因为自己编写数据契约,必须要去学习XML 及XSD 的知识,
而且还要去学习XML 处理的知识,如OXM 等。而如果采用代码优先,这些过程都无须
关注了,要改变这个观念需要一个过程。之所以契约优先的开发模式在业界为被认为是一种最佳实践,是基于以下一些考量:
- 能够提供服务契约多版本;
- 真正做到跨语言、跨平台的服务;
- 提高解析WSDL 性能;
- 解决对象与XML 映射阻抗问题;
- 服务契约不受实现接口的影响,实现了服务契约与实现接口的松耦合;
- 能够快速响应业务多变引发服务契约的变化。