.NET的数据传输之道 |
| 作者:BIPLIP 来源:BIPLIP.com 发布时间:2005-12-21 16:40:08 |
|
本文向您介绍了如何使用Web Services和SOAP(Simple Object Access Protocol,简单对象反问协议)进行数据传输,并且通过讨论示例代码对在Pocket PC上传输数据的方法进行了仔细分析。 需要具备
须知 该示例代码使用了SDL(Services Description Language,服务描述语言)来定义Web Services,而SDL即将(有望在2001年的上半年)被最新的WSDL规范(Web Services Description Language,Web服务描述语言)所替代。本文中所提供的示例代码不能同使用WSDL规范的Web Services配合工作。 支持ADO(Microsoft ActiveX Data Objects)Recordset(我使用的是2.6版本)的XML格式可能会发生修改和变化,在XML格式发生变化时,本文提供的示例代码也可能需要相应修改。 支持的语言 数据和Web Services 大多数的商业应用程序都需要在服务器和客户机应用程序之间传输数据。在一个传统的Microsoft Web解决方案平台(以前被称作Microsoft Windows DNA)中,一般使用ADO Recordset(ADO记录集)对象进行数据传输。因为它使用了一种特殊类型的“编组”(对象传输),它无需持有服务器上的任何“状态”(资源)即可被传输到客户端上。有鉴于此,很多现有系统中的组件都采用了这种实现方式,以ADO Recordsets形式返回数据。 如果我们又想利用在这些组件上的先前投资,又想获得应用程序同Web Services集成所带来的诸多益处,我们就需要找到一种通过SOAP传输这些ADO Recordsets的方法。在Chris Dengler所撰写的“利用SOAP消息返回ADO Recordset”这篇出色文章中,您可以为在个人计算机上使用Web Services找到一种解决方法。 但是,该解决方案不能被照搬到Pocket PC上,因为ADOCE(ActiveX Data Objects for CE)的实现方式同ADO有所不同。最重要的差别之处在于:ADOCE当前(3.1版)不支持持续性。特别是对于XML(扩展标记语言)格式。另一个不同之处在于:ADOCE不支持我前面所提到过的记录集编组。因此,它不能为动态创建“连接断开”(没有到数据源的活动连接)状态下的记录集提供支持。 无处不在的Web Services数据 一个测试客户端程序
窗体顶部的TextBox(文本框)用来选择所需的Web Service(描述)。这个URI (Universal Resource Identifier)是使用SOAP Toolkit Wizard创建的SDL(服务描述语言,Services Description Language)文件。 我已经创建了第一个Web Service,您可以调用这个Web Service (使用顶部的“Get”按钮),这个Web Service 主要用于测试目的。它调用一个简单的Web Service,将您提交的名和姓作为参数连接到了一个包含完整名称的字符串中。 当您输入一个已经在服务器上进行了定义的DSN(数据源名称)以及一个针对该DSN的SQL(结构化查询语言)查询,然后点击“Get”按钮时,它开始变得更有意思了。DSN和SQL作为一个参数传递给了Web Service,然后以XML格式返回一个ADO Recordset。数据经过分析后,填充在窗体底部的ListView控件中。 在正确对服务器进行了设置的前提下,现在,您可以方便地访问您的企业数据了。您无需任何第三方产品--甚至不使用ADOCE--即可轻松做到这一点。对此,我的一位同事说,“这实在令人惊讶!” 代码讨论 代码说明: 传递给SOAP方法的两个参数(DNS和SQL)是从TextBox控件中取得的,其返回值是XML格式的ADO数据集。如需了解同SOAPCall函数及其参数有关的更详细信息,请参阅我的循序渐进文章“为Microsoft .NET做好准备”。 正如您看到的,整个实现方式类似于ADO Recordset的使用方式(简化了代码复用)。以“XMLRS… |
| [] [返回上一页] [打 印] |
文章评论 |
