如何创建一个基于xsd文件接收和发送xml的Web服务?

时间:2011-10-02 16:11:30

标签: c# xml web-services xsd

我需要创建一个接受xml的.NET Web服务,使用它来查询数据库,然后返回xml。我已经获得了请求和响应的xsd文件。有人能指出我从哪里开始的正确方向或一个例子吗?

之前我没有使用过WCF,所以我更喜欢使用简单的asmx文件来执行此操作。我知道如何从数据库中获取数据,因此我丢失了xml和web服务位。

我试过谷歌搜索一段时间,但不知道从哪里开始。感谢。

2 个答案:

答案 0 :(得分:5)

您遇到的问题是asmx和WCF都是代码优先 Web服务技术。这意味着您通常从类开始,Web服务堆栈负责通过网络将您的类型公开为XML。

您开始使用的是架构,而不是代码。因此,如果要使用asmx / wcf,则需要在代码中对模式进行建模。您可以通过使用xsd.exe(或WCF的svcutil.exe)从架构推断类结构来执行此操作。

或者,您可以根据模式定义手动建模您的类。

一旦有了类,就可以在代码中添加声明性属性(对于WCF,请参阅http://msdn.microsoft.com/en-us/library/83y7df3e.aspx asmx, DataContract DataMember )。这些属性控制:

  1. 在收到服务请求时,如何将传入的XML流反序列化为类型
  2. 在您的服务中传出时,您的响应类型的实例如何被序列化为XML
  3. 这种方法的问题在于,让你的XML对你的XSD架构进行验证会有点受到影响,因为你不能100%依赖XSD的类推断,另外你可能会错过一些细节如果你正在手工建模。

    无论您采用哪种方式,都需要确保您的请求和响应类实例完全序列化为XML,这将根据您提供的XSD架构进行验证。

    另请参阅一个名为WSCF-Blue的框架,它允许您执行契约优先 Web服务设计:http://wscfblue.codeplex.com/

    祝您好运,如果您需要更多详细信息,请通过评论告诉我。

答案 1 :(得分:0)

根据我的理解,您需要构建一个Web服务,它将接受XML作为输入,进行一些处理并吐出XML。

我假设您对XML有基本的了解,但对XSD一无所知。简单来说,XSD是一个用于验证XML文件的文档。可以将它看作是如何构建XML文件的规则手册,您可以阅读有关XSD from W3schools的更多信息。现在不要担心XSD。获取一些示例XML文档,您需要将其作为输入和输出接受。构建一个控制台应用程序来解析示例XML文件并从数据库中获取结果。然后使用结果通过查看输出示例XML来构建输出XML。完成后,您可以使用.NET类从您拥有的XSD验证输入和输出XML。

您可以查看this answer以了解验证的完成方式。

完成后,您可以创建Web服务以将XML作为字符串返回。

希望得到这个帮助。