给初学者之五:企业级应用之中间件

给初学者之五:企业级应用之中间件
前面一篇简单介绍了一下应用软件的分层
下面重点介绍一下中间件,也就是业务逻辑层的软件结构


从本系列第二篇我们知道,java程序是跑在虚拟机之上的

大致结构如下:

------------
| grogram |
------------
|
虚拟机
|
------------
|
操作系统
|
------------
也就是说操作系统先运行一个java虚拟机,然后再在虚拟机之上运行java程序

这样做的好处前面也说过了,就是安全,一旦出现病毒或是其他什么东西

挂掉的是虚拟机,操作系统并不会受多大影响


这时候有人可能会问,为什么非要虚拟机?把操作系统当成虚拟机为什么不行?

可以,当然可以,但是这样做某一个应用软件的bug就可能造成整个操作系统的死亡

比如说我们在某个服务器上安装了一个收发电子邮件的软件和java虚拟机

那么一旦黑客通过收发电子邮件的软件入侵系统,那么操作系统就整个玩完

那么如果黑客通过java程序进行攻击的话,那么死的将会是虚拟机而不是操作系统

大不了虚拟机崩溃,而操作系统正常运行不受任何影响


举个简单例子,比如说最常见的是将数据库(DB)与中间件放在同一台服务器上

------------------------
| program |            |
-----------|      DB     |
|
虚拟机
|            |
------------------------
|        
操作系统
      |
------------------------
那么此时如果没有虚拟机,黑客病毒攻击中间件系统,就有可能造成操作系统的死亡

那此时数据库也有可能跟着一起玩完,那损失可就大咯

那如果此时有虚拟机,那么一旦被攻击,死的是虚拟机,操作系统与数据库不受任何影响


嗯,回顾完虚拟机,再来介绍中间件

在很早很早以前,任何一家企业,想要搭建一个局域网系统,他需要请许多个工程师

比如说我们想搭建一个网上银行,客户端用浏览器,后台数据库比如说用
oracle

那么搭建这样一个网上银行,可能需要用到多少个工程师,我们来算一算

首先,由于客户端用的是浏览器,我们需要一些了解网络通讯协议以及一些浏览器标准的网络工程师

其次,由于后台数据库用的是oracle,那我们还需要请oracle的工程师,因为数据库这一层每个数据库公司的接口什么都不一样

然后,我们还需要一些操作系统的工程师,因为我们的系统需要跟操作系统直接交互

最后,我们需要一些设计网上银行系统及其相关业务的工程师


太多了太多了,这样一个中间件队伍实在太庞大了,制作维护成本实在太高了

不仅如此,这样一个中间件就算做出来,他们所写的代码也只能满足这一家公司使用

其它公司统统不能再用,代码重用率极低,近乎不可能重用

毕竟这个系统中改动任何一个部分都有可能涉及到整个系统的改动


那么如何降低成本?


我举出了四组的工程师:

网络工程师,数据库工程师,操作系统工程师以及设计网上银行系统的业务工程师

除了最后一组设计网上银行的业务工程师之外,前面三组工程师是不是每一个项目都需要的?

就算不是每一个项目都需要,至少也是绝大多数项目需要的吧?

哪个项目能够脱离网络,数据库和操作系统?不可能,在这个时代已经很少很少了

好,那既然每个项目都需要,我们是不是可以用一个产品来取代这三组的工程师呢?

我们的业务工程师只需要遵循这个产品所提供的接口,进行相应的开发就行了

人们提出了一种叫做appserver也就是应用服务器的东西

应用服务器是干什么的?按官方的说法,应用服务器是包括有多个容器的软件服务器

那容器是什么?容器(Container)到底是个什么东西我想多数人还是不清楚


在说这个之前,先介绍一下组件

什么是组件,组件是什么?组件其实就是一个应用程序块

但是它们不是完整的应用程序,不能单独运行

就有如一辆汽车,车门是一个组件,车灯也是一个组件

但是光有车灯车门没有用,它们不能跑上公路

java中这些组件就叫做javabean,有点像微软以前的com组件

要特别说明的是,由于任何一个java文件编译以后都是以类的形式存在

所以javabean肯定也是一个类,这是毫无疑问的


好,那么容器里装载的是什么呢?就是这些组件

而容器之外的程序需要和这些组件交互必须通过容器

举个例子,IE发送了一个请求给容器,容器通过调用其中的一个组件进行相关处理之后

将结果反馈给IE,这种与客户端软件交互的组件就叫做
servlet

但是组件有很多种,那么如何区分这些组件呢?

有多种管理办法,比如同是同样是servlet,有些是通过jsp生成的

而有些是开发人员自己写的,那么通过jsp生成的servlet集中放在一个地方

而开发人员自己写的则需要在xml里面配置一些基本的参数

同时,不同组件有可能还需要继承一些特定的父类或者接口,这也是容器管理的需要

还有其他的一些组件,这里就不一一说明举例了


那么容器有很多种,按照他们装载的组件类型划分

比如有装ejbejb容器,有装servletjsp还有静态页面的web容器等等

//
这种只含有web容器的应用服务器也被叫做web服务器


当表示层的应用软件通过网络向appserver发送一个请求的时候

appserver
自动找到相应容器中的组件,执行组件中的程序块,把得到结果返还给客户

而我们要做的事就是写组件也就是javabean,然后放到appserver里面去就可以了

至于怎样与IE通讯,怎样截获网络上的请求,怎样控制对象的数量等等

这些繁琐而无味的工作我们都不管,都由appserver去做吧,把注意力集中在业务逻辑上


appserver
与其他相关软件的关系如下图:

-------------------------------------------------------
|    
表示层     |       业务逻辑层         | 数据持久层
|
-------------------------------------------------------
|               |     -----------------     |             |
|       IE       |     |    javabean     |     |             |
|               ->    -----------------     ->    DB       |
|     client    <-               appserver <-             |
|               |-------------------------|             |
|               |        
虚拟机
           |             |
|--------------|-------------------------|------------|
|     Windows    |     Linux/Saloris         |LinuxSaloris|
|--------------|-------------------------|------------|
图上可以看出:虚拟机负责处理中间件与操作系统之间的交互

appserver
则负责组件的管理以及与其他两层的业务交互


1
附图: image002.gif (76463 字节
)

要说明的是上图中还包含有应用程序客户端容器
(Application client container)
管理应用程序客户端组件的运行,应用程序客户端和它的容器运行在客户机

这种情况比较复杂一般说的是两个server之间的通讯

比如jsp/servlet容器在一个服务器上,而ejb容器在另外一个服务器上等等

这是分布式操作系统大面积应用的基础,这个以后再说

下面这张相对简单:

2
附图: j2ee.gif (8226 字节
)

嗯,那么话题再回到中间件上去,什么是中间件?

appserver
就是所谓的中间件,但是中间件不仅有appserver,还有其他的东西

换句话说,appserver只是中间件的一种

而关于中间件有诸多规范以及遵循这些规范的模型

最流行的规范无非两种,一个是j2ee还有一个是
.net
但是.net几乎只有微软在用,所以很多人把.net这个规范就当成是微软的中间件产品

也不为过,毕竟没几个公司喜欢跟着微软屁股后面跑的
 
SOAOFFICE - 微软 OFFICE 中间件 SOAOffice 中间件是北京科翰软件为微软OFFICE量身打造的Web中间件,是Web调用Office、存取Office数据的必备中间件。SOAOffice中间件服务器端数据组件和客户端显示控件构成。 SOAOffice 完全抛弃了传统利用Office服务器端自动化技术存取文档数据的种种弊端和缺陷,采用独创的专利技术构建了一个功能强大、简单易用的微软Office中间件平台,平台提供标准的.net和java组件接口,不但能够在线(浏览器页面)打开、编辑、保存Office文档,而且开发人员还能够以简洁的代码快速的将数据库数据动态填充到Office文档指定位置,并且也能够从Office文档中提取指定位置的数据保存到数据库。 SOAOffice提供这些强大功能的同时,服务器端并不需要安装运行Office软件。通过SOAOffice,在Web世界里,难以驯服的Word/Excel就变成了普通的、熟悉的、服务器端可调用的.Net组件、Java组件、ASP组件、PHP组件,开发人员再也不用研究复杂的Word/Excel COM自动化细节、学习复杂的VBA语法调用,也不用去应对Word/Excel死进程、系统稳定运行的问题。开发人员能够节省宝贵的精力和时间,把它投放到更重要的业务逻辑和系统架构上,而控制Office的具体技术细节交给SOAOffice去做。 SOAOffice除了提供Word/Excel动态数据填充,Word/Excel数据导入导出,Word/Excel/PowerPoint等Office文档的在线打开、编辑、保存,权限控制,只读控制等功能外,还给在线办公内置了强大的支持功能:强制痕迹保留,手写批注,圈阅签字,手写签名,电子印章、数字签名、模板套红、一键套红等。 科翰软件是国内唯一的微软Office中间件开发商,拥有卓越的自主研发实力和独创的专利技术,其产品SOAOffice不仅畅销国内,而且还远销欧美国际市场,其中世界500强美国Dover集团、可口可乐 Coca-Cola、中石油、中石化等都是SOAOffice产品的忠实客户。 SOAOFFICE中间件主要应用在Web系统下所有涉及编程调用Office的领域,例如: 1. 需要把数据库字段内容填充到Word/Excel指定位置的; 2. 需要把Word/Excel指定位置的内容提取出来保存到数据库字段的; 3. 需要动态生成指定格式的Word文档的; 4. 需要把html页面中表格导出到excel的; 5. 需要在html页面中套打票据、报表的; 6. 需要在html页面中显示复杂报表,并要求精确打印预览及打印的; 7. 需要动态生成中国式复杂格式报表的; 8. 需要在html页面中输入复杂票据的; 9. 使用COM服务器自动化技术调用Word/Excel经常产生死进程或系统不稳定的; 10.Web系统中调用Word/Excel的页面有大量并发用户访问的; 11.使用jacob、jxl、apache poi的; 12.需要在Web中调用Word/Excel,并且追求系统运行稳定、可靠的; 13.最终用户可以浏览 Word/Excel/Ppt 文档内容,但需要禁止复制、粘贴、下载、另存的; 14.需要在html页面中在线编辑Word公文的; 15.需要在协同办公中强制保留Word修改痕迹的; 16.需要在协同办公中手写批注、手写签名、加盖电子印章、模板套红的; 17.需要在新闻编辑中强制保留Word修改痕迹、手写批注、圈阅的; 18.需要在远程教育中实现试卷、作业在线批改的。 19.需要在html页面中把Word转换为pdf的; 20.需要在html页面中快速打开、显示pdf的; 21.需要在Ajax架构里调用Word/Excel的,包括服务器端和客户端Javascript都适用。 22.需要控制不同的用户在Word/Excel中不同的区域中编辑权限的; 23.需要在企业局域网内架设在线Office文档中心、知识管理的; 24.需要在web页面导入导出Excel单元格数据的; ……… SOAOFFICE中间件包括三个内置组件:SOAExcel、SOAWord、SOAPowerPoint。另外企业版还包括支持PDF文件的SOAPDF组件。 SOAOFFICE 中间件采用标准HTTP传输协议,跨平台性好,支持任意Web服务器(IIS,WebLogic,WebSphere,Apache,Tomcat,Domino等),任意服务器操作系统(Win2k, Win2003,Win2008,Linux,Unix等),任意数据库(Access,SQL Server,Oracle,MySQL,DB2,Sybase等),以及任意WEB编程语言和Web架构(C#,Java,VB.Net,PHP,DOMINO,JSP,ASP,J2EE,ASP.NET,Ajax等)。SOAOFFICE同时支持C/S方式的编程和其他支持ActiveX的容器,您可以在VB,Delphi以及C++ Builder中使用本中间件,快速创建C/S结构的应用。 SOAOFFICE中间件是一个国际化产品,支持多种界面语言:简体中文、繁体中文、英语、日语、法语、德语等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值