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

标签 c# xml web-services xsd

我需要创建一个接受 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,DataContractDataMember 用于 WCF)。这些属性控制:

  1. 收到服务请求时如何将传入的 XML 流反序列化为一种类型,以及
  2. 您的响应类型的实例在从您的服务传出时如何序列化为 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/

相关文章:

c# - 根据时间间隔验证时间

c# - Mono/C# : A good GUI toolkit ? 在 KDE 上看起来不错?

web-services - 使用 DefaultCredentials 和 DefaultNetworkCredentials

c# - 跨平台方式获取父进程ID

c# - DataGridView - 如何连接到与单元格更改关联的事件?

c# - 如何根据条件创建嵌套的 XElement?

java - Android 库中的 string.xml

android - Firebase Remote Config fetch 不会从云端更新值

java - 请求映射; java Spring

ios - iOS Moya Web服务: make one call wait for all others to finish,然后阻止新调用