服务器(server):服务器涵盖了几乎所有的大型机以及大部分中型机甚至一些小型机,通俗点话说就是24小时提供服务。
操作系统:人们把一些与硬件紧密相连的又经常用到必不可少的功能做到一套程序中去
这一套程序就被人们称做操作系统。
表示层
这一层一般在客户端pc机上,最常见的是IE浏览器,这就是表示层的软件
表示层是直接与使用者交互的软件
业务逻辑层
这一层一般在服务器端,顾名思义,所有业务逻辑处理都在这一层完成
最典型的是appserver,比如IBM的websphere,BEA的weblogic还有tomcat/jboss等
这一层也是三层中的重点,我们要说的大部分内容都是关于这一层的,这个等会再说
这一层就叫做中间层
数据持久层
这一层典型的就是数据库,一般也在服务器端
网络工程师,数据库工程师,操作系统工程师以及设计网上银行系统的业务工程师
除了最后一组设计网上银行的业务工程师之外,前面三组工程师是不是每一个项目都需要的?
就算不是每一个项目都需要,至少也是绝大多数项目需要的吧?
哪个项目能够脱离网络,数据库和操作系统?不可能,在这个时代已经很少很少了
好,那既然每个项目都需要,我们是不是可以用一个产品来取代这三组的工程师呢?
我们的业务工程师只需要遵循这个产品所提供的接口,进行相应的开发就行了
人们提出了一种叫做appserver也就是应用服务器的东西
应用服务器:应用服务器是干什么的?按官方的说法,应用服务器是包括有多个容器的软件服务器
那容器是什么?容器(Container)到底是个什么东西我想多数人还是不清楚
组件:组件其实就是一个应用程序块 但是它们不是完整的应用程序,不能单独运行 。
就有如一辆汽车,车门是一个组件,车灯也是一个组件
但是光有车灯车门没有用,它们不能跑上公路
在java中这些组件就叫做javabean,有点像微软以前的com组件
要特别说明的是,由于任何一个java文件编译以后都是以类的形式存在
所以javabean肯定也是一个类,这是毫无疑问的
容器之外的程序需要和这些组件交互必须通过容器,举个例子,IE发送了一个请求给容器,容器通过调用其中的一个组件进行相关处理之后
将结果反馈给IE,这种与客户端软件交互的组件就叫做servlet
容器:那么容器有很多种,按照他们装载的组件类型划分
比如有装ejb的ejb容器,有装servlet与jsp还有静态页面的web容器等等
//这种只含有web容器的应用服务器也被叫做web服务器
当表示层的应用软件通过网络向appserver发送一个请求的时候
appserver自动找到相应容器中的组件,执行组件中的程序块,把得到结果返还给客户
而我们要做的事就是写组件也就是javabean,然后放到appserver里面去就可以了
至于怎样与IE通讯,怎样截获网络上的请求,怎样控制对象的数量等等
这些繁琐而无味的工作我们都不管,都由appserver去做吧,把注意力集中在业务逻辑上
//下载了jboss之后,启动的同时也就启动了tomcat
Servlet web容器组件
Servlet确切地说,就是web容器运行的java组件
与普通javabean不同的是,Servlet定义了一系列方法//比如init()和destroy()
供容器调用,调用的主要目的是为了管理
当一个request请求被web容器截获之后,容器分析该请求地址
然后通过一个配置文件中的映射表//web.xml
调用相应的Servlet组件处理后将结果返还给客户端
JSP//Java Server Page
web容器组件
Servlet出现了之后,人们发现几乎没有办法用一个非常直观的方式去编写页面
毕竟页面是html语言编写的
而让我们用一种流程式的处理方式去逐行教计算机如何写html代码太困难
在这种情况下JSP应运而生,JSP将java代码嵌入html代码内部
然后存成.jsp文件,再由计算机编译生成Servlet储存起来//注意这个过程
所以JSP和Servlet对于web容器来说其实是一种东西,虽然它们编写遵循的标准有所不同
极大地简化了代码同时增加了代码的可读性,生产维护成本下降
EJB规范: 三种bean:会话Bean(Session Bean),实体Bean(Entity Bean),消息驱动Bean(MessageDrive Bean)。
EJB: EJB=RMI+JMS(远程消息调用)+JNDI(Bean目录)
rmi 与 对象序列化
rmi通信使用标准的stub、skeleton机制,远程对象的stub充当远程对象的本地代理,调用程序将调用本地stub方法,而stub方法负责调用远程对象的方法,stub对象具有的接口同远程对象的接口一样
EJB和其它组件一样,不过遵循了某些规范而已
但是这些规范更多的是为充分利用机器并提高性能为主要目的的
SOA
面向服务的构架
中间件:中间件是业务逻辑层的应用软件
是处理业务数据与客户端之间业务逻辑的一种应用软件
一种提供网络服务的服务器端应用软件
举个非常简单的例子,网上银行,某个人想用IE进入工行的账户,然后转帐
在这个例子中,客户端表示层显然是IE,数据持久层显然是银行的核心数据库
那么中间件是什么?中间件就是提供这种服务的系统
那么什么是API?
简单地说就是Application Programming Interface,应用程序编程接口
在java里面,就是一些已经写好了的类打成的包。工具集,也可以是对外提供业务逻辑服务的Contoller的方法