`
- 浏览:
7318 次
- 性别:
- 来自:
郑州
-
为了大家能够更好的学习Java EE各种技术,在这里写一篇文章帮大家理解服务器端组件这个概念。
开发人员可以使用Java、C++之类的语言编写具有灵活性、可扩展性和可重用性的软件。通常开发人员会把业务逻辑采用面向对象的封装特点进行封装,以面对业务的变化性。而进行封装时,为了提高软件的健壮性以及性能,传统的方式需要利用相应的API获得诸如事务、安全、多线程甚至持久化的功能。这就迫使开发人员学习大量的特定API,例如BEA的Tuxedo API。如此一来就导致开发人员不能专注于业务逻辑的实现。更糟糕的是被开发的软件,不管是定制项目还是产品被锁定在某一商业平台,降低了软件的可移植性。开发机构为了实现不同平台的产品目标,不得不维护不同产品的不同软件版本。这样就大大提高了机构的软件维护成本。于是开发机构渴望标准API的出现。Sun Microsystems为了满足这一需求,利用Java的跨平台特点制定了许多标准API,如JTA用于不同的事务平台。我们最熟悉的要数JDBC了,如果采用JDBC来实现持久化,数据库方面的可移植性将会很高,因为JDBC可用以相同的编码操作几乎所有的数据库产品
有了标准的API,开发机构基本可以解决软件的可移植性问题,开发人员也可以从学习不同的API噩梦中解脱出来,恐怕没有开发人员愿意为了某一软件项目辛辛苦苦学习的API,一段时间之后再也不使用而被遗忘废弃掉。但是这样并不能做到开发人员只关注业务逻辑实现。开发人员仍然需要自己编码控制事务、安全、多线程等复杂易出错的部分。这种方式虽然有很高的灵活性,但是软件的健壮性使得对开发人员的要求非常高。软件维护成本仍然没有降低。如果有一种机制能够使开发人员从标注事务API中解脱出来,问题也就解决了大半。同样为了满足这种需求,Sun Microsystems制定了Java EE标准。基于组件和容器的概念,要求容器透明支持诸多服务。组件如果需要服务,只需以声明的方式,通知容器提供相应服务即可。非常典型的是CMT(容器管理的事务)。这里提高的组件就是服务器端组件。那么组件和容器该如何互相认识,互相交互呢?
为了使容器能够准确的管理组件和对组件提供服务是有要求的(我们可以理解成是一种代价),即是组件必须实现某些接口。这里的接口起到的是一种标准的作用。既然是标准,就是双方的,就是说不仅仅用来约束组件的实现者,也约束了容器的提供者。我们拿大家肯定熟悉的Servlet组件举例子。先从Servlet组件实现者方说起。开发人员不能随意编写一个类就是Servlet,哪怕这个类中存在诸如init()、service()、destroy()方法。容器(这里以大家熟悉的Tomcat作例子)是没有办法管理随意编写的类。开发人员为了编写Servlet组件,必须实现javax.servlet.Servlet接口,并提供此接口中定义的所有生命周期方法以便容器能够对其进行生命周期管理,就是init()、service()、destroy()方法。在对容器的约束方面,Servlet组件标准要求容器提供者实现对Servlet组件的生命周期管理以及诸多基础性工作。例如,Servlet组件如果需要正确响应客户端的请求,那么容器就必须在请求到达容器时,为Servlet组件提供封装了客户端提交过来的数据的ServletRequest对象,这些数据包括了表单参数,客户端元数据(请求头信息)等。除了请求对象,容器还需提供ServletRespose响应对象向客户端做出响应数据的发送。细心的读者会发现,Servlet规范当中定义的ServletRequest,ServletResponse明明是接口,怎么能说成是对象呢?这就更体现了对容器的约束。容器必须实现这些接口以便能实例化相应的请求和相应对象。例如Resin的实现类是com.caucho.server.connection.CauchoRequest类。
随着Java EE的发展,为了满足开发更加简易,将会采用POJO+Annotaction的方式来替代接口是实现,虽然开发方式变了,但是容器和组件的概念没有变,她们之间的关系也基本不变。
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
EJB,全称Enterprise JavaBean,是Sun Microsystems(现已被Oracle收购)为J2EE(Java 2 Platform, Enterprise Edition)框架设计的一种服务器端组件模型。它的主要目标是简化企业级应用的开发,特别是分布式应用...
N层体系结构已经成为很多这种应用的最佳实践,针对具体应用的复杂度通常集中在应用服务器层。通过实现一个定制的容器去把握和了解容器内部结构,不仅对于开发组件部署新的应用,同时对于学习面向对象设计都有巨大的...
在IT行业中,轻量级服务器端组件体系是一个重要的概念,尤其在如今的微服务架构和分布式系统中,这种体系有着广泛的应用。轻量级服务器端组件体系的主要目标是提供高效、灵活且易于维护的解决方案,它通常不依赖于...
### 服务器端组件安装说明 #### 一、前言 金格软件的中间件产品主要基于前后端通信的原理设计。服务器端需要部署一个特定组件(通常为.dll或.class文件),用于解析来自客户端的信息包并封装发送给客户端的数据包...
【服务器端组件安装说明】 在IT领域,尤其是B/S架构的软件开发中,服务器端组件是必不可少的部分。本文档主要针对基于区块链技术的服务器端组件安装进行详细说明,特别是涉及COM组件的安装方法,适用于ASP、VB.NET...
### EJB服务器端组件模型详解 #### EJB概念与应用 EJB(Enterprise Java Beans)是J2EE架构中的核心组件之一,它定义了企业级应用程序的开发标准和框架,旨在提供可扩展、分布式、事务处理、持久化、安全等高级...
【服务器端组件安装说明】 在IT领域,尤其是B/S架构的软件开发中,服务器端组件扮演着关键的角色。这些组件负责处理客户端发送的信息并构造响应。金格公司的中间件产品通常依赖于这样的通信机制,其服务器端组件...
在现代互联网应用的开发中,服务器端组件框架的选择至关重要,它直接影响到应用的性能、可扩展性以及开发效率。在本小册中,作者就如何选择合适的服务器端组件框架进行了详细探讨,并最终确定了所采用的技术栈,包括...
报告机器(ReportMachine)Web版服务器端组件源码是一套用于构建在线报表系统的核心模块,主要针对VB.NET编程语言设计。这个源码包为开发者提供了一整套工具,用于开发和部署基于Web的报表解决方案,使得用户可以在...
clockwork, Clockwork php开发工具集成到你的浏览器服务器端组件 什么是时钟?Clockwork是一个浏览器扩展,提供用于调试和分析PHP应用程序。包括请求数据。应用程序日志。数据库查询。应用程序运行时。应用程序运行...
4. 错误处理和日志记录:当打印出现问题时,服务器端组件能捕获错误并记录日志,便于问题排查。 5. 打印作业监控:提供实时的打印状态查看,便于了解打印作业的进度和完成情况。 三、服务器端打印服务的工作原理 ...
- 使用`CoCreateInstance`或`CLSIDFromProgID`函数获取服务器端组件的实例。 - 检索并查询接口,获得对组件方法的访问权限。 - 调用组件的方法执行所需操作。 在"com学习的例子(基于atlcom)"压缩包中,你可能...
8. **安全编码与更新管理**:服务器端组件的更新需要谨慎处理,防止因更新导致的安全漏洞。开发者应遵循安全编码原则,并对组件进行定期的安全审计和更新。 9. **合规性**:在某些行业,如金融、医疗,服务器端的...
在深入探讨这个项目之前,我们首先要理解iOS应用和服务器端组件之间的关系。iOS应用通常通过网络与服务器进行通信,发送请求并接收数据,以实现各种功能,如用户登录、数据同步、内容下载等。服务器端则负责处理这些...
什么是发条? ...什么是Clockwork? ... Clockwork使用服务器端组件,该组件收集所有数据并轻松与任何PHP项目集成,包括对主要框架的现成支持。 了解更多信息,并在Clockwork网站上试用。...该存储库包含服务器端组件
此存储库包含Snacker-Tracker的服务器端组件。 这是Swagger托管的REST API,它公开了端点来驱动扫描器和UI组件。 该API记录在src/swagger.yml 入门 本地运行 安装依赖项后,。/ ./auto/serve将使用./auto/serve ...
视觉引擎用于交互式数据缩减查询的服务器端组件。 正在进行中-尚未实际运行,但是此回购包含设计思想和部分实现。 该项目本质上是的服务器,其设计使其可以与 (大数据的协作平台)集成。 组织: ...
phpMyAdmin的错误报告服务器 phpMyAdmin服务器端组件,用于错误报告系统。 它使用CakePHP和一些额外的插件,例如迁移,调试工具包和OAuth组件。如何部署为了在此仓库中部署应用程序,您需要执行以下步骤: 克隆此...