web server课程设计分析Word文件下载.docx
《web server课程设计分析Word文件下载.docx》由会员分享,可在线阅读,更多相关《web server课程设计分析Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
2.2分工
我主要负责连接件和配置的设计,组员负责构件设计,我根据他们设计的程序进行思考后对整个webserver系统进行了描述与总结。
3程序环境简介
本程序运行在Windows7系统下,采用Eclipse作为开发工具,使用Java作为开发语言,采用Apache的Tomcat搭建web服务器,实现web服务。
3.1WebServer简介
通过网页搭建服务器,Web服务器可以解析HTTP协议。
当Web服务器接收到一个HTTP请求,会返回一个HTTP响应,例如送回一个HTML页面。
为了处理一个请求,Web服务器可以响应一个静态页面或图片,进行页面跳转,或者把动态响应的产生委托给一些其它的程序例如CGI脚本,JSP脚本,servlets,ASP脚本,服务器端JavaScript,或者一些其它的服务器端技术。
无论它们的目的如何,这些服务器端的程序通常产生一个HTML的响应来让浏览器可以浏览。
3.2Apache简介
Apache是世界使用排名第一的Web服务器软件。
它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。
3.3Tomcat简介
Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现,Tomcat5支持最新的Servlet2.4和JSP2.0规范。
因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
目前最新版本是8.0。
Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器。
4程序架构设计
本程序采用webserver架构,通过发布web端的服务器,再通过将客户端与该服务器的http网址相绑定,通过接口来访问服务器对应的方法,达到web服务的作用。
其中web端和客户端都是该系统的构件,web端由Apache和Tomcat所搭建的web服务器。
webserver是一种基于SOAP通信协议的服务框架,所以该系统的连接件是SOAP协议。
程序使用wsdl语言描述了该系统的函数关系。
5构件设计
构件包含客户端和服务器。
5.1服务器端设计
5.1.1Apache搭建
通过系统图形化界面方式进行搭建,其中自动生成
等xml文件
其中server.xml对整个系统进行描述,用于生成系统代码。
5.1.2服务器java代码
首先编写了一个加法程序,利用java的功能自动生成服务端的加法服务:
intadd(inta,intb);
根据该函数通过系统生成对应的服务端代码。
原程序结构
其中服务器共生成了如下代码
其中Cal这个类将是原函数之中的add方法在生成的服务端之中被重写为接口方法。
以便客户端进行调用。
剩下的都是为客户提供访问服务的方法。
其中CalServiceLocator.java这个类里面也描述了http服务网址和远程服务的方法。
服务端自动包含了系统引用的包,Apache服务器的包和网络应用的包。
5.1.3服务端wsdl文件
可以看到服务端还生成了一个cal.wsdl文件,这个文件是接口描述。
可以看到该文件描述了服务的http网址和其对应的方法。
在客户端进行调用的时候会根据这个描述文件进行相应的调用。
5.2客户端设计
客户端由服务端的wsdl文件自动生成,其中包含了如下文件
其中Cal.java是我们的加法方法
CalServer.java是调用服务的方法
可以看到这个接口继承于rpc的类包,所以我认为是这是服务调用的方法。
CalServiceLocator.java类和CalSoapBindingStub.java类里面封装了服务启动以及运行的具体方法。
若想调用服务器端的加法,我们需要新建一个client包,其中包含了调用服务器的主代码。
可以看到其中声明了CalServerLocator类对象service,声明了一个URL对象url,并且用服务器端的wsdl的地址进行初始化,之后通过CalSoapBindingStub这个类生成sutb对象,并且用service和url对其进行初始化操作,客户端与服务器进行绑定。
绑定成功之后可以调用stub的add方法进行计算。
通过这个绑定的文件名称,我们可以发现是通过Soap协议进行绑定,传输,这也说明了webserver是基于Soap协议的一种架构。
6连接件设计
由于webserver基于Soap协议进行数据传输,故这个系统中的连接件就是Soap协议(当然包括http协议)。
具体在程序之中实例化表现为CalSoapBindingStub.java这个类,该类的构造函数中用wsdl地址和CalServiceLocator类对象进行初始化,将服务端与客户端进行绑定,达到了连接两端的作用,使客户端可以调用服务器的方法进行计算。
7配置设计
本系统由于比较简单,只有一个客户端与一个服务器进行连接通讯,所以只配置了点对点的连接方式。
Webserver的拓扑结构应该为三角结构,分别为客户端,服务端和注册端。
由于是比较简单的web服务,目前市场的服务器计算吞吐量很大,点对点的服务让服务端不能满载,比较浪费资源,可以采用总线型或者星形的拓扑结构来增强服务器的带宽,以增强计算能力。
8实验结果
未开启服务运行客户端,客户端的add方法无法加载,但是system.out.println();
未经过服务器,故函数可以进行调用,打印输出。
可以看到命令行里面有很多的红色代码,说明没有开服务器是不能运行客户端的。
开启服务端的正确结果
可以看到客户端调用服务端的add方法,计算1+555等于556。
说明程序运行成功。
9心得体会
通过这次试验,我明白了webserver的开发过程,通过Apache服务器进行搭建web端的服务,再通过服务端的wsdl描述语言生成客户端与服务器之间的连接件,再通过调用连接件的对象方法对远程的服务器进行调用,达到web服务的目的。
在写报告的时候我们将连接件误认为中间件,将Apache的服务器当做了连接件。
最开始我们还做了linux的RPC调用,在本次实验的服务端的CalServer.java里面写了继承于rpc包,所以一直认为webserver和RPC一样,我都是客户端和服务器进行通讯达到服务的目的。
经过网上的学习,我发现还是有区别的。
下面是RPC和webserver的对比。
可以看到,RPC模型中多了一个stub的组件,这个是约定的接口,也就是server提供的服务。
对客户端来说,有了这个stub,RPC调用过程对clientcode来说就变成透明的了,客户端代码不需要关心沟通的协议是什么,网络连接是怎么建立的。
对客户端来说,它甚至不知道自己调用的是一个远程过程,还是一个本地过程。
然后,前面说的理解协议,处理连接的工作,总是要有人做的,这个工作就是在下面的RPCInterface里完成的。
而webservice接口就是RPC中的stub组件,规定了server能够提供的服务,这在server和client上是一致的,但是也是跨语言跨平台的。
同时,由于webservice规范中的WSDL文件的存在,现在各平台的webservice框架,都可以基于WSDL文件,自动生成webservice接口。
webservice框架,根据所选的平台有所不同,比如本次试验使用的就是Apache的服务架构。
它做的事情也和RPCInterface是一样的,SOAP协议负责解析协议,HTTP协议负责处理连接。
就编程角度来说,RPC和Webserver区别不大,RPC需要编写一个远程过程调用描述语言的*.x文件,通过rpcgen命令生成对应的服务端和客户端的结构,再更改其中的函数,通过gcc编译再运行。
而Webserver也是根据wsdl文件生成相应的webserver结构,再去编写详细的函数进行调用。
两者都是通过一个配置文件自动生成框架再去编写代码实现服务。