Sql 从Webservice返回对象
如何从web服务返回对象: [网络方法] 公共数据集GetVendors(字符串数据库) { SqlConnection sqlConn=新的SqlConnection()Sql 从Webservice返回对象,sql,web-services,Sql,Web Services,如何从web服务返回对象: [网络方法] 公共数据集GetVendors(字符串数据库) { SqlConnection sqlConn=新的SqlConnection() 如果我正确地解释了您的问题,请在数据集中用您的信息填充一个对象,并将返回类型设置为对象。或者只返回您填充的对象作为该对象。另一种方法是将数据集xml作为字符串返回,并在客户端从中创建数据集。 虽然我确信加密对象会相当简单,但当我的web服务需要加密时,这种方法帮助了我(序列化所有内容、加密该字符串、返回字符串、解密、反序列化
如果我正确地解释了您的问题,请在
数据集中用您的信息填充一个对象
,并将返回类型设置为对象
。或者只返回您填充的对象作为该对象。另一种方法是将数据集xml作为字符串返回,并在客户端从中创建数据集。
虽然我确信加密对象会相当简单,但当我的web服务需要加密时,这种方法帮助了我(序列化所有内容、加密该字符串、返回字符串、解密、反序列化).如果您询问如何返回任何类型的对象,而不是
对象,那么您将需要序列化该对象。如果您试图序列化数据集
,我建议首先将其放入列表
或其他数据结构中。对我来说似乎很脆弱。它假定客户端将知道如何进行序列化e序列化该对象,将客户端锁定到特定平台(例如JavaEE或.NET)
XML序列化不那么脆弱,因为它与平台无关,并且会让客户端解决解组问题。我建议过度返回对象。不返回数据集的另一个原因是“泄漏的抽象”:为什么要将客户端暴露于与持久性层有关的任何内容中?请重新思考。IMO从web服务返回数据集并不是一个好主意。它假设客户端了解数据集、数据表等数据结构和类。相反,我建议您使用普通CLR对象,即数据传输对象,或者如果您愿意的话您可以使用XmlNode作为数据类型。您可以使用WSE保护您的web服务
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);
}