分布式应用架构
为什么需要应用服务器,而不是直接面对应用程序?这是因为很多有价值的公共任务需要应用服务器来处理。以JavaEE应用服务器为例,应用服务器负责建立一个企业应用程序空间,把JSP页面编译成Servlet,管理服务线程,维护各种寄居于容器中的组件生命周期,提供事务服务、安全服务和消息服务,还有像配置管理、外部资源连接、数据库连接池等。应用服务器的作用是很大的。
远程方法调用使分布式应用与单机应用从程序代码这个级别看上去变得没有什么不同。当然,远程方法调用有一些额外的工作要做,例如,对于RMI(Remote Method Invocation,远程方法调用)来说,需要使用RMI注册服务器来获取远程方法的引用。
RMI的问题在于,首先它是Java特有的(虽然可以与其他语言进行映射);其次它使用了特定的服务协议。于是,业界提出了WebService的概念。这使远程方法调用被提到一个新的高度。与RMI这类的实现截然相反,WebService独立于任何平台。它可以附加在HTTP这类最普遍使用的协议上,完成异构平台间程序代码级别的整合。
在Web Service出现的头几年,业界并没有找到使用它的最佳场景。直到某一天,它悄然成为SOA的一块重要基石。
我们正处在SOA概念泛滥的年代,有些人拥抱它,有些人排斥它。其实SOA一点也不神秘,它只是远程方法调用的变体。不过,这种变体是革命性的,它改变的不仅仅是一种技术实现,它改变的是构架企业应用软件的思想。