2011-04-10 145 views
2

有一些教我們直接一些ORM與數據庫例如使用這麼多的教程,但在現實生活中我不記得一個大的項目,該項目直接與數據庫,而不是與服務工作,所以這些教程的數量對我來說似乎很陌生。
直接連接的應用程序在數據庫和應用程序之間的數據轉換的速度實實在在的好處,他們不具備的功能出現,因爲服務層的限制(例如讓我們實體框架和WCF數據服務(即使用相同的實體數據模型本身))。另一方面,服務解決方案更加安全和靈活,這就是爲什麼我(我認爲許多其他程序員)通常選擇它來構建具有某種通用業務邏輯的大型應用程序......但是!有時輸速度可達10倍!這只是令人傷心的,應用程序的響應速度不如以往。
所以我要問的問題是:你可以分享自己構建企業應用程序,而與網絡/服務層的經驗,當它是一個好的選擇嗎?構建企業應用

回答

6

企業應用!= n層應用程序。這意味着您可以編寫企業應用程序而無需創建單獨的物理中間層(業務邏輯)。創建單獨的中間層必須始終是需求的一部分,因爲它會帶來很多額外的複雜性=大量額外成本。

單獨的中間層通常的要求是:

  1. 安全 - 有時Web服務器是在DMZ和中間層必須在安全的網絡
  2. 可重用性 - 你想在一個以上的應用程序使用中間層,這也導致SOA要求
  3. 可擴展性 - 中間層可以更復雜,所以它可能是有用的獨立擴展它在前端層。如果您想在多個應用程序中使用中間層,您還必須能夠獨立擴展它。可擴展性要求通常基於性能和可用性要求。

如果您沒有任何這樣的要求,您可以製作多層應用程序,其中前端業務邏輯和同一業務邏輯位於同一服務器上的相同進程中。

+1

非常好的答案。我通常不需要跨越多個應用程序的相同業務層。但安全..這是一個問題。客戶端通常使用數據庫關閉服務器,客戶端計算機必須使用VPN才能直接訪問。通過服務,我們可以將一臺服務器放入VPN中,並通過「開放」網絡與客戶端計算機聯繫。安全始終影響速度。呃..客戶需要更多的響應! Ok..ill嘗試詢問這樣的解決方案合理的條件(如服務服務器和DB一個和良好的服務服務器之間良好的渠道與所有客戶合作) – 0x49D1 2011-04-10 10:42:10

+0

但是,這不是一個很好的解決方案:保護自己免受客戶的變化和未來的需求 - 構建n層應用程序(確定需要更多時間)?幾乎所有客戶都希望繼續一些項目並添加一些功能 - 這可能會導致將2層更改爲3或更多..似乎靈活性幾乎總是一個好主意。 – 0x49D1 2011-04-10 10:47:58

+1

@nihi:這取決於您的開發方法和客戶的真實世界體驗。靈活性是一個好主意,但同時你不應該開發客戶現在不想要的東西(敏捷學校),因爲在同一時間你可以發現它是浪費,因爲沒有進一步的變化需要三層應用。 – 2011-04-10 10:54:18