我想更好地理解.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類似的功能。
幾個問題:
- 爲什麼在微軟對Java的根本區別接近應用服務器?當這些框架被創建時,這一定是架構/設計選擇。
- 每種方法的優缺點是什麼?
- 爲什麼Microsoft從MTS託管模型(類似於Tomcast servlet託管模型)轉移到更常見的當前方法,即將業務對象作爲Web服務器的ASP.NET過程的一部分?
- 如果您想在今天的ASP.NET應用程序中實現MTS類型的方法或Tomcat類型的方法,我假設一個通用模式是在一些IIS進程中託管業務對象(可能位於一些不同的物理層或邏輯層)通過WCF(或標準的asmx網絡服務,無論)。這是一個正確的假設嗎?
由於長度的限制,我將我的答案分成3條評論。我完全理解你關於開放/引入你自己的x方法與綜合堆棧方法的觀點,但是我問的是爲什麼,不是因爲他們在哲學方法上的差異,而是來自技術和架構層面。我不明白爲什麼微軟的模型能夠滿足對微軟應用程序的需求,以及爲什麼Java應用程序服務器模型對Java應用程序也一樣。 – Howiecamp 2010-08-13 20:09:20
(第2部分) - 從結構上(從一般應用程序要求的角度來看),在這兩種情況下都應該出現相同的問題/問題。 關於WCF,我只是將它用作一個.net Web應用程序如何與其他邏輯或物理過程進行對話的示例。它可能是一個罐頭和字符串。這不是我的問題的核心。 – Howiecamp 2010-08-13 20:09:48
(第3部分) - 如果你不需要分佈式體系結構,那麼顯然將對象託管在Web服務器的asp.net進程中。我只是說在微軟的土地上,這種方法更常見。例如,如果您想分發處理負載,則需要分佈式系統。我想知道的是,如果微軟最初採用MTS的方法爲您提供了這種能力,那麼他們爲什麼基本上將注意力從MTS轉移出來,並將重點放在全局方法上? – Howiecamp 2010-08-13 20:10:25