2009-08-28 83 views
0

我們有一個相當大的企業,多層次,多層次建立在NET 3.5的溶液中使用。該系統是面向服務的體系結構(WCF服務),帶有一個ASP.Net MVC用戶界面。應富客戶端拱在多級企業系統

一些球隊的球員正在努力爲工具系統,並正在執行這些作爲直接連接到數據庫(或其他數據源)WPF富客戶端架構。

不知怎的,這只是感覺不對我有以下原因:

  1. 這將需要在SQL Server將需要通過多臺機器的直接(誰正在運行的工具)進行訪問。僅僅允許您的應用程序層連接到數據庫層是不是最佳實踐?傳遞身份驗證無論如何都將用於可審計性,因此管理多個登錄帳戶的開銷不成問題。
  2. 必須發生業務邏輯的複製(或至少分配)。它不必在服務器上託管重用業務邏輯,而必須駐留在每臺客戶機上。
  3. 維護多臺客戶端的安裝:現在,所有這些機器都有每個工具的新版本發佈時間單獨更新。好的,你仍然可以使用類似於一鍵的方式來保持它自動更新。

等等等等

我提出了一個富互聯網架構的工具,使我們能夠利用的擴展功能,客戶端計算機可以然後提供(該瀏覽器可能不能夠在瀏覽器上做或者會更難)。至少在這種情況下,主要業務邏輯仍將保留在應用程序服務器上的服務層中,並且不需要直接連接到SQL Server。

我可以瞭解使用富客戶端對於字處理應用程序或excel,但如果你已經有一個完整的多層次的解決方案,當然它不是做的最好方法是什麼?!?

我想獲得的話題去,因爲我不認爲這是可以很容易地通過一個行響應來回答那些東西(我可能是錯;-)一個很好的討論。

您認爲如何?你們過去經歷過什麼?我在哪裏可以找到資源來證明或反駁我的觀點?


參見:Google Earth - Rich Client or Rich Internet Architecture?

回答

1

是的,他們可以/應該使用!。要評論你的理由:

  1. 不,這是SQL 服務器的原始角色。連接到同一數據庫的多個應用程序 。 這與 內部網,其中多個獨立的 應用程序所使用的相同DB 90年代是很常見的。數據庫 支持這一點,這是 他們有這麼多 安全粒度爲用戶 帳戶(也意見, 約束e.t.c)的原因。「唯一的應用程序 服務器談判DB」是一個較新的 模式開始在最後9-10 年
  2. 是的,你是對的。建議的 解決方法是獨立的 客戶端訪問服務器應用程序的業務邏輯 組件 而不是直接db。我不知道關於.NET的知識,但在J2EE中,這個 將意味着擊中EJB或使用RMI/Web服務。這種方式業務邏輯代碼只存在一次(在服務器中)。
  3. 同樣你是對的,但是這個 是可以解決的。在J2EE世界中,這個 是用Java Web Start解決的,因此我猜想在.NET中有一些類似的工作 。

我已經在真實世界的應用程序中使用了這種模式(Web應用程序+多個獨立的應用程序,使用Web服務訪問應用程序服務器),它工作得很好。

+0

的Java Web Start的替代技術,.NET似乎是ClickOnce的。 – kazanaki 2009-08-28 15:53:57

1

如果你有一個具有任何重要邏輯的服務層,那麼我認爲繞過從RIA UI直接到數據庫是非常危險的。

從UI開發人員的角度來看,這顯然是一種權衡,他們覺得他們覺得他們可能覺得他們更快地提供價值,並且可能在短期內看到更好的性能。

長期來看,我認爲您傾向於在UI層和UI與服務層之間看到業務邏輯的重複性,您可能會錯過服務層緩存提供的性能優化機會。

我已經看到了我所看到的相當成功的是在可以從多個不同的UI實現中訪問的服務層中開發可重用服務。 RIA +服務是一個很好的,可擴展的架構模式,我感到非常自在。

1

對於所有較新的系統,我們有一個客戶層與服務層進行對話,然後與服務層進行對話以與數據庫對話。

http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Whatis.NETRIAServices_8178/image_6.png

如果你正在使用微軟的技術也可用來實現這個淨RIA服務:

http://blogs.msdn.com/brada/archive/2009/03/19/what-is-net-ria-services.aspx

+0

當你說「我們」是指你的團隊或更廣泛的社區?我喜歡這張照片。 – djna 2009-09-01 09:55:08

+0

是的,「我們」是我的團隊/公司 – 2009-09-01 10:24:32