2010-09-17 73 views
2

我正在考慮WPF應用程序的高級體系結構。WPF /分層體系結構問題 -

通常我會覺得在這個

  • 方面的數據庫服務器
  • 自己的服務器上的數據訪問層
  • 它自己的服務器
  • WCF包裝輪上的一個商業邏輯層業務層
  • 用於客戶端的UI層。

例如,在遠程服務器上發生所有魔法的瘦客戶機。

但有人對球隊提出了質疑業務邏輯層是否需要一個遠程服務器上。爲什麼不把它推到客戶端上呢,這使得它不再是瘦客戶端,而是更多的胖客戶端服務器應用程序。

我們目前不需要WCF並假設我們仍然建築師業務邏輯,所以它是一個單獨的層上,這使得一些意義,我在簡化基礎設施方面。

我的問題是...有沒有什麼好的arhcitectural原因,而不需要Web服務時,將業務邏輯層連同UI層一起推出到客戶端機器上?

我能想到drwabacks,但沒有這些似乎大

  • 有關客戶端更新的需求減少(但肯定的ClickOnce緩解此)客戶機上
  • 更多的負荷。
  • 需要確保數據庫服務器是足夠矮胖連接到它足夠

回答

3

大我通常會從用戶界面分離出業務邏輯。爲什麼?因爲您的用戶界面可能只有該服務的一個客戶端

此刻你的客戶是服務的唯一消費者,但在後一階段可能還會有其他客戶(包括其他服務)使用它的願望。通過分離業務邏輯,您可以將其提供給其他消費者。

我通常會做的業務邏輯組件,然後我可以選擇如何部署這個(在客戶端或服務器)。然而,在很多情況下,我不能這麼做。例如如果客戶端和服務器使用不同的技術實現(C#/ Java是一種常見的組合)。

+0

我和你在一起。但是,從實用的角度來看,並且最初要減少開發工作(沒有WCF)。如果我們在BLL體系結構中遵守紀律,那麼有沒有其他理由可以避免上述方法。 – AJM 2010-09-17 11:09:06

+0

請參閱我上面關於組件化和不同技術的評論。 – 2010-09-17 11:12:14

1

完全同意布萊恩。我通常構建它的方式是將Web服務從客戶端轉移到單獨的服務器上的業務邏輯,這使得它成爲可擴展的,但這一切都取決於系統的穩健性。

想想也是部署,它會更容易比推出的所有客戶機部署到一臺服務器。不同客戶端運行不同版本業務邏輯的機會有多大?

+0

不同版本的邏輯是一個有趣的觀點。 – AJM 2010-09-17 11:18:18

1

嗯,我也完全符合布賴恩和伯特同意。「運行不同版本業務邏輯的不同客戶」是非常有意義的。

從根本上說,關注分離(SoC)是最重要的一點,它允許任何應用程序足夠擴展以滿足未來需求。作爲一個架構,你至少應該感受到這一點,並建立一些基礎工作。

今天的大多數應用程序不是單一的,並且不會保持不變。業務需求變化非常迅速,因此它們也需要在應用程序中進行更改。

將可變的東西從不可改變的東西中分離出來很重要,因爲設計應用程序時可以輕鬆地擴展它們。

HTH