.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提供与MTS在.NET世界中提供的功能类似的功能。 几个问题: 为什么Microsoft与Java方法的根本区别在于应用程序服务器?在创建这些框架时,这必须是架构/设计选择。 每种方法的优缺点是什么? 为什么Microsoft将MTS托管模型(类似于Tomcast servlet托管模型)转移到更常见的当前方法,即将业务对象作为Web服务器的ASP.NET进程的一部分? 如果你想在今天的ASP.NET应用程序中实现MTS类型方法或Tomcat类型方法,我假设一个常见的模式是在某些IIS进程中托管业务对象(可能在某些不同的物理或逻辑层上)并通过WCF访问(或标准的asmx Web服务,无论如何)。这是正确的假设吗?     
已邀请:
就我的思维方式而言,主要区别在于“开放”方法与“集成堆栈”方法。微软喜欢将所有内容都作为一个集成堆栈提供,所有这些都具有共同的风格和方法Java对“自带x”模型更友好,您可能希望插入您喜欢的应用程序服务器,事务管理器等。两个技术堆栈都允许进程内调用以及具有不同级别的事务支持的远程调用。 实际上,WCF不是一个新技术堆栈,而是对.NET堆栈现有元素的重组和重塑。具体来说,WCF承担了.NET Remoting,Web服务和分布式事务的功能。 您可以引用“更常见的当前方法,即将业务对象作为Web服务器的ASP.NET进程的一部分。”这仅适用于非分布式应用。这是一个简单的模型,当所有对象都驻留在同一台服务器上时,它运行良好。这遵循微软的“横向扩展”部署模型。不是跨服务器隔离对象层,而是将除数据库之外的所有内容放在Web服务器上,然后逐步添加相同的冗余服务器以扩展Web服务器层。 最近,微软一直在努力推动面向服务的体系结构,后者更依赖于WCF和远程调用。这被视为云战略的关键,人们将部分或全部应用程序迁移到云中的灵活资源(MS希望通过Azure等托管)。     

要回复问题请先登录注册