App Server史话

来源:互联网 发布:mac中间的点 编辑:程序博客网 时间:2024/04/30 09:10

app server的前身是middleware(中间件),历史要长的多。早在上世纪六七十年代就已经开始在IBM大型机系统上广泛应用了,叫做TP Monitor,比较著名的是BEA的Tuxedo和IBM的CICS,运行在Terminal/Server模式的Server端,其功能主要是分离商业逻辑,进行分布式计算的,可以自动管理事务、资源和容错等等。因为发展的时间很长,所以技术非常成熟。middleware最早是用cobol编写的,现在还可以偶尔看到cobol的中间件的旧系统,再后来middleware改用C++来实现,著名中间件的有IBM的CICS,BEA的Tuexdo,仍然广泛的应用在高端系统中,特别是银行系统。 

然而在面向对象的技术出现和广泛的应用之后,TP Monitor由于不是面向对象的,而是面向过程的调用,因此TP Monitor管理的商业逻辑并没有分布式对象系统中的商业组件那样的可扩展性、可重用性,表现出来很大的局限。 

不过像PHP这样主要还是面向过程调用的函数式的语言来说,TP Monitor仍然可以支持的非常完美,由于有了TP Monitor的支持,PHP也可以应用在企业的环境中了。 

我所知道的eachnet用的是: 

代码: 
Linux+Apache+PHP+Tuxedo+Oracle  


eachnet在上海好几个ISP那里放了服务器,以保证服务不因某个ISP的问题而无法访问。我曾经见过eachnet在上海热线机房的服务器,说出来,大家可能不信,eachnet竟然用的是自己攒的兼容机,世纪之星的机箱,估计不比我们大家自己买的兼容机强到哪里去。大概有六七台机器的样子,来负载均衡。 

对象请求代理(Object Request Brokers)是另一种用的很多的中间件,支持分布式对象的调用。然而它的问题是仅仅是一个代理(Broker),系统级的功能需要自己来实现,这包括管理并发性、事务、资源管理和容错机制等等,而且不同的厂商提供的ORB之间也存在互操作的兼容性问题。 

于是一种综合了TP Monitor和ORB功能的新的服务器出现了,叫做CTM(Component Transaction Monitor)组件事务监控器。用在我们特定的管理应用程序的环境中就是App Server。 

在1997年开始,CTM市场发生了巨大的变化,因为这一年Sun的J2EE标准正式发布,从此除了微软之外,所有的CTM厂商都用Java来改写自己的产品,例如Sybase原来有一个叫做Jagus CTS的东西,现在已经变成了纯Java实现的EAServer,Borland的公司app server也是这样来的。这样一来,除了微软之外,就剩下基于Java的app server了。 

App Server可以自动管理并发性、事务、对象分布、负载均衡、安全性和资源管理等等系统级功能。简单的来说就是App Server是管理服务端组件的,它给服务端组件提供了一个全功能可靠的运行环境。 

打个比方来说,数据库系统是管理数据的,它也给数据提供了一个受监控和管理的运行环境,提供了事务、安全性、负载均衡,并发性等等系统级功能,对于使用者来说,你不需要自己处理数据库表的并发锁定问题,自己处理SQL语句的解析、自己处理索引的优化等等系统级功能,同样对于服务端组件的调用者来说也不需要自己处理并发请求、对象创建、销毁、缓存,控制组件事务等等系统级功能。 

App Server对服务端组件的的关系就是数据库系统对数据的关系。App Server完全是一个类似数据库系统这样一个非常复杂的服务端软件,所不同之处就是数据库系统(RDBMS)是管理数据的,而App Server是管理对象的。这也是我研究Weblogic Server之后的切身感受。 

Microsoft是最早发布App Server的厂商,叫做Microsoft Transaction Server(MTS)。其他还有很多基于不同技术的App Server,不过随着EJB规范的发布,主流的App Server基本上都是基于J2EE的了。目前看来,App Server市场主要就是实现J2EE规范的Java应用服务器和Microsoft的.Net应用服务器这两大主流。 

Tuxedo等基于过程传统的中间件会继续在特定的场合发挥巨大的作用,像那些需要极高的响应性能和基于特定平台C/C++的场合,还是具有不可替代的作用。 

App Server提供的服务端组件模型并没有解决所有的问题,基于不同技术实现的服务端组件之间不能互相调用和数据共享,比如EJB组件和COM组件之间不能之间交换数据,所以基于SOAP协议的Web Services试图解决这个问题,想把互联网上所有的不同技术实现的组件服务都统一成单一的Web Services。这也是Web Services热门的原因之一,标准的统一对大家都有好处。