我想更好地理解.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