WEB SERVICE 基础及深入应用

WEB SERVICE 基础及深入应用

由于最近比较闲,就开始打算学习点知识和技术。目的是为了巩固知识和扩宽自己的知识面。刚开始学习摸不到头脑,总是学着找着,浪费了很多时间。通过这几天的学习,把自己学的知识总结一下,写成博客,不为别的,只希望自己下次学习的知识能有一个系统的学习框架。不用在东找西凑了。这几天的学习的知识是web service ,为什么第一次学习选这个东西那?或许是缘分,或许是天注定。下面听我慢慢的道来。(有说的不对的地方,请多多指教和改正,我会努力的去学习的)

1.为什么引进web service 技术?

随着IT行业的发展,技术在突飞猛进,各种各样的语言java、C#、C\C++等等,还有各种平台的jsp、php、asp.net。由于web service 出现之前,我们可能在Internet上建立大量的应用程序。但是没个应用程序之间交互比较困难。或者一个大的ERP系统中,含有很多子系统,比如说OA,财务等等,但是ERP中有很多相同的东西,如果说相同的的东西和沟通的东西每个子系统都开发一遍,费时费力。或者说,一个大的项目中,子系统开发的语言和平台不一样,如:一个是java,一个是asp.net的话,两个子系统沟通就会很有困难。就是时代发展趋势,技术发展的结果吧。
说起web service ,首先要提一下SOA结构,SOA是个什么样的结构那?SOA  是Service /Oriented architecture的简称,成为面向服务体系结构,也是一个组件( Component,是对数据和方法的简单封装,理解这个概念之后,你对SOA就有了初步的了解)模型。为啥回提出SOA这个结构那,就像上面说的那样,技术的发展。SOA,我在这里比喻成活字印刷术,你能理解活字印刷术的由来,你就会理解了SOA的由来了。
SOA有三部分组成:服务提供者、服务注册中心、服务消费者,三者的关系如下图所示:

SOA的特点:松散耦合、粗粒度服务、标准化接口、无状态服务。
SOA实现的技术有:CORBA组件、DCOM组件、远程调用(RMI)方法、web service 组件、jini组件。
以上对SOA稍微介绍了一下,有兴趣的可以学习一下其他组件。web service是基于SOA结构的。web service 提供的服务有B2B(企业到企业)、B2C(企业到客户)、P2P(点到点)。

2.web service 的原理:

  web service 的工作原理简单的说就是HTTP传输XML格式的文件。
详细的来说工作流程的话:第一步:client 端需要一个服务,不知道去那里调用,可以去DUUI上去查找。查到需要的服务。第二步,然后HTTP发出请求,服务器看到请求后立即返回一个WSDL的描述文档。第三步,客户端看到文档信息后,却掉了调用的某个方法A,此时发送HTTP请求,然后请求的信息就是SOAP信息,其中可能包含A方法需要的参数。服务器收到了SOAP信息后,经过服务器内部方法的处理后,将返回的结果封装成SOAP信息,返回到客户端。这样客户端就得到了自己需要的信息。这个过程就完成了。详细过程如下图

下面给介绍一下UDDL、WSDL、SOAP及XML
UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。UDDI对我们开发的时候不常用到。但是,你写的服务要发布到外网上为别人提供的时候,掌握UDDI是不可少的。 
WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。有兴趣的可以看一下WSDL的节点信息 http://blog.csdn.net/posonrick/article/details/45580355 。在开发中,也可以直接 http:xxxxxx/service?wsdl,直接能看到相应的信息。
Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。有兴趣的可以看一下SOAP的知识 
XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。

3.web service 的目的及优点

通过以上原理的介绍后,咱们总结得到一下内容。
web service的主要目的为了达到跨平台互操作性,能达到这样的目标主要的原因在与,它完全基于XML、XSD。
优点1:跨过防火墙通信。能跨防火墙的主要原因还是依赖于HTTP协议80端口。
优点2:跨平台和跨语言。这部分的优点主要来自HTTP协议和基于XML的SOAP的跨平台及跨语言的操作。可以实现不同应用程序和在不同系统平台上开发出来的应用程序之间通信。与RMI、DOCM、CORBA最大的不同就是:Web Service 以 SOAP 作为基本通信协议从而避免了复杂的协议转换.
平常面试总会问道web service 与.NET Remoting的对比。Remoting只适用于.Net。.net remoting是用传输层协议tcp封装的,所以可以以二进制传输数据,效率高;.net remoting基于.net的反射机制,只方便.net使用(其它语言反射机制实现不同,有的根本没有反射);
web service 与.Net Remoting 技术结合推进的新的技术就是WCF.

4.web service的应用

4.1 web service 的搭建及调用

搭建步骤:创建、发布、调用。详细过程可以查考 http://blog.csdn.net/yexuanbaby/article/details/9029605/

4.2 web service 应用,返回的类型

1.简单的类型(int、string等)。这是比较简单的类型,网上很多例子都讲了这种情况
2.一个对象。如student 对象,需要在App_code创建student类,此类属性设置成编译。
3.泛型集合。如list<student> ,这个是.net特有的,在客户端,可以用对应的对象泛型接受,也可以用数组接受。

4.Dataset。 在返回的结果中xml格式的文件,有冗余。数据量大,一般不实用。
5.其他数据类型Json等等。

4.3 web service调用

1,手动调用,包括get方式和post的方式调用。C# 后台用文件流的方式调用。
2, js的调用,包括get方式和post的方式。js操作基类为  Microsoft.XMLDOM类。http://www.cnblogs.com/Ren_Lei/archive/2010/07/14/1777343.html

4.4 web service 上传下载图

数据传输是二进制的方式。

4.5 大量数据的传输

1.异步能解决一部分
2.序列化和反序列号调用解决
有兴趣的可以看看这个http://www.cnblogs.com/blueskybcl/archive/2010/06/03/1750421.html。

5.web service 的安全性

关于web service 的安全问性,
 第一、禁止匿名访问,对WebService进行认证,这步主要是通过操作系统的安全机制来实现的,也就是只有满足一定要求的帐号才能访问到服务器,才能访问IIS,这个可以通过访问我以前的随笔 C#调用Web Service时的身份验证 ,在这里有详细的说明,在些不我说了;
第二、为了防止在信息传输过程中,信息被改动。原理是这样的,客户端用某种方式加密,然后发送soap信息。服务端也用相同的加密方式生存SOAP信息,然后对比,如果一样则没有被改动。

以上如有不对的地方,请多多指点。
以上是本人为了学习总结,如有侵权,请及时告知。谢谢!
以上参考网站有:http://www.cnblogs.com/Ren_Lei/archive/2010/07/14/1777343.html
http://www.cnblogs.com/blueskybcl/archive/2010/06/03/1750421.html。
http://blog.csdn.net/yexuanbaby/article/details/9029605/


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chiasing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值