2010-07-24 96 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

相关问题