意识到软件架构的重要性后,应用服务器必然成为程序员必不可少的“武器”。对应用服务器技术的扎实理解可以为程序员提供更大的理解软件体系结构的范围,这会影响软件工程文化。然后它将使用一些有用的工具来武装现代IT人员并改善价值链。本文标题中出现的数字七只是我们一次能够记住的项目数——我不想给读者太大的压力。第一个武器:信心——理解应用服务器并不难某些技术创造自己传奇的方式很有趣。我还记得作为程序员工作的产品包含源代码注释,例如“不要放在这里”或稍微更文雅的“这里很危险”。我们觉得非常复杂的代码难以管理。应用服务器已成为类似情况,一个无端恐惧的领域。在市场上,许多雇主将人们对应用程序服务器的应用知识作为一项强制性的工作要求。其实应用服务器也不是很复杂。例如,SunMicrosystems包含有关其基于J2EE的应用程序服务器的大量文档。您甚至可以免费下载它并在非常基本的WindowsXPProfessional计算机上运行这些优秀示例。Sun的教程以大量的代码示例为特色,展示了J2EE和该公司的应用程序服务器产品的优势和易用性。阅读这些文档很有价值,因为它提供了对这一极其重要的软件技术工作原理的洞察力。Sun的竞争对手包括BEA、IBM和开源应用服务器JBOSS。BEA甚至将应用服务器用作其“透明计算”的第一步。它具有面向服务架构的优势,我们可以在其中利用遗留和新应用程序来简化成长中的敏捷组织的服务需求。BEA的观点是,在某些情况下,公司可以像从一个应用程序中剪切数据并将其粘贴到另一个应用程序中一样轻松地更改其IT系统和业务流程。关键是这项工作是基于应用服务器技术的。显然,应用服务器是成熟软件行业的重要组成部分。它们内容丰富,依赖集中的应用管理,允许集中存储数据。这种技术是可用的并且不难理解。第二个武器平台——应用服务器是一个软件平台,应用服务器倾向于减少企业需要的中间件数量——因为它们是中间件!类似于包括防火墙在内的Windows,应用服务器可能会吸收一些现有的中间件产品所扮演的角色。这是因为应用服务器本身就是供多个客户端使用的软件部署平台。应用服务器中使用的软件具有不同的生命周期,包括:开发人员构建应用程序或打包成可部署元素的组件部署在应用服务器平台上供最终用户使用由开发人员重新部署以更新功能或修复在其结束时淘汰应用程序在许多情况下,使用寿命的管理方式与“正常”应用软件不同。对于多层分布式软件系统(客户端用户与后端服务器应用程序交互)尤其如此。应用服务器和多层软件应用套件之间的主要区别在于应用服务器提供广泛的软件打包支持。也就是说,应用服务器为很多领域(如线程管理、数据库连接、网络访问等)提供了运行时支持。应用服务器中的这些设施是免费提供的,但在传统的软件套件中,它们通常需要人们手动编写代码来实现。简单的说,应用服务器有效的分离了宿主平台和应用软件的业务逻辑。通过为软件提供广泛的支持,应用服务器技术允许软件设计者和开发者专注于解决他们自己特定领域的问题。适当地使用应用服务器技术可以降低软件开发的成本。[page]在上面的软件生命周期中,我们使用标准的应用服务器工具(比如基于ant的工具)作为专用工具。部分绑定在J2EE应用服务器上的其他一些应用程序包括:管理控制台部署工具调试工具J2EE兼容性检测程序管理控制台用于管理在应用服务器上执行的软件,如激活/去激活、枚举组件等。部署工具用于为应用程序服务器环境准备软件。调试工具用于帮助解决发生的那些问题。J2EE兼容性检查对于新软件的作者来说非常重要,因为J2EE组件不同于标准的Java类。Sun的文档显示,应用服务器软件产品的生产可以在专家之间进行划分。程序员编写和测试源代码,然后将其传递给部署人员。部署者准备并打包软件供我们在应用服务器上使用。此时,软件可能会返回给程序员进行调试和集成测试。另一组专家可以测试软件的J2EE兼容性。关键是一个或多个有能力的人可以执行如此多不同且复杂的交易。数据中央管理器对在应用服务器下运行的应用程序有更大的控制权。这意味着运行在企业中的软件可以集中管理并部署在同一个平台上。在某些方面,应用服务器技术已将我们“倒退”到大型机时代的软件部署环境。相反的观点认为,这种模式不需要客户端托管和执行大量代码,但在客户端执行比在一台或多台应用服务器上执行效率更高;同样,由于带宽的快速扩张,带宽的约束也在逐渐减少。技术遗产的第三个武器——应用服务器是基于组件的J2EE应用程序遵循广泛采用的面向组件的方法。它们被分成在客户端或服务器上运行的应用程序。客户端承载应用程序和小程序,而服务器承载Javaservlet程序、JavaServer页面和企业JavaBean(EJB)技术。可以部署在应用服务器上的主要组件文件类型是:WebArchive(WAR)和Enterprisejar(EAR)文件。客户端应用程序打包为JAR文件。我们可以准备组件并将其部署到Sun应用服务器上,大部分准备工作是借助向导或使用工具(如部署工具、asant和管理控制台等)自动完成的。应用服务器技术的面向组件的特性与软件工程文化的趋势是一致的。有趣的是,软件架构的演进在描述给定架构的软件元素时往往不使用组件这个词。相反,当一个组件不仅仅是一个运行时实体时,建议使用元素来描述它。看看应用服务器技术是否需要更多架构细节也很有趣。第四种武器Teamwork——应用服务器提供了软件协同工作的能力J2EE的基础之一是XML,它越来越成为绑定各种应用程序的“粘合剂”。在网络管理领域,XML大放异彩,因为它使我们能够轻松定义服务并将其转换为软件。XML作为提高软件之间互操作性的一种方式,其重要性将继续增长,尤其是在应用程序服务器上托管的软件。J2EE还提供对数据库事务的支持。使用ATM取款是交易的一个例子。如果交易中途出现停电或网络故障,你不希望账号多次入账,除非你中奖了(笑)。因此,事务支持是应用服务器基础设施的重要组成部分,在J2EE中占有重要地位。第五个武器想象——应用服务器是高度抽象的我经常认为,软件从业者向上价值链移动的最佳方式是使用抽象事务。我们不是单独处理离散和有限的交易,而是识别不太明确定义的抽象交易。抽象事务的示例包括建立存储备份策略、定义重要应用程序特性的要求等。抽象是一个很大的挑战,它迫使大脑分而治之。应用程序服务器为在其上运行的软件使用相当抽象的模型。例如,J2EE允许您的软件访问后端数据库,以这种方式提供抽象支持。它还将资源考虑在内,隐藏了特定数据源的复杂性。独立性的第六件武器——J2EE独立于Sun的应用服务器。这是一个非常基本的观点:J2EE本质上是一个高级API,但它确实包含一些Run部分。XSLT就是一个这样的例子,它允许我们将传统数据转换为XML,反之亦然。J2EE的重要性继续增长;一些软件架构专家甚至将J2EE视为21世纪软件工程文化转型的第一部分。这类似于万维网在90年代改变软件工程文化的方式——这也是花精力学习J2EE和相关技术的另一个原因。另一个原因是Microsoft和Sun目前正在积极合作,使他们的产品能够协同工作。第七武器开发-应用服务器:通向软件未来的窗口应用服务器功能强大且引人注目,因为它们能够在企业中集中执行软件。它可以让IT对已部署的软件进行非常高级别的控制。当主要软件组件基于应用服务器时,我们可以应用架构质量属性,例如安全性、可修改性和可靠性。这样一来,J2EE和应用服务器技术无疑将成为未来软件的桥梁。它还符合软件架构专家和面向服务的架构范式。结论不要害怕应用服务器技术!即使非常便宜的PC也可以托管高级软件套件(例如Sun的J2EE及其应用程序服务器产品)。当然你也可以使用开源的。其要点是这项技术正变得越来越流行和易于使用。使用这种技术,您将了解软件工程文化的趋势,并看到一些重要工作的产品。每个人都在谈论Web服务,但没有一个比使用和构建您自己的服务的示例更全面。即使使用企业JavaBeans、Servlet和其他J2EE技术也是如此。使用J2EE免费评估版或类似产品可以轻松实现所有这些交易。
