2010-07-24 98 views
6

我想更好地理解.NET應用程序服務器模型與大多數Java應用程序服務器使用的模式相比的原因。.NET應用程序服務器與Java應用程序服務器之間的區別

在大多數情況下,我已經看到ASP.NET Web應用程序,業務邏輯託管在Web服務器的asp.net主機進程中。另一種常見的方法是擁有一個物理或邏輯不同的層,託管您的業務對象,然後作爲Web服務公開或通過像WCF這樣的機制訪問。後一種方法通常但並非總是在需要更高比例時使用。在COM對象的日子裏,我看到了Microsoft Transaction Server(MTS)以及後來用於託管包含業務邏輯的COM對象的COM +託管,其中MTS(理論上)用於管理對象生存期,事務和併發性yada yada。這個模型很大程度上似乎已經在ASP.NET土地上消失了。

在Java世界中,您可能會將Apache與Tomcat作爲servlet容器和託管在Tomcat中的業務對象。在這種情況下,Tomcat提供了與.NET世界中提供的MTS類似的功能。

幾個問題:

  1. 爲什麼在微軟對Java的根本區別接近應用服務器?當這些框架被創建時,這一定是架構/設計選擇。
  2. 每種方法的優缺點是什麼?
  3. 爲什麼Microsoft從MTS託管模型(類似於Tomcast servlet託管模型)轉移到更常見的當前方法,即將業務對象作爲Web服務器的ASP.NET過程的一部分?
  4. 如果您想在今天的ASP.NET應用程序中實現MTS類型的方法或Tomcat類型的方法,我假設一個通用模式是在一些IIS進程中託管業務對象(可能位於一些不同的物理層或邏輯層)通過WCF(或標準的asmx網絡服務,無論)。這是一個正確的假設嗎?

回答

2

以我的思維方式,主要區別在於「開放」方法與「集成堆棧」方法。微軟喜歡將所有東西都作爲一個集成的堆棧來提供,這些堆棧都有共同的風格和方法Java對於「帶上你自己的x」模型更友好,你可能希望插入你最喜歡的應用服務器,事務管理器等。這兩種技術棧允許進程內調用以及遠程調用,具有不同級別的交易支持。

真的,WCF並不是一個新的技術堆棧,而是對.NET堆棧現有元素的重組和重新標記。具體來說,WCF承擔了.NET Remoting,Web服務和分佈式事務的功能。

您引用了「目前比較常見的方法,即將業務對象作爲Web服務器ASP.NET過程的一部分。」這僅適用於非分佈式應用程序。當所有的對象都駐留在同一臺服務器上時,這是一個簡單的模型。這遵循微軟的「Scale Out」部署模型。除了在服務器之間分離對象層,還可以將除數據庫之外的所有內容放在Web服務器上,然後逐漸添加相同的冗餘服務器以擴展Web服務器層。

最近,微軟一直在努力推行面向服務的體系結構,後者更依賴於WCF和遠程調用。這被看作是雲戰略的關鍵,它可以讓人們將部分或全部應用程序移動到雲中的靈活資源(MS想要使用Azure等進行託管)。

+0

由於長度的限制,我將我的答案分成3條評論。我完全理解你關於開放/引入你自己的x方法與綜合堆棧方法的觀點,但是我問的是爲什麼,不是因爲他們在哲學方法上的差異,而是來自技術和架構層面。我不明白爲什麼微軟的模型能夠滿足對微軟應用程序的需求,以及爲什麼Java應用程序服務器模型對Java應用程序也一樣。 – Howiecamp 2010-08-13 20:09:20

+0

(第2部分) - 從結構上(從一般應用程序要求的角度來看),在這兩種情況下都應該出現相同的問題/問題。 關於WCF,我只是將它用作一個.net Web應用程序如何與其他邏輯或物理過程進行對話的示例。它可能是一個罐頭和字符串。這不是我的問題的核心。 – Howiecamp 2010-08-13 20:09:48

+0

(第3部分) - 如果你不需要分佈式體系結構,那麼顯然將對象託管在Web服務器的asp.net進程中。我只是說在微軟的土地上,這種方法更常見。例如,如果您想分發處理負載,則需要分佈式系統。我想知道的是,如果微軟最初採用MTS的方法爲您提供了這種能力,那麼他們爲什麼基本上將注意力從MTS轉移出來,並將重點放在全局方法上? – Howiecamp 2010-08-13 20:10:25

相關問題