002web服务原理

来源:互联网 发布:python 网络设备巡检 编辑:程序博客网 时间:2024/05/01 06:59

web服务是一个网络程序,有效的解决分布式网络程序的开发


我们做网络程序,先要把socket做好

如果clint要调用server的方法,我们一般是发送一个编码,对这个编码的解读需要用到一个 “名字”数据库来查找对象——JNDI。


例如 服务器端有个对象叫做 “theObject”,这个对象有一个方法"String themethd()",theObject在JNDI中注册了一个名字“theObject1”

客服端通过socket发送了一个编码 “Object:theobject1,methd:themthd,return :String”,

服务器端接收编码,并解读,理解了客户端是要调用theObject1.themethd,

服务端访问 JNDI ,通过theObject1找到了theObject,,然后通过反射或者代理的方式调用theObject.themethd,

之后返回给客户端结果。


以上的过程很复杂,我们要做很多的工作,于是人们就想让这个过程标准化,

标准架构的思想:

1、用面向对象的方式调用服务器对象的方法——基于接口

2、采用XML或者更好的技术来描述服务的契约(wsdl),以便在客户端能够实例化对象(其实是一个伪对象,伪对象负责编制传输的消息,并交给底层的socket传输到服务器端)

3、采用XML或更好的技术来描述传输的消息——传输协议soap

4、使解读服务契约和解读协议的类库标准化,并对程序员透明

最终,程序员只需要一个接口,一套标准框架及其API,就能做分布式的开发了。例如程序员只需要学习web服务的API就能用她做分布式的软件了。


web服务主要采用XML技术,所以传输数据量稍微有点大,由于XML的描述性非常的好,因此低层类库非常的简约,当然并不简单。

因为描述的是对象数据、方法名称和参数等“静态“数据,不会对处理过程进行描述,我个人觉得:

1、用XML相比其他描述技术,并不会对带宽产生很大的影响,

2、描述性更好,可跨平台,语言无关性

3、可以和面向对象编程很好的结合,序列和反序列的过程不会对速度产生很大的影响。

4、web服务应该是企业级应用集成的标准