【问题标题】:Return Object From Webservice从 Web 服务返回对象
【发布时间】:2008-12-30 15:07:40
【问题描述】:

如何从网络服务中获取对象:

[网络方法] 公共数据集 GetVendors(字符串数据库) { SqlConnection sqlConn = new SqlConnection();

        sqlConn.ConnectionString = GetConnString(Database);

        // build query
        string strSQL = @"  SELECT      [No_] AS [VendorNo],
                                        LTRIM([Name]) AS [VendorName]

                            FROM        [********_$Vendor]

                            WHERE       LEN(RTRIM([Name])) > 0 /* avoid blank names */

                            AND         [Vendor Posting Group] = 'VEND'

                            ORDER BY    LTRIM([Name]) ASC; /* LTRIM fixes spaces before name */ ";

        SqlDataAdapter da = new SqlDataAdapter(strSQL, sqlConn);

        DataSet ds = new DataSet();

        da.Fill(ds, "Vendors");

        return (ds);
    }

【问题讨论】:

    标签: sql web-services


    【解决方案1】:

    如果我正确地解释了您的问题,请使用您在DataSet 中的信息填充您的对象,并将您的返回类型设置为object。或者只是将您填充为该对象的对象返回。

    【讨论】:

      【解决方案2】:

      另一种方法是将数据集 xml 作为字符串返回并在客户端从它创建一个数据集。

      虽然我确信加密对象会相当简单,但当我的 Web 服务需要加密(序列化所有内容、加密该字符串、返回字符串、解密、反序列化)时,这种方法可以帮助我。

      【讨论】:

        【解决方案3】:

        对我来说似乎很脆弱。它假定客户端将知道如何反序列化该对象,从而将客户端锁定到特定平台(例如 Java EE 或 .NET)。

        XML 序列化不那么脆弱,因为它与平台无关,并且将解组的怪癖留给客户端解决。我建议不要返回一个对象。

        【讨论】:

          【解决方案4】:

          不返回 DataSet 的另一个原因是“泄漏抽象”:为什么要将客户端暴露给与持久层有关的任何事情?重新考虑一下。

          【讨论】:

            【解决方案5】:

            IMO 从您的 Web 服务返回数据集并不是一个好主意。它假定客户端了解 Dataset、DataTable 等数据结构和类。相反,我建议您使用普通 CLR 对象,即数据传输对象,或者如果您愿意,您可以使用 XmlNode 作为您的数据类型。您可以使用 WSE 保护您的 Web 服务。

            【讨论】:

              【解决方案6】:

              如果您要询问如何返回任何类型的对象,而不是 Object,那么您将需要序列化该对象。如果您尝试序列化DataSet,我建议您先将其转换为List 或其他数据结构。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2012-06-04
                • 1970-01-01
                • 2011-01-22
                • 2014-06-28
                • 1970-01-01
                • 1970-01-01
                • 2012-08-06
                相关资源
                最近更新 更多