日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

使用NoSQL实现实体服务–第2部分:合同优先

發(fā)布時間:2023/12/3 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用NoSQL实现实体服务–第2部分:合同优先 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
現(xiàn)在該開始使用NoSQL項(xiàng)目對SOA實(shí)體服務(wù)進(jìn)行編碼了,并且正如我所承諾的,我將從Web服務(wù)的合同開始。 看一下本系列的第1部分 。

這種從Web服務(wù)合同定義開始的技術(shù)是面向服務(wù)的體系結(jié)構(gòu)實(shí)現(xiàn)的“合同優(yōu)先”方法的核心,并具有許多技術(shù)優(yōu)勢,包括……

  • 正邏輯對合同的耦合(因?yàn)閷?shí)現(xiàn)代碼遵循合同)。
  • 消費(fèi)者對合同的正耦合(因?yàn)橄M(fèi)者與合同耦合)。
  • 避免合同與實(shí)施的耦合(在實(shí)施影響合同的情況下)。
  • 避免合同與技術(shù)之間的耦合(消費(fèi)者變得依賴于實(shí)施技術(shù))。

我不想繼續(xù)進(jìn)行合同優(yōu)先的SOA,但這確實(shí)很重要。 實(shí)際上,這是某些Web服務(wù)框架(例如受人尊敬的Spring Web Services)所允許的唯一方法。 這里將詳細(xì)解釋Springsource僅支持合同優(yōu)先方法的原因。

我服務(wù)的商業(yè)案例。

我決定實(shí)現(xiàn)一個用于管理“產(chǎn)品”實(shí)體的Web服務(wù),我將其稱為“ 產(chǎn)品實(shí)體服務(wù) ”。 產(chǎn)品信息管理 (簡稱PIM)是一種非常常見的業(yè)務(wù)活動,因此,我的實(shí)體服務(wù)應(yīng)具有很大的重用潛力。 我個人知道這是正確的,因?yàn)槲乙郧坝辛闶酆蛧牢锪鞣矫娴慕?jīng)驗(yàn),但是如果我想證明這種情況,我通常會分析業(yè)務(wù)流程并尋找所有有利于產(chǎn)品信息的地方。 如果這樣做,我可能會發(fā)現(xiàn)以下業(yè)務(wù)流程將成為產(chǎn)品實(shí)體服務(wù)的潛在消費(fèi)者(例如,在傳統(tǒng)零售環(huán)境中)…

  • 購買,產(chǎn)品購買和入職
  • 銷售訂單捕獲
  • 銷售訂單履行
  • 客戶服務(wù)
  • 目錄制作
  • 業(yè)務(wù)2-業(yè)務(wù)支持
  • 等等等

我的產(chǎn)品實(shí)體服務(wù)的運(yùn)營。

因?yàn)槲乙獎?chuàng)建的服務(wù)純粹是管理產(chǎn)品實(shí)體,所以我將使操作保持基本狀態(tài)。 我的服務(wù)將為消費(fèi)者提供創(chuàng)建,讀取,更新,刪除和查找操作。 該服務(wù)將是具有WS-I互操作性證書的基于SOAP的Web服務(wù),以幫助確保跨平臺與眾多消費(fèi)者的兼容性。 稍后,我可能還會提供同一服務(wù)的REST版本(通常稱為并發(fā)合同模式)。

然后,我的服務(wù)使用者(可能是其他服務(wù)或流程)可以隨心所欲地使用這些產(chǎn)品實(shí)體,例如,通過提供更多與業(yè)務(wù)相關(guān)的功能來支持產(chǎn)品工作流程,例如“批準(zhǔn)”或“中止”。

我的服務(wù)合同將使用Web服務(wù)描述語言( WSDL )進(jìn)行描述。 我傾向于手工制作這些文件,然后根據(jù)WS-I基本概要文件進(jìn)行檢查,以確保已創(chuàng)建可互操作的合同。 WSDL并不是特別友好的文件,但是我認(rèn)為任何優(yōu)秀的SOA架構(gòu)師都應(yīng)該能夠編寫一個。

產(chǎn)品實(shí)體的數(shù)據(jù)模型。

產(chǎn)品數(shù)據(jù)實(shí)體應(yīng)該能夠描述對企業(yè)有價值的現(xiàn)實(shí)生活中的產(chǎn)品。 每個企業(yè)對于此數(shù)據(jù)項(xiàng)應(yīng)包含的內(nèi)容都有自己的想法,因此,為了使其簡單起見,我將定義一些基本字段,例如id,名稱,描述,制造商,類別和大小 。 我還將添加一些內(nèi)部管理字段,例如版本,創(chuàng)建/更新/刪除的日期等。最好將這些數(shù)據(jù)視為“文檔”,因?yàn)镾OA和NoSQL肯定會從以文檔為中心的視圖中受益。世界。

產(chǎn)品文檔將使用XML Schema(即XSD )進(jìn)行描述。 我也傾向于手工完成這些工作,并且在結(jié)構(gòu)中使用了很多模塊化來幫助支持模式集中化模式,該模式促進(jìn)了SOA中使用的數(shù)據(jù)模型之間的重用和互操作性。 這種技術(shù)通常稱為創(chuàng)建“規(guī)范數(shù)據(jù)模型”,該模型描述一個中央模型中的所有業(yè)務(wù)實(shí)體。

創(chuàng)建Java服務(wù)。

既然服務(wù)合同已經(jīng)完成,我準(zhǔn)備創(chuàng)建我的maven項(xiàng)目并開始實(shí)施服務(wù)。 為此,我使用最新的Netbeans IDE,因?yàn)樗哂杏糜趩覯aven項(xiàng)目和導(dǎo)入WSDL進(jìn)行實(shí)施的出色向?qū)А?Maven幫助代碼編譯,打包,部署和測試以及管理依賴關(guān)系并為我的服務(wù)執(zhí)行代碼生成。 這兩個工具都是免費(fèi)的。

WSDL導(dǎo)入過程將創(chuàng)建一個Java接口,該接口代表并反映服務(wù)的合同。 它還創(chuàng)建了一組Java對象,這些對象表示服務(wù)用作消息的XML結(jié)構(gòu)。 這些對象由導(dǎo)入例程使用JAXB批注進(jìn)行批注。 JAXB提供將XML文本“編組和解組”到Java對象中的功能。 作為JAX-WS Web服務(wù)框架的一部分,這種情況在后臺不可見地發(fā)生。

我現(xiàn)在要做的就是在服務(wù)上創(chuàng)建方法的實(shí)現(xiàn)。 首先,我只是添加一些基本的樣板代碼以使某些功能正常工作。 完成此操作后,我將服務(wù)部署到服務(wù)器上,并進(jìn)行一些基本的集成測試,以檢查它們是否全部懸掛在一起,以及服務(wù)端點(diǎn)是否按預(yù)期公開。 我為此使用的服務(wù)器是Oracle的Glassfish 3.1 ,它可以集成到Netbeans中,并且也是免費(fèi)的。

初始服務(wù)集成測試

我將SOAP UI用于我的服務(wù)測試,因?yàn)樗敲赓M(fèi)的并且非常強(qiáng)大。 它幾乎可以用作幾乎所有SOAP或REST服務(wù)的測試工具,并且使用這樣的測試工具將使我不必構(gòu)建工作的服務(wù)客戶端,而這可能是非常耗時的。

我應(yīng)該提到,可以使用SOAP-UI以完全測試驅(qū)動的方式完成服務(wù)開發(fā),但是從一開始就部署基本服務(wù)(即使它不起作用)也很容易,只是為了從中獲取它的WSDL。是使用“ http:// service?wsdl”約定的端點(diǎn),并檢查是否已正確部署和集成所有內(nèi)容。 如果我不這樣做,那么我就可以開始使用WSDL,但是端點(diǎn)位置將無法工作,因此測試失敗的原因不是邏輯不好,而是因?yàn)槠毡槿狈Ψ?wù)可用性。

現(xiàn)在,我可以創(chuàng)建基本測試,以在Glassfish本地托管的服務(wù)實(shí)現(xiàn)和SOAP-UI測試客戶端之間成功地向后和向前傳遞產(chǎn)品消息,即使這些消息不執(zhí)行任何操作并且其中包含的產(chǎn)品不執(zhí)行任何操作堅(jiān)持下去。

下一步是開始CouchDB集成,以便可以保留和從NoSQL數(shù)據(jù)庫檢索產(chǎn)品消息。 然后,在服務(wù)和CouchDB DAO之間,我將添加使它全部表現(xiàn)正常所需的任何業(yè)務(wù)邏輯。

當(dāng)我啟動CouchDB DAO時,立即訂閱以獲得警報。 如果您錯過了本日記系列的第1部分,則可以在這里趕上 。

到目前為止的費(fèi)用:

  • 軟件–£0。
  • 時間– 2到8個小時(取決于經(jīng)驗(yàn))。
繼續(xù)第3部分 。

參考: 使用NoSQL實(shí)施實(shí)體服務(wù)–第2部分:我們的JCG合作伙伴 Ben Wilcock在SOA,BPM,Agile和Java博客上的合同優(yōu)先 。


翻譯自: https://www.javacodegeeks.com/2012/09/implementing-entity-services-using_8619.html

總結(jié)

以上是生活随笔為你收集整理的使用NoSQL实现实体服务–第2部分:合同优先的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。