2011-03-22 86 views
1

我有一堆C#.NET/OpenRasta Web服務,我不斷添加到。Inter-Webservice通信是否有良好的框架/模式/等?

當添加一個新服務時,通常情況下是因爲已經使用另一個Web服務的應用程序需要添加新服務......有時,只是存在明顯的協同作用在新服務和現有服務之間,這意味着我們可能想調用一個服務,然後在返回的結果上調用另一個服務。

這些服務生活在一個C#的Visual Studio項目(或好或壞,這不是我的決定做)。

我正在尋找的是一個現有的API /庫或模式或軟件(或從某人說「你知道... ... OpenRasta可以做那個開箱」)我可以用於允許我的服務以非常寬鬆和動態的方式與對方交互,然後返回結果。

例如:可以說,我的服務之一是用戶狀態/數據存儲,另一個是地理數據。 應用程序可能會將用戶從用戶服務中撤回,然後使用地理數據服務查看其IP,但這需要應用程序發出2個服務調用。

或者說我有一個庫存數據服務,它提供有關產品的詳細信息和倉庫庫存水平服務,爲我提供當前庫存和重新訂購數量等。 但是,如果我想要庫存描述和我們現在有庫存的數量,我將不得不從應用程序進行兩次調用。

什麼將是很好的,如果我能得到某種框架,我可以打電話(像)..

http://www.foo.com/user?id=8890823123&ip=county:geo|country|fromIp 

和我的用戶JSON對象會回來,它是由一個場代替IP地址稱爲「國家」,通過將IP地址作爲參數傳遞給/ geo/country/fromIp服務方法來解決該問題。 或者如果我可以叫股票的服務,如:

GET 
http://www.bar.com/product 
{"desc": "/product?id=92236262", "stock":"/stock?id=92236262"} 

,並取回一個看起來像{「desc」的一個JSON對象:「棕色皮鞋,大小9 1/2」,「股票」:「7 「}

我真的希望能夠做到這一點沒有硬編碼一個服務的知識轉化爲其他的;這樣,當添加新服務的任何現有的可以用它做一下起坐等

這是不是我需要自己的代碼或做已經存在這樣的事情?

回答

0

的OData的傢伙正在試圖做你所描述的那種URI組成。我認爲他們實際上還沒有實施。

我不認爲這是一個好主意,也沒有必要的,但是這只是我的看法。如果你想合成資源,那麼在你的體系結構中創建一個能夠明確公開這些合成資源的層。通過URI做它是一個公開的邀請耦合和性能問題。

相關問題