暑假在学webservice基本原理,基本属于...

webservice学习笔记 理解篇 - Ivan - ITeye技术网站
博客分类:
源自:/j//423.shtml
命令行开发过程
&& 通过以上的学习,我们知道如何在ant脚本和ide环境中开发一个简单的webservice.
但是作为搞技术的人特别是搞c的人来看,上面的过程隐藏了太多的东西,
对我们有钻研精神的人,自然就想搞清楚脚本背后的过程。
假设我们的机器上没有ide环境和ant工具,
我们如何“手工”编译出自己的webservice呢?
这就是本节要讲述的内容--只用命令行工具开发webservice.
0、设置环境变量
把jdk和javaee的路径如
D:\Java\jdk1.6.0
D:\Sun\SDK\bin加到系统的path变量中去
1、建立项目目录
首先建立一个项目的目录,名为WebTest,项目目录下又包含三个子目录
& src\&&&&& 本目录用于存放源代码,
& build\&&& 本目录用于存放输出的文件
& deploy\&& 本目录用于对服务器打包
&&
2、编写服务器类实现文件
& 在项目的src目录下建立一个个子目录endpoint,
& 在这个endpoint子目录下新建一个Hello.java文件,内容如下
/*src\endpoint\Hello.java文件&&
& 提供webservice的服务器端实现类
import javax.jws.WebS
import javax.jws.WebM
@WebService
public class Hello
@WebMethod
public String getHello(String name)
return "Hello " + name + "!";
3、编译服务器类
①在build目录下建立一个子目录classes
&& ②在命令行执行如下命令
&&& cd WebTest& ;进入项目目录
&&& javac -classpath d:/Sun/SDK/lib/javaee.jar -d ./build/classes src/endpoint/Hello.java& ;编译服务器类
&& 执行完后会产生一个build\classes\endpoint\Hello.class文件
&
4、生成wsdl文件
①在build目录下建立一个子目录generated
②生成wsdl文件,执行
& wsgen -cp ./build/classes -keep -d ./build/classes -r ./build/generated -wsdl& endpoint.Hello
执行完成会在./build/generated产生两个文件
HelloService.wsdl
HelloService_schema1.xsd
并且在\build\class\endpoint下建立一个jaxws目录,下面有4个文件
GetHello.java&&&&&&&&&&&&&&&&&&&&&&&
GetHello.class
GetHelloResponse.java
GetHelloResponse.class
这些文件与与前面所说的ant脚本中生成的
D:\Sun\SDK\domains\domain1\generated\ejb\j2ee-modules\endpoint_Hello\endpoint\jaxws 下的文件相同
5、将服务器打包,做成war文件
①建立打包所需要的目录
&&& 在项目的deploy目录下建立一个子目录/WEB-INF,
&& WEB-INF子目录下再建立两个子目录
&&& classes/& 用于存放服务器端类
&&& wsdl/&&&& 用于存放wsdl文件
②将各输出文件或目录拷贝到相应的目录下
& (1)把build\classes\endpoint整个目录拷贝到deploy/WEB-INF/class目录下
& (2)把build\generated目录下的两个文件
&& HelloService.wsdl、HelloService_schema1.xsd拷贝到
&&&&& deploy/WEB-INF/wsdl目录下
③在deploy/WEB-INF/ 目录下新建一个web.xml文件,内容为
&?xml version="1.0" encoding="UTF-8"?&
&web-app xmlns="/xml/ns/javaee"
xmlns:j2ee="/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5"
xsi:schemaLocation="/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd"&
&description&WebTier for the Hello Service&/description&
&display-name&HelloWAR&/display-name&
&description&Endpoint for Hello Web Service&/description&
&display-name&HelloWebService&/display-name&
&servlet-name&Hello&/servlet-name&
&servlet-class&endpoint.Hello&/servlet-class&
&load-on-startup&0&/load-on-startup&
&/servlet&
&servlet-mapping&
&servlet-name&Hello&/servlet-name&
&url-pattern&/HelloService&/url-pattern&
&/servlet-mapping&
&session-config&
&session-timeout&54&/session-timeout&
&/session-config&
&/web-app&
④将service打包,执行
& (1)cd WebTest\deploy&& ;进入打包目录
& (2)jar cvf hello.war *& ;将当前目录下的所有内容打包到hello.war文件中
&
6、将service 类发布到网络服务器上
①启动sun 服务器
&& 方法为
& 开始-&程序-&Sun Microsystems-&Application Server PE 9-&Start& Default Server
②在项目目录下建立一个passwd文件,内容是sun服务器admin用户的密码,例如
& AS_ADMIN_PASSWORD=testtesttest
③将hello.war发布到服务器上,执行
& (1)cd WebTest& ;进入项目目录
& (2)发布服务器包,注意这个命令是在一行执行的,
& 我为了书写方便而断行。分号后面是注释
& asadmin deploy
&&& --user admin&&&&&&&&&&&& ;管理员用户名
&&& --passwordfile passwd&&& ;密码文件名,就是我们刚才写的passwd文件
&&& --host localhost&&&&&&&&
&&& --port 4848&&&& ;管理端口号
&&& --contextroot myhello&& ;上下文根名称
&&& --upload=true&&&&
&&& --target server&&&
&&& deploy/hello.war
④在浏览器中输入地址
& http://localhost:8080/myhello/HelloService?WSDL,
& 如果浏览器能显示出正确的内容,就说明成功。
7、生成客户端的stub类
①在项目的build\classes目录下建立一个stub子目录
②执行
& (1)cd WebTest&& ;进入项目子目录
& (2)wsimport -keep -d ./build/classes/stub http://localhost:8080/myhello/HelloService?WSDL
执行完成后会在build/classes/stub下建立一个endpoint目录,下面有这些文件
& GetHello.java
& GetHelloResponse.java
& Hello.java
& HelloService.java
& GetHello.class
& GetHelloResponse.class
& Hello.class
& HelloService.class
& ObjectFactory.class
& ObjectFactory.java
& package-info.java
& package-info.class
这些文件和ant脚本中import执行的结果一样
8、编写客户端测试程序
在项目的src目录下建立一个子目录client,在这个目录下面建立一个
Client.java文件,内容为
// src\client\Client.java文件 调用服务器提供的webservice的测试类
import javax.xml.ws.WebServiceR
import endpoint.HelloS
import endpoint.H
public class Client
@WebServiceRef(wsdlLocation="http://localhost:8080/myhello/HelloService?WSDL")
static HelloS
public static void main(String[] args)
Client client = new Client();
client.doHello();
public void doHello()
Hello port = service.getHelloPort();
String ret = port.getHello(System.getProperty("user.name"));
System.out.println("Hello result = " + ret);
catch(Exception e)
e.printStackTrace();
}
9、编译客户端程序
(1)cd WebTest& ;进入项目目录
(2)javac -classpath ./build/classes/d:/Sun/SDK/lib/javaee.d:/Sun/SDK/lib/appserv-ws.jar -d ./build/classes/stub src/client/Client.java&
执行成功后会在F:\exercise\java\WebTest\build\classes目录下建立一个
client目录,下面有一个Client.class文件
10、运行客户端程序
(1)cd WebTest\build\classes\stub& ;进入client的上级目录
(2)set& APPCPATH=.&&&& ;设置环境变量APPCPATH,不然运行appclient程序时会出一堆莫名奇妙的错误
(3)&appclient client.Client运行测试程序,结果为
& Hello result = Hello Administrator!
八、小结
开发webservice的基本步骤为
1、编写服务器端,要点有
①导入WebService包和WebMethod包
&& import javax.jws.WebS
&& import javax.jws.WebM
②实现的服务类前加@WebService符号
③为了代码清晰,类提供的公开方法前加@WebMethod符号,这个不写对编译也没影响,
&
2、编译服务器端,要点为
①javac命令的classpath选项中要有javaee.jar的路径,如
& javac -classpath d:/Sun/SDK/lib/javaee.jar -d ./build src/endpoint/Hello.java
②用wsgen命令生成wsdl文件.
③将服务器端打包
注意如果是sun的服务器,那么把service类直接编译到
javaee5***目录\domains\domain1\autodeploy下,可以自动完成②和③的工作。
我们介绍的sun自带的入门脚本就是这么做的。
3、在客户端机器上自动生成stub类,要点为
①客户机上必须也装有jdk和javaee5
②用wsimport工具将服务器传过来的wsdl文件转换成本地的stub类
4、编写客户端调用代码,要点:
①导入WebServiceRef包
& import javax.xml.ws.WebServiceR
②导入本地生成的stub类,如
& import endpoint.HelloS
& import endpoint.H
③指明服务器的wsdl路径
& @WebServiceRef(wsdlLocation="http://localhost:8080/myhello/HelloService?WSDL")
④声明一个静态的service对象
& static HelloS
⑤对要调用的远程方法声明一个代理对象,通过代理来调用真正的远程方法
& Hello port = service.getHelloPort();
&&&& String ret = port.getHello(System.getProperty("user.name"));
5、编译客户端调用程序,注意classpath参数中要有
①stub类的路径
②javaee.jar的路径
③appserv-ws.jar的路径
6、用appclient执行客户端程序,要点为
①进入到客户端程序的上级目录
②把APPCPATH的值设置为当前目录" . "
③appclient的第一个参数为客户端程序名,
&& 后面的参数是传给客户端程序本身的命令行参数。
/*title: web service入门学习笔记(九)
**date:
**author:laomai
**url: http://blog.csdn.net/laomai/
*/
九、本文中用到的文件
1、WebTest项目文件列表
WebTest\passwd 保存密码的文件,手工建立
WebTest\src 子目录 手工建立,内容为
endpoint\Hello.java& 服务器类的实现文件
client\Client.java&& 客户类的实现文件
WebTest\build
generated 子目录,手工建立,内容为
& HelloService.wsdl&& 由wsgen命令生成
& HelloService_schema1.xsd& 由wsgen命令生成
classes 子目录,手工建立,内容为
& endpoint\Hello.class& 由javac命令生成
& endpoint\jaxws子目录,由wsgen命令自动生成,内容为
&&& GetHello.java
&&& GetHelloResponse.java
&&& GetHello.class
&&& GetHelloResponse.class
& stub 子目录,手工建立,内容为:
&& client\Client.class 由javac命令生成
&& endpoint 子目录 由wsimport命令自动生成,内容为:
&&& GetHello.java
&&& GetHelloResponse.java
&&& Hello.java
&&& HelloService.java
&&& ObjectFactory.java
&&& package-info.java
&&& package-info.class
&&& GetHello.class
&&& GetHelloResponse.class
&&& Hello.class
&&& HelloService.class
&&& ObjectFactory.class
WebTest\deploy子目录 手工建立,内容为
hello.war 将WEB-INF子目录打包后生成的文件,由jar命令生成
WEB-INF&& 打包的输入目录,手工建立。内容包括:
& web.xml&& 手工建立
& classes\endpoint子目录 为build\classes\endpoint的拷贝
& wsdl子目录,由build\generated拷贝而来
2、生成的HelloService.wsdl文件的内容
&?xml version="1.0" encoding="UTF-8" standalone="yes"?&
&definitions targetNamespace="http://endpoint/" name="HelloService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://endpoint/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"&
&xsd:schema&
&xsd:import namespace="http://endpoint/" schemaLocation="HelloService_schema1.xsd"/&
&/xsd:schema&
&message name="getHello"&
&part name="parameters" element="tns:getHello"/&
&/message&
&message name="getHelloResponse"&
&part name="parameters" element="tns:getHelloResponse"/&
&/message&
&portType name="Hello"&
&operation name="getHello"&
&input message="tns:getHello"/&
&output message="tns:getHelloResponse"/&
&/operation&
&/portType&
&binding name="HelloPortBinding" type="tns:Hello"&
&soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/&
&operation name="getHello"&
&soap:operation soapAction=""/&
&soap:body use="literal"/&
&soap:body use="literal"/&
&/operation&
&/binding&
&service name="HelloService"&
&port name="HelloPort" binding="tns:HelloPortBinding"&
&soap:address location="REPLACE_WITH_ACTUAL_URL"/&
&/service&
&/definitions&
浏览: 117723 次
来自: 深圳
亲,第二个方法,应该是 i&ary.length-1 吧 ...
好写法,赞
数据查询出来后,如果你删除了其它几条数据人,我在不重新刷新页面 ...WebService 学习(1)
WebService 学习(1)
发布时间: 7:41:07
编辑:www.fx114.net
本篇文章主要介绍了"WebService 学习(1)",主要涉及到WebService 学习(1)方面的内容,对于WebService 学习(1)感兴趣的同学可以参考一下。
Web Service &Web Services
Web Service是一种服务导向架构的技术,通过标准的Web协议提供服务,目的是保证不同平台的应用服务可以互操作。Web
Services其实是一套技术的集合, 通过Web Services能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成,是实现Web服务的一种方式,一整套技术。Web
Service可使您的应用程序成为 Web 应用程序。Web Service通过 Web 进行发布、查找和使用。
基础的 Web Service平台是 XML + HTTP。HTTP 协议是最常用的因特网协议,用于不同浏览器之间传输数据。XML 提供了一种可用于不同的平台和编程语言之间的语言。
Web service平台的元素:服务调用协议SOAP (简易对象访问协议),服务描述协议UDDI
(通用描述、发现及整合),服务描述协议WSDL (Web services 描述语言)。
SOAP 指简易对象访问协议SOAP 是一种通信协议SOAP 用于应用程序之间的通信SOAP 是一种用于发送消息的格式SOAP 被设计用来通过因特网进行通信SOAP 独立于平台SOAP 独立于语言SOAP 基于 XMLSOAP 很简单并可扩展SOAP 允许您绕过防火墙
WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。
WSDL 指网络服务描述语言WSDL 使用 XML 编写WSDL 是一种 XML 文档WSDL 用于描述网络服务WSDL 也可用于定位网络服务WSDL 还不是 W3C 标准
UDDI 是一种目录服务,通过它,企业可注册并搜索 Web services。
UDDI 指通用的描述、发现以及整合(Universal Description, Discovery and Integration)。UDDI 是一种用于存储有关 web services 的信息的目录。UDDI 是一种由 WSDL 描述的网络服务接口目录。UDDI 经由 SOAP 进行通迅。UDDI 被构建于 Microsoft .NET 平台之中。
Web Service的优势
平台无关。不管你使用什么平台,都可以使用Web service。编程语言无关。只要遵守相关协议,就可以使用任意编程语言,向其他网站要求Web service。这大大增加了web service的适用性,降低了对程序员的要求。对于Web service提供者来说,部署、升级和维护Web service都非常单纯,不需要考虑客户端兼容问题,而且一次性就能完成。对于Web service使用者来说,可以轻易实现多种数据、多种服务的聚合(mashup),因此能够做出一些以前根本无法想像的事情。
Web service的发展趋势
在使用方式上,RPC和soap的使用在减少,Restful架构占到了主导地位。在数据格式上,XML格式的使用在减少,json等轻量级格式的使用在增多。在设计架构上,越来越多的第三方软件让用户在客户端(即浏览器),直接与云端对话,不再使用第三方的服务器进行中转或处理数据。
Web service详解
Web Service 最基本的组成部分为服务的提供者(Service Provider)和服务的请求者(Service Requester)。这看起来很像 C/S 架构的软件,与之不同的是,Web Service 两端的应用是通过基于标准的 XML 格式的协议进行通信的,这种最常用的协议就是 SOAP(Simple Object
Access Protocol)。当然,web services 不简单地只是按这种方式进行通信。按照 Web Service 的相关标准描述,服务的提供者应该首先通过 WSDL(Web Service Definition Language)和 UDDI (Universal Description, Discovery, and Integration)发布它所提供的服务到一个统注册这些服务信息的存储库中去。这样,服务的请求者就也可以通过 WSDL 和 UDDI 发现到服务提供者提供的服务,并可以通过应用的调用方法来使用这个服务了。
Web 服务所使用的 XML 可以用真正与平台无关的方式来描述任何(所有)数据,以跨系统交换数据,因此转向了松耦合应用程序。而且,Web 服务可以在较抽象的层面上工作,较抽象层面可以按照需要动态地重新评估、修改或处理数据类型。所以,从技术层面上讲,Web 服务可以更方便地处理数据,并且允许软件更自由地进行通信。
从更高的概念层面上讲,我们可以将 Web 服务视为一些工作单元,每个单元处理特定的功能任务。再往上一步,可以将这些任务组合成面向业务的任务,以处理特定的业务操作任务,从而使非技术人员可以考虑一些应用程序,这些应用程序能够在 Web 服务应用程序工作流中一起处理业务问题。因此,一旦由技术人员设计并构建好 Web 服务之后,业务流程架构师就可以聚集这些
Web 服务来解决业务层面上的问题。
有了通用定义的接口和设计良好的任务,重用这些任务就变得更容易了,因而重用这些任务所代表的应用程序也就变得容易了。应用程序软件的可重用性意味着在软件上的投资有了更好的回报,因为可以从同一资源产生更多收益。可重用性使业务人员可以考虑以一种新的方式来使用现有的应用程序,或者以一种新的方式将应用程序提供给合作伙伴,因此可能增加合作伙伴间的业务交易。
Web 服务试图解决的主要问题是数据和应用程序集成的问题,以及将技术性的功能转换为面向业务的计算任务的问题。
Web 服务采用一系列相关协议来描述、传递服务和与服务交互。根据其通常的功能和使用,可以将这一系列协议进一步划分为组。第一组处理消息传递、接口描述、寻址和交付的问题。最有名的是消息传递协议,称为简单对象访问协议(Simple Object Access
Protocol,SOAP)。此协议对消息进行了编码,这样就可以通过传输协议(如 HTTP、IIOP、SMTP 或其他协议)在网络上传递它们。
Web 服务描述语言(Web Services Description Language,WSDL)表示为一系列 XML 语句,这些语句组成了每个服务的接口的定义。另一个正在制订的规范是 Web 服务寻址 (WS-Addressing),它定义了如何在分布式体系结构中唯一地进行
Web 服务寻址和标识 Web 服务。另一个流行的规范是 Web 服务调用框架(Web Services Invocation Framework),在这种框架中,您可以定义任何类型的组件的 WSDL 接口,即使它们没有使用相同的消息传递协议。
下一组协议和规范定义了服务如何公开它们自己以及如何在网络上相互发现。对于要相互查找的服务,统一描述、发现和集成(Universal Description, Discovery and Integration,UDDI)为查找和访问服务定义了注册中心和相关协议。Web
服务检查语言(Web Services Inspection Language)是 UDDI 在不使用注册中心的情况下采用的一种可选机制。
用于 Web 服务的安全性协议是从 Web 服务安全性 (WS-Security) 规范开始的,该规范为安全通信定义了基于令牌的体系结构。以此为基础,有六个主要的组成规范:
Web 服务策略 (WS-Policy) 和相关的规范,定义了关于服务交互方式的策略规则。Web 服务信任(WS-Trust),定义了安全交换的信任模型。Web 服务隐私 (WS-Privacy),定义了如何维护信息的隐私。Web 服务安全会话 (WS-Secure Conversation),定义了如何使用在Web 服务策略 (WS-Policy)、Web 服务信任 (WS-Trust) 和 Web 服务隐私 (WS-Privacy) 中定义的规则,以在用于交换数据的服务之间建立安全会话。Web 服务联盟 (WS-Federation),定义了分布式标识的规则以及如何对其进行管理。Web 服务授权 (WS-Authorization),定义了如何处理对访问和交换数据的授权。
Web service如何构建
在构建应用程序时有很多考虑 Web 服务的方式。在最基本的层次上,高级通信协议允许应用程序相互交谈。在过去几年里,这一层次已经取得了巨大的进展,出现了许多工具,通过使用这些工具,软件开发人员可以编写交互的
Web 服务并构建复杂的应用程序。通常,这一层次的特点是服务之间的一对一直接交互或比较少的服务相互交互。
然而,如果只是将 Web 服务作为通信协议就未能实现真正的面向服务的体系结构 (SOA)。 SOA 描述了服务的整个系统如何动态地相互查找,如何聚集在一起执行某些应用程序,以及如何按照多种方式进行组合。该模型鼓励技术和软件的重用,从而发展了设计、开发和使用应用程序的方式。它使分布式计算更接近于现实。在这一层次上,软件开发人员需要考虑
SOA 模型并通过此模型来设计他们的分布式应用程序。这一层的特点是使用各种技术来支持服务的分布式计算,比如 企业服务总线 (ESB),它是一个通用的分布网络,可以与服务一起协同工作。
而最高的层次是把 SOA 模型和许多组件服务看作是构件,这些构件可以装配成作为一个整体的某些部分并放入完整的应用程序中,而不是用传统的方法来编写一行一行的代码。通过检验连接接口,我们可以在不曾真正编写一行代码的情况下构建整个应用程序。事实上,按照这种方式,甚至还可能得到直接代码,因为服务可以通过多种不同的语言和平台进行编写。可以将构件放在一起来组成定义应用程序的执行方式的操作工作流,而且还可以用其他工具来监控每个服务或服务组的工作流的有效性。在这一层次上,开发人员可以把常规编程语言放在一边,而使用模型驱动的体系结构
(Model-Driven Architecture) 来帮助他们构建设计更精确的应用程序。然后,这样设计的应用程序就可以运行在分布式系统(如 ESB)之上。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:WebService;WebService的宗旨是创建不需要用户界面就;举例说明它的优点,假如你正在为一家股票投资公司创;WebService是松耦合的,它与服务器端和客;创建WebService必须保证的是,服务器端和;WebService是如何工作的;WebService允许两个程序之间交换XML文;WebService架构包括以下特性:;1;2;3;如
Web Service
Web Service的宗旨是创建不需要用户界面就能与其他应用程序交互的Web应用程序。
举例说明它的优点,假如你正在为一家股票投资公司创建网站,你并不需要把不同证劵交易所得数据库与自己的后台数据库进行整合,因为你的应用程序可以使用Web Service,并使用XML格式交换数据。
Web Service是松耦合的,它与服务器端和客户端使用的操作系统、编程语言都无关。假如你既拥有客户端又有服务器端的访问和管理权,这种情况更适合用.NET 的Remoting技术,而不是Web service。
创建Web Service必须保证的是,服务器端和客户端都要支持HTTP、SOAP(简单对象访问协议)和XML等行业标准协议。
Web Service是如何工作的
Web Service允许两个程序之间交换XML文档。在这个架构的顶层,微软实现了一个远程过程调用(Remote Procedure Call,PRC)模型。
Web Service架构包括以下特性:
1。WebServcie的服务器端和客户端应用程序都能够连接到互联网。
2。用于进行通信的数据格式必须遵守相同的开放标准,并且在大多数情况下,这个标准几乎总是SOAP。
3。客户端和服务器端的系统是松耦合的。即Web Service不关心客户端和服务器端所使用的操作系统、对象模型或者编程语言。只要Web Service和使用Web Service的应用程序都能够发送和接收遵守适当协议标准的消息即可。 下图为Web Service流程的逻辑架构
如图所示,一个Web Service使用着会向Web Service发出一个调用请求。使用者会认为它通过Internet直接和Web Service进行交流,当然这实际上是个幻象。实际上,真正的调用由代理类完成。代理类对于Web Service使用者来说是一个本地类。代理会处理所有的负责的复杂架构,包括通过Internet发送请求道服务器、从web Service取回结果并呈现给Web Service使用者。
由于代理类在之前已在消费程序中注册,所有一切工作才可以顺利进行。注册有开发消费程序的程序员完成。
开发Web Service
开发Web Service的流程与开发网页的流程近乎一致:
1。所有构成网页和服务的源文件都是文本文件,它们可以使用任何文本编辑器创建和修改。而类文件可以在控制台命令行中通过命令工具进行编译。
2。可以在vs2005及以上版本中创建网页和Web Service
3。网页和Web Service既可以使用代码隐藏模型,也可以使用内联编码(inline coding)模型。Web Service中不需要使用代码隐藏技术,因为Web Service并不包括任何可视化内容。
4。网页和Web Service都充分利用了CLR和.NET Framework。
.aspx文件用于定义网页,而.asmx文件用于定Web Service,我们可以吧Web Service想象成类,类中的一些方法通过Internet被暴露给客户端。
客户端应用程序如果使用Web Service,必须先创建一个代理。代理是要调用的真正代码的替身,它负责在机器边界引导调用。在代理在客户端应用程序中注册后,客户端应用程序调用方法就如调用本地对象一样。代理接受该调用,并以适当格式封装调用,然后以SOAP请求发送调用到服务器。当服务器返回SOAP包给客户端后,代理会对包进行解密,并且如同从本地对象的方法返回数据一样将其返回给客户端应用程序。如下图所示:
协议与标准(HTTP、XML、SOAP)
HTTP:TCP/IP协议的最上层是超文本传输协议(HTTP)。它是用于在网络之间使用服务器和浏览器实现通讯,主要包括在服务器和浏览器建立连接,并将HTML传输到客户端浏览器。当客户端向服务器发送HTTP请求后,服务器就开始处理请求。通常,会返回HTML页面,然后通过浏览器呈现。然而对Web Service而言,服务器返回的是SOAP消息,消息中包含了被调用的Web Service方法的返回数据。
HTTP请求从请求的浏览器出传递名称和值到服务器,这种请求包括GET和POST两种。
GET请求中,名称和值会被附加到url上,数据是未加密的。当所有需要传递的数据可以使用名称和值成对表示,而且只需要传递少量字段,字段长度较短时,比较适合GET请求。另外,如果不需考虑安全问题时,也可以使用GET。 POST请求中,配对的名称和值是作为请求消息的一部分发送的。当有大量字段或者参数很长时,适合使用POST请求。从安全方面看,POST比GET更安全,因为POST请求可以被加密。和GET请求一样,POST请求无法传递复杂的数据类型(如类、结构体和DataSet)。
XML:是有W3C公布的开放标准的一种描述数据的方法。
XML和HTML十分类似。不同的是HTML使用的是预定义元素,这些元素规定了HTML在浏览器中如何显示,而XML的元素则是由开放人员自己定义的,所以几乎所有的数据都可以表示。制定XML的目的是为了使其成为一种平台无关、语言无关的标准。
XML架构(Schema)是用于定义元素已经XML文档中或者许多XML之间元素与元素之间关联的文件。在架构中将指定元素名称和内容类型。HTML与XML的显著差别:大多数HTML读取器有很好的容错能力,而XML读取器则完全不同,所以XML文件的格式必须正确。另外,XML元素都是小写的。
SOAP:(simple object access protocol,简单对象访问协议)是一种用于控制数据交换的XML语法。它是简单的、轻量级的信息交换协议。SOAP消息有消息内容和一个或多个头模块组成,并且封装在SOAP envelope中。
SOAP使用XML语法来格式化内容。在设计上,SOAP尽可能简单并且提供最小化的功能。
SOAP不需HTTP的GET和POST,它不受“名称/值”对的限制,我们可以使用它来发送复杂的对象,包括DataSet、类和其他对象。
SOAP的缺点:SOAP消息十分冗长,因此如果存在带宽或者传输性能的问题,建议使用POST或GET
Web Service的宗旨是创建不需要用户界面就能与其他应用程序交互的Web应用程序。
举例说明它的优点,假如你正在为一家股票投资公司创建网站,你并不需要把不同证劵交易所得数据库与自己的后台数据库进行整合,因为你的应用程序可以使用Web Service,并使用XML格式交换数据。
Web Service是松耦合的,它与服务器端和客户端使用的操作系统、编程语言都无关。假如你既拥有客户端又有服务器端的访问和管理权,这种情况更适合用.NET 的Remoting技术,而不是Web service。
创建Web Service必须保证的是,服务器端和客户端都要支持HTTP、SOAP(简单对象访问协议)和XML等行业标准协议。
Web Service是如何工作的
Web Service允许两个程序之间交换XML文档。在这个架构的顶层,微软实现了一个远程过程调用(Remote Procedure Call,PRC)模型。
Web Service架构包括以下特性:
1。WebServcie的服务器端和客户端应用程序都能够连接到互联网。
2。用于进行通信的数据格式必须遵守相同的开放标准,并且在大多数情况下,这个标准几乎总是SOAP。
3。客户端和服务器端的系统是松耦合的。即Web Service不关心客户端和服务器端所使用的操作系统、对象模型或者编程语言。只要Web Service和使用Web Service的应用程序都能够发送和接收遵守适当协议标准的消息即可。 下图为Web Service流程的逻辑架构
如图所示,一个Web Service使用着会向Web Service发出一个调用请求。使用者会认为它通过Internet直接和Web Service进行交流,当然这实际上是个幻象。实际上,真正的调用由代理类完成。代理类对于Web Service使用者来说
包含各类专业文献、各类资格考试、高等教育、幼儿教育、小学教育、中学教育、文学作品欣赏、外语学习资料、WebService学习83等内容。 
 webservice基础知识与学习心得_IT/计算机_专业资料。接受webservice环境配置,命令用法之类的。Webservice 基础知识常见术语 WSDL WSDL 即&Web Services Description Langu...  Webservice学习笔记_计算机软件及应用_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档Webservice学习笔记_计算机软件及应用_IT/计算机_专业资料。Webservice ...  Web Service 学习笔记(1) Web Service 的宗旨是创建不需要用户界面就能与其他应用程序交互的 Web 应用 程序。 举例说明它的优点, 假如你正在为一家股票投资公司...  webservice学习 29页 2财富值 Webservice学习 24页 5财富值 WebService CXF学习 57页 1财富值 我们一起学习webService 暂无评价 1页 免费 WebService学习总结 4...  我们一起学习 webService WebService 的学习网上有很多文章,记得几个月前学习时按一篇文章能在 C#中正确找 到与调用, 在忙碌一阵, 现在再回头来学习时却不知道...  WebService学习总结(二)_计算机软件及应用_IT/计算机_专业资料。一、WebService 是什么? 1. 基于 Web 的服务:服务器端整出一些资源让客户端应用访问(获取数据) ...  webservice学习_IT/计算机_专业资料。webservice 学习 1.Webservice 可返回类型 int,string,double,bool,DataTable,DataSet,ArraList,List&string[]&,stwebservice ...  Web Services入门学习案例_计算机软件及应用_IT/计算机_专业资料。Web Services入门...{ Service myService = new Service(); string employeeID = myService.get...  Webservice学习Webservice学习隐藏&& Webservice 学习 在学习编程的过程中, 我觉得不止要获得课本的知识,更多的是通过学习技 术知识提高解决问题的能力,这样我们才能...

参考资料

 

随机推荐