[英]Separation of SOA services
我希望編寫一些Web服務。
什么定義了一個“服務”單元。 我注意到,作為一個項目的一部分,您可以有多個.svc服務文件。
您通常如何細分服務? 例如,銀行應用程序:
您是否需要一項服務(.svc)?
有沒有將實體分組的方法? 例如,代替接收轉賬服務,您可以在帳戶服務中放入發送和接收資金,因為您可以接收和發送帳戶。
這也帶來了關於方法和參數的另一個問題。 如果我想添加一個編輯客戶端,通常會添加一個諸如EditClient(Client client,Client newClient)之類的方法,然后用另一個客戶端對象替換整個客戶端嗎? 還是您將添加用於編輯客戶端的單獨方法,例如:客戶端服務下的EditName(客戶端客戶端,字符串名稱)?
我想適當地列出適合我的Web服務的運營合同。
在設計Web服務時,我需要遵循一些粗略的規則,尤其是對於公開(某些定義的組之外的應用程序/用戶可能會使用這些服務)的公開服務。
希望能有所幫助。
我建議閱讀Martin Fowler的《企業體系結構模式》 。 這應該為面向服務的軟件提供許多組織策略。
我更喜歡按功能而不是結構分開服務。 該技術在Eric Evans的“ 域驅動設計”中進行了深入討論。 造成這種變化的因素之一是變化率。 功能區域傾向於以相似的速度變化。
結構性(不良):
功能性(良好):
除了GrayWizardx的出色回答,我還要再說一點。
嘗試將所有服務定義保持在功能/業務級別。 服務名稱應具有良好的高級“ ChangeDeliveryAddress”,“ QueryOrderStatus”類型名稱,並且接口定義本身應僅包含業務實體和最少數量的“技術”字段。 即接口與實現完全分離。
如果發現使用“ NextOrderLineWithinPage”之類的服務,則可能是您的設計出了點問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.