zoukankan      html  css  js  c++  java
  • web service 数据传输有什么限制? 为什么?DataTable可以作为web service参数传递么?

    所传输的数据必须是可序列化的。因为需要转换为XML格式以可以穿越防火墙,做到真正的数据共享。

       因为DataSet处理DataTable的序列化以便进行封送处理,所以无法传递单个DataTable

    参考

    http://zaoyang.org/link.php?url=http://www.microsoft.com%2Fchina%2FMSDN%2Flibrary%2Fdata%2FdataAccess%2Fhcvb04vb04i7.mspx%3Fmfr%3Dtrue

    ADO.NET 的三个基本数据对象 — DataReader、DataTable 和 DataSet 中,只有 DataSet 可以与 Web 服务之间传递。这是因为,为了与 Web 服务进行通信,对象必须是可序列化的。(序列化是一个过程,它用于将对象的公共属性转换为 XML,并且因为 XML 只是纯文本,所以可以将其从一个应用程序传输到另一个应用程序,并且可以穿越防火墙,从而克服了 COM 的主要障碍之一。)DataReader 无法序列化,因为它们需要到服务器的开放连接。并且,因为 DataSet 处理 DataTable 的序列化以便进行封送处理,所以您也无法传递单个 DataTable。让我们研究一些示例。

    传递 DataSet

    假设我们正在运行一个订阅 Web 服务,该服务可返回所请求的有价证券在给定日期的收盘价格。用户传入用户 ID 和密码,以及他/她希望看到的有价证券和收盘价格的 DataTable。Web 服务随后验证他/她的成员身份并返回一个 DataTable,其中包含股票符号和它们的收盘价格,或者包含错误信息。

    由于使用者应用程序(即,“消耗”该 Web 服务的应用程序)的开发人员需要知道股票符号和错误信息的期望结构,因此 DataSet 需要遵守您提供的发布规范。出于我们的目的,我们将假设以下条件:股票符号将存储在一个 DataTable 中,它包含三个列:一个名为 Symbol、类型为 varchar(5) 的列,一个名为 ClosingDate、类型为 datetime 的列,以及一个名为 Price、类型为 float 的列。如果在此过程中的任何时候生成错误,都将在一个只包含一列的 DataTable 中返回错误信息 — 该列的名称为 ErrorMessage,类型为 varchar(100),并且包含错误信息。通过简单地引用所返回 DataTable 的列 count,开发人员可以知道该过程是否成功.

  • 相关阅读:
    一般图的最大匹配-带花树算法
    Codeforces703D-Mishka and Interesting sum-离线树状数组
    HDU4578-代码一点都不长的线段树
    AOJ.综合训练.2016-12-1
    AOJ.综合训练.2016-12-1
    队列的实现
    队列的实现
    栈的实现
    栈的实现
    贪心算法总结
  • 原文地址:https://www.cnblogs.com/muer/p/1695361.html
Copyright © 2011-2022 走看看