我有一個面向服務的體系結構。客戶端擁有綁定到前端的父級和子級dtos列表。爲此的服務是一個返回所有內容的完整列表。當從列表中刪除dto時要發送什麼
刪除當是它更好地:
一個。在服務刪除方法成功時從前端列表中刪除對象(返回成功或失敗的布爾值)
b。再次返回對象的完整列表
c。返回受影響的父母和子女
d。其他建議
在此先感謝
我有一個面向服務的體系結構。客戶端擁有綁定到前端的父級和子級dtos列表。爲此的服務是一個返回所有內容的完整列表。當從列表中刪除dto時要發送什麼
刪除當是它更好地:
一個。在服務刪除方法成功時從前端列表中刪除對象(返回成功或失敗的布爾值)
b。再次返回對象的完整列表
c。返回受影響的父母和子女
d。其他建議
在此先感謝
它實際上取決於商業案例。
當兩個用戶正在使用該系統。兩者都添加和刪除列表中的項目。
當用戶A刪除項目時,是否希望他看到用戶B的棋子,還是需要用戶A按下刷新以查看這些更改?
詢問用戶他們希望如何工作,然後選擇通過網絡傳輸的數據量最少的方法。
有一個真正面向服務架構,服務應該是異步的,所以他們不應該在所有返回任何結果。
對於刪除操作,這個實現起來非常簡單:只需開火併忘記。
Udi Dahan's blog是瞭解真正的服務導向的好地方。
如果你想留在你的問題暗示的RPC消息交換模式,我仍然會說該方法應該返回void。如果您從同步HTTP POST得到一個空的答案,它意味着成功 - 否則,您將得到一個SOAP錯誤或其他錯誤結果。
感謝您的博客看起來不錯的答案必須將其添加到我的閱讀列表。 – Burt 2010-01-12 23:04:46
我會選擇A.如果你的服務可以依靠正確地指出刪除成功或失敗,那麼爲什麼還要重新加載所有的對象呢?除非你也想立即顯示其他用戶的刪除,在這種情況下,B將是更好的選擇。您也可以選擇通過定期輪詢/通知方法來顯示其他用戶的刪除,這與刪除操作是分開的。這真的取決於您的應用程序的要求。
它不僅取決於this answer所示的業務案例,還取決於您在代碼設計中的風險承受水平。客戶端與服務之間的緊密耦合可能會使代碼更難以隨着應用程序的增長而變化,並且複雜性也會增加。相反,清晰的職責分離和鬆耦合通常會提高可維護性和整體項目敏捷性。
在這種情況下,這可能意味着服務不知道客戶端的存在以及它的實現,因此可以排除直接操作客戶端列表的服務。如果此服務是作爲類庫實現的,那麼我會推薦一種發佈者/訂閱者方法,其中該服務公開包含相關刪除信息的類型的C#事件,並且客戶端處理該事件並相應地更新它的列表。
如果這是一個Web(單向)服務,我希望刪除服務調用與GetAll服務調用是分開的。客戶端將使用這些調用的組合手動管理它的列表。
「面向服務的體系結構」是否意味着您擁有通過穩定的接口/合同暴露的邏輯的自治體?或者你的意思是你有一個客戶/服務器架構? – 2010-01-12 22:10:37
我的意思是兩者。該服務允許我的客戶端與服務器通話,但服務後面有一個域可以讓其他應用程序在某個階段掛鉤。 – Burt 2010-01-12 23:06:39