webservice接口开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Microsoft .NET体系结构中非常强调Web Service,构建Web Service接口对.NET Framework开发工具有很大的吸引力,因此很多讲建立Web Service机制的文章都是使用.NET Framework开发工具的。
在这篇文章中我们将谈论下面几个方面的问题
1、客户端怎样和Web Service通信的
2、使用已存在的Web Service创建代理对象
3、创建客户端。这包括:
Web 浏览器客户端
Windows应用程序客户端
WAP客户端
最好的学习方法是建立一个基于真实世界的实例。我们将使用一个已存在的Web Service,这个Web Service从纳斯达克获得股票价格,客户端有一个简单的接口,该接口的外观和感觉集中了建立接口的多数语句。
客户端描述
三种客户端都接受客户输入的同一股票代码,如果请求成功,将显示公司名和股票价格,如果代码不可用,将显示一个错误信息。客户端都设置有"Get Quote" 和"Reset"按钮以初始化用户的请求。
开发中的注意事项
我使用visual 作为我的集成开发环境,beta版没有结合.NET Mobile Web,因此,我们需要使用文本编辑器创建wap客户端,下一个版本的visual 将整合入.NET Mobile Web 。
客户端怎样与Web Service通讯
我们先复习一下Web Service的功能,在我得上一篇文章中曾展示一幅图(如图一),a点的用户将通过Internet执行远程调用调用b点web 服务器上的东西,这次通讯由SOAP和HTTP完成。
我们实际执行了b 点web 服务器上的方法吗?对于新手来说这是一个关键问题,由此你可以想到一系列的安全威胁,作为系统管理员我们不可能让随便什么人使用我们的web资源,让怀有恶意的人破坏敏感数据,而且也不能不提到带宽问题。我们还记得这是一个分布式应用程序,因此我们还不得不关心数据的配置。
为解决这些问题,我们需要复制在用户web 服务器上的对象行为,在我们的例子中,我们需要复制b点Web Service针对a点的功能,这就意味着我们要创建充当原始web servcie行为的代理对象(proxy object),这个代理对象象原始Web Service那样具有所有的数据接口。那么我们怎样得到公共数据接口的呢?
各位是否还记得Web Service代码中的关键字Web only,每一个Web only的方法都会被复制到代理对象中,这样将保护我们的敏感数据,避免受到来自Web Service终端(比如:b点)的有恶意的黑客的攻击。这种方法我们称为在a、b之间进行的"对象数据同步交换",这一过程称为创建"对象代理".
现在看看图1的修正版,如下图:
代理对象是Web Service的基础慨念,所以创建Web Service的第一步是创建代理对象,然后我们可以通过多种平台(Web浏览器, WAP, Personal Digital Assistant [PDA], SOAP客户端)从代理对象获得数据。
创建代理Web Service对象
在.NET Framework中携带了一个创建代理对象的工具"WebServiceUtil.exe",在
MS_DOS快捷窗口使用这个工具创建代理对象。
语法如下:
WebServiceUtil /c:proxy /pa:HTTP://yourDomain/someFolder/
yourWebService.asmx?SDL
/c:proxy 指示编译器创建一个代理对象
/pa:<WebServerURL>
找到sdl文件的路径,最后面的"?SDL"
目的是使Web Service获得SDL订约上面的是必须要的参数,现在解释一下其他重要参数:
/disco:<FileName>
创建一个Discovery文件,对不知道精确的url地址的用户而言,
Discovery文件是找到Web Service的机制之一。它是一个提供Web
Service的简要说明的xml文件,visual 工程将自动创建
一个缺省的Discovery文件作为新工程的一部分,也可以启动
"Dynamic Discovery"自动跟踪,
/l:<Language Code>语言可以是C#,Visual Basic或者jscript等,如:/l:Csharp.
/n:<Namespace>
该类所在的名字空间。该名字空间的所有类均可访问这个代理对
象。
/o:<Location>表示放置创建的文件的位置。缺省为现行目录。
/i:<Namespace>附加的名字空间,该名字空间是将输入该类的名字空间。
/protocol:
<protocol Name>
应用的协议,如: SOAP, HTTP GET或HTTP POST。缺省值为:SOAP 下图是一个创建代理对象的例子
这个命令在当前目录下创建了一个叫LiveQuote.cs的文件。这是一个在WebServiceClients名字空间中的C#文件,当你创建客户端时,将认识到
WebServiceClients名字空间的重要性。现在编译C#类,便产生了一个连接客户端工程的DLL文件。,将其置于"bin" 目录下。
这样就在bin目录下创建了一个叫LiveQuotes.dll的文件。如果想了解有关编译c#类的情况可以参考.NET SDK帮助文档。
用这两个命令创建了一个代理对象,现在我们准备从Web Service获得数据。代理对象具有所有的公共接口,可访问任何商业逻辑函数,我们甚至不需要注册DLL文件就可以办到。我们只需要编译源代码并插入bin目录下的dll文件即可。这一切对于Web 服务器访问DLL文件足够了。
如果你不熟悉的配置机制你也许会感到困惑,不注册dll文件是为了让操作系统验证它。我们仅将它放在bin目录下.NET Framework在运行时将带上它。
现在我们创建客户端,创建一个客户端的步骤是:
1、创建一个代理对象的实例
2、在代理对象上执行方法调用
3、捕获从Web Service返回的xml格式的数据
4、写一个特殊的客户端控件显示结果
创建Web 页客户端
Web服务监听器监听HTTP GET, HTTP POST和SOAP 方法调用。首先我们用Visual 创建一个Web 工程