2010-07-14 73 views
0

這是情況。嘗試確定NHibernate或其他任何東西是否適用於訪問Web服務

我們有一個第三方中間件(使用SQLServer作爲後端),我們使用HTTP服務鏈接和XMLRPC類似的消息傳遞進行通信。

服務總是返回一個數據集作爲任何返回內容的命令的結果。有一種方法可以將嵌入式SQL語句傳遞給服務。

所以,我們沒有直接訪問數據庫。

我試圖用一層可以簡化訪問的層隔離此服務。我正在考慮使用像NHibernate這樣的ORM。

這種情況是由NHibernate支持還是NH總是需要直接訪問數據庫?

如果您有任何其他建議我打開所有的耳朵...

+0

你可以添加一個新的中間件層 - 說一個WCF服務?或者你必須使用第三方中間件? – 2010-07-14 21:20:22

+0

這是我正在修補的一個想法。我會使用WCF和Agatha添加另一個圖層,然後與其他中間件進行交互。 – 2010-07-15 11:41:35

回答

1

如果我理解正確的話,你不得不使用第三方的中間件 - 但它不是容易對付?

我從來沒有使用NHibernate所以我不能說。

聽起來像你想在頂部添加一個新的「服務層」(爲了更好的術語),這更容易處理; (儘管這通常用於捆綁各種不同且不同的接口,在單個內聚集成點下)。

基本上你想定義一個很好的乾淨的接口/服務集(在新的服務層中);然後這個新層將完成所有與中間件交互的艱苦工作 - 或者如果你有機會直接與數據庫交互。

我也建議將這個新圖層分成幾個子部分:你不想去建立一個緊密耦合到中間件(或數據庫)的新圖層 - 使用Dependency Injection來隔離從具體實施外立面,並保持loose coupling。那樣,如果中間件消失了,你不會直接影響你所建立的新服務層的消費者。

最後,在設計新的面向外部的服務時,請記住Interface Segregation Principle(ISP)。

Free Image Hosting http://www.freeimagehosting.net/uploads/89e5a8a47a.jpgFull size image here

+0

這就是我的想法,但我仍然想要一些處理事務的方式(它們受第三方中間件支持)。我正在考慮使用存儲庫和工作模式單元,但不知何故,即使經過無數天的閱讀後,我似乎也無法將自己的思想包圍在他們身邊。我還沒有在源代碼中找到一個很好的例子。 – 2010-07-15 11:51:23

0

我們使用NHibernate和它吮吸。我不會推薦它用於任何事情。至於據我所知,NHibernate確實需要直接訪問數據庫(或者至少你只是給NHibernate一個連接字符串,就像任何其他數據訪問提供者)。另外,正因爲如此,我敢肯定它不會知道如何處理Xml數據集。

+0

有趣 - 我從來沒有使用過NHibernate,而我認識的少數幾個使用過它的人並不是很多,但它似乎擁有一個大型社區。 – 2010-07-14 23:52:26

相關問題