2014-01-22 40 views
0

我有以下問題使用asp.net進行rebus的最佳做法?

[1]。有一個管理系統需要最頻繁的CRUD操作。 例如INT GetUserLimit(),列表GetUserList(),INT AddNewUser函數(用戶的用戶),布爾DeleteUser(),IsAuthenticated(用戶名字符串,字符串passwrd)

對於上面列出的功能,該web應用程序可能要等待爲了一些回報。

在這種情況下,是直接爲Web應用程序提供Web服務還是我們不公開這些Web服務,而是通過請求/回覆模式與EBS進行通信?

溶液1:

http://i.stack.imgur.com/cIRUR.png

溶液2:

如果web應用程序 「發送」 到一個組分A的命令,則組分A回覆消息到被稱爲 「webmsgqueue」 某一個隊列或者將消息推送到nosql服務器。 Web應用程序使用ajax輪詢方法來檢查「webmsgqueue」或nosql服務器中的消息。

http://i.stack.imgur.com/F7qTs.png

[2]如果數據我們查詢或上傳大,豈不是更好的選擇web服務?

回答

0

如果我正確理解你的問題,你問是否可以使用服務總線實現一個CRUD API,可能需要傳輸大量的數據,並且包括確定某個用戶憑證可以被認證。

我不認爲我會這麼做 - 這聽起來像你最好使用同步 API,它擅長傳輸數據(「同步」,所有操作都有1 :1請求/響應相關性,即使您的客戶端庫可能仍然具有進行同步呼叫的異步方式 - 它甚至可以提供執行高效的能力)。

另一個問題是,你是否真的更好地完全放棄了遠程處理,爲Web應用程序提供了直接對數據庫執行CRUD操作的能力。您仍然可以通過將您的實現隱藏在接口後面來解耦您的應用程序。

如果你擔心暫時脫鉤,我說你失去的時間已經脫鉤,當你決定揭露與void不同的返回類型的API;)

這是否有意義?

+0

對不起,因爲我試圖讓你清楚這一點,所以我更新我的問題。從您的回覆中,最好爲這些CRUD操作公開Web服務,因爲大多數用例可能希望Web應用程序等待一些回報。 – markchenwd

+0

我今天聽到一個詞--'CQRS',你可以跟rebus談談嗎? – markchenwd

+0

好吧,CQRS是一個很大的主題 - 我建議你谷歌它,並閱讀什麼,例如Udi Dahan,Greg Young和Rinad Abdullin談到這一點 - 有完成CQRS的不同方法,例如,您可能會/可能不會以異步方式(即「最終一致」)的方式進行操作,您可能會/可能不會使用事件採購等。 – mookid8000