nosql的数据服务
这种从Web服务合同定义开始的技术是面向服务的体系结构实现的“合同优先”方法的核心,并具有许多技术优势,包括……
- 正逻辑对合同的耦合(因为实现代码遵循合同)。
- 消费者对合同的正耦合(因为消费者与合同耦合)。
- 避免合同与实施的耦合(在实施影响合同的情况下)。
- 避免了合同与技术的耦合(消费者变得依赖于实现技术)。
我不想继续进行合同优先的SOA,但这确实很重要。 实际上,这是某些Web服务框架(例如受人尊敬的Spring Web Services)所允许的唯一方法。 这里将详细解释Springsource仅支持合同优先方法的理由。
我的服务的商业案例。
我决定实现一个用于管理“产品”实体的Web服务,我将其称为“ 产品实体服务 ”。 产品信息管理 (或简称为PIM)是一种非常常见的业务活动,因此,我的实体服务应具有很大的重用潜力。 我个人知道这是正确的,因为我以前有零售和国防物流方面的经验,但是如果我想证明这种情况,我通常会分析业务流程并寻找所有有利于产品信息的地方。 如果这样做,我可能会发现以下业务流程将成为产品实体服务的潜在消费者(例如,在传统零售环境中)…
- 购买,产品购买和入职
- 销售订单捕获
- 销售订单履行
- 客户服务
- 目录制作
- 业务2-业务支持
- 等等等
我的产品实体服务的运营。
因为我创建的服务纯粹是管理产品实体的任务,所以我将使操作保持基本状态。 我的服务将为消费者提供创建,读取,更新,删除和查找操作。 该服务将是具有WS-I互操作性证书的基于SOAP的Web服务,以帮助确保跨平台与众多消费者的兼容性。 稍后,我可能还会提供同一服务的REST版本(通常称为并发合同模式)。
然后,我的服务使用者(可能是其他服务或流程)可以随心所欲地使用这些产品实体,例如,通过提供更多与业务相关的功能来支持产品工作流程,例如“批准”或“中止”。
我的服务合同将使用Web服务描述语言( WSDL )进行描述。 我倾向于手工制作这些,然后对照WS-I基本概要文件进行检查,以确保已创建可互操作的合同。 WSDL并不是特别友好的文件,但是我认为任何优秀的SOA架构师都应该能够编写一个。
产品实体的数据模型。
产品数据实体应该能够描述对企业有价值的现实生活中的产品。 每个企业对于此数据项应包含的内容都有自己的想法,因此,为了使其简单起见,我将定义一些基本字段,例如id,名称,描述,制造商,类别和大小 。 我还将添加一些内部管理字段,例如版本,创建/更新/删除的日期等。最好将这些数据视为“文档”,因为SOA和NoSQL肯定会从以文档为中心的视图中受益。世界。
产品文档将使用XML Schema(即XSD )进行描述。 我也倾向于手工完成这些工作,并且在结构中使用了很多模块化来帮助支持模式集中化模式,该模式促进了SOA中使用的数据模型之间的重用性和互操作性。 这种技术通常称为创建“规范数据模型”,该模型描述一个中央模型中的所有业务实体。
创建Java服务。
既然服务合同已经完成,我准备创建我的Maven项目并开始实施服务。 为此,我使用最新的Netbeans IDE,因为它具有用于启动Maven项目和导入WSDL进行实施的出色向导。 Maven帮助代码编译,打包,部署和测试,以及管理依存关系并为我的服务执行代码生成。 这两个工具都是免费的。
WSDL导入过程将创建一个Java接口,该接口代表并反映服务的合同。 它还创建了一组Java对象,这些Java对象代表服务用作消息的XML结构。 这些对象由导入例程使用JAXB批注进行批注。 JAXB提供将XML文本“编组和解组”到Java对象中的功能。 作为JAX-WS Web服务框架的一部分,这种情况在后台不可见地发生。
我现在要做的就是在服务上创建方法的实现。 首先,我只是添加一些基本的样板代码以使某些功能正常工作。 完成之后,我将服务部署到服务器上,并进行一些基本的集成测试,以检查它们是否全部挂在一起,以及服务端点是否按预期公开。 我为此使用的服务器是Oracle的Glassfish 3.1 ,它可以集成到Netbeans中,并且也是免费的。
初始服务集成测试
我使用SOAP UI进行服务测试,因为它是免费的并且非常强大。 它几乎可以用作几乎所有SOAP或REST服务的测试工具,并且使用这样的测试工具将使我不必构建工作的服务客户端,而这很耗时。
我应该提到,可以使用SOAP-UI以完全测试驱动的方式完成服务开发,但是从一开始就部署基本服务(即使它不起作用)也比较容易,只是为了从中获取它的WSDL。它是使用“ http:// service?wsdl”约定的端点,并检查是否已正确部署和集成所有内容。 如果我不这样做,那么我就可以开始使用WSDL,但是端点位置将无法工作,因此测试失败的原因不是逻辑不好,而是因为普遍缺乏服务可用性。
现在,我可以创建基本测试,以在Glassfish本地托管的服务实现和SOAP-UI测试客户端之间成功地向后和向前传递产品消息,即使这些消息不执行任何操作并且其中包含的产品不执行任何操作坚持下去。
下一步是开始CouchDB集成,以便可以持久保存产品消息并从NoSQL数据库中检索该消息。 然后,在服务和CouchDB DAO之间,我将添加使它全部表现正常所需的任何业务逻辑。
立即订阅以在启动CouchDB DAO时收到警报。 如果您错过了本日记系列的第1部分,则可以在这里赶上 。
到目前为止的费用:
- 软件–£0。
- 时间-2到8个小时(取决于经验)。
参考: 使用NoSQL实施实体服务–第2部分:我们的JCG合作伙伴 Ben Wilcock在SOA,BPM,Agile和Java博客上的合同优先 。
翻译自: https://www.javacodegeeks.com/2012/09/implementing-entity-services-using_8619.html
nosql的数据服务