我需要创建一个接受 xml 的 .NET web 服务,使用它来查询数据库,然后返回 xml。我已获得用于请求和响应的 xsd 文件。有人可以指出我从哪里开始的正确方向或示例吗?
我之前没有使用过 WCF,所以更愿意使用简单的 asmx 文件来完成此操作。我知道如何从数据库中获取数据,所以我迷失了 xml 和 Web 服务位。
我已经尝试用谷歌搜索了一段时间,但不知道从哪里开始。谢谢。
最佳答案
您遇到的问题是 asmx 和 WCF 都是代码优先网络服务技术。这意味着您通常从类开始,Web 服务堆栈负责通过网络将您的类型公开为 XML。
您是从模式开始的,它不是代码。因此,如果您想使用 asmx/wcf,您需要在代码中对您的模式进行建模。您可以通过使用 xsd.exe(或 WCF 的 svcutil.exe)从您的架构中推断类结构来执行此操作。
或者,您可以根据模式定义手动为您的类建模。
一旦您有了自己的类,就可以向代码中添加声明性属性(参见 http://msdn.microsoft.com/en-us/library/83y7df3e.aspx 用于 asmx,DataContract 和 DataMember 用于 WCF)。这些属性控制:
- 收到服务请求时如何将传入的 XML 流反序列化为一种类型,以及
- 您的响应类型的实例在从您的服务传出时如何序列化为 XML
这种方法的问题在于,让您的 XML 根据您的 XSD 模式进行验证会有点碰运气,因为您不能 100% 依赖 XSD 的类推断,此外,如果您正在手工建模。
无论采用哪种方式,您都需要确保您的请求和响应类实例干净地序列化为 XML,这将根据您提供的 XSD 模式进行验证。
另请参阅名为 WSCF-Blue 的框架,它允许您进行契约优先 Web 服务设计:http://wscfblue.codeplex.com/
祝你好运,如果您需要更多详细信息,请通过评论告诉我。
关于c# - 如何创建一个基于xsd文件接收和发送xml的web服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7627503/