【问题标题】:How to create WCF service from XSD files and service contract programmatically?如何以编程方式从 XSD 文件和服务合同创建 WCF 服务?
【发布时间】:2012-09-29 10:43:14
【问题描述】:

我已经多次发布此主题,但没有运气。我会再试一次。

我们有一个项目,我们应该根据从客户那里获得的 XSD 文件和如下所示的固定服务合同创建 WCF 服务:

Message CustomAction(Message inputMessage);

所以,操作是一样的,但是 XSD 文件会改变。

我们应该以编程方式做的所有事情。

这是我的问题:

1) 如何以编程方式从 XSD 文件创建 WSDL 文件,了解服务的外观(见上文)?

2)如何使用1)中生成的WSDL文件以编程方式创建WCF服务?

3) 如何从上面的服务中读取输入/请求和输出/响应 SOAP 消息的正文?

有不止一种方法,我不知道哪一种是正确的。我还没有接近解决方案。

有一种使用ServiceDescription类以编程方式编写WSDL文件的方法,但是它很复杂,如何正确执行,创建WSDL文件后要做什么等等。

有一种使用 IXmlSerializable 接口的方法,但我不需要创建 C# 类型,因为我只有 XSD 文件。一切都应该以编程方式完成。

我想我应该使用原始消息,但是如何将该方法与我应该从中创建 WSDL 文件的现有 XSD 文件连接起来,以及如何将该 WSDL 文件传递​​到...在哪里?

提前谢谢你。

问候,

戈兰

【问题讨论】:

  • 你错了。这些问题是相关的,这意味着它们是在一起的。我在互联网上搜索了很多,发现了一些类似但不一样的东西,问了一些人 - 没有帮助。因此,我确切地问了我不知道该怎么做。我想人们不知道答案,但我会再试一次。也许有人会以某种方式提供帮助。我知道任务并不简单,但这就是任务。谢谢。
  • 如果任务不简单,那么可能任务是错误的。您需要考虑一下,如果您已经搜索了很多解决方案并且没有,那么也许您应该质疑您的整个方法。
  • 好的。我已经编辑了我的原始帖子并添加了一些我迄今为止尝试过的细节。
  • @hugh,这正是我没有提及我尝试做的事情的原因。任务一点都不简单,但不知道是不是错了。所以,我在这里问是否有人可以以某种方式提供帮助。

标签: wcf xsd wsdl


【解决方案1】:

此时您可能应该质疑您是否提出了正确的问题。您已经发布了 4 次关于此问题的帖子 (1)、(2)、(3),但您没有一次用简单的语言真正解释过您想要实现的目标。

如果您只是寻求解决方案而不分享您的问题,那么人们很难正确回答。

是的,你想做的事情是可能的,但我不想自己尝试。

回答您的问题:

  1. 这正是 WSCF.blue 所做的。去下载他们的sourcecode

  2. 使用 powershell 或其他一些自动化环境,针对 svcutil.exe 运行 wsdl 并生成要在服务上公开的类型。然后编译代码。然后在运行时使用某种 IoC 容器将类型作为依赖项注入到服务代码中(我认为Castle Windsor 具有 WCF 集成的负载)。

  3. 使用 powershell 或其他一些自动化环境,将 svcutil.exe 指向正在运行的服务并生成代码代理。编译代码,然后在运行时将代理注入到您的客户端代码中,类似于上面。

【讨论】:

  • 1. WSCF.blue 是 Visual Studio 插件。我已经尝试过了,它有效。但是,它不适合我们的情况,因为一切都应该以编程方式完成。我们使用 VS2008 和 .NET Framework 3.5。
  • 2.和 3. 我们不能去 2. 和 3. 因为我们不能通过 1. 如何仅使用 XSD 文件和固定服务合同以编程方式创建 WSDL?
  • 我的意思是WSCF.blue已经解决了这个问题,所以答案肯定在他们的源码里。
  • 我从这个答案中得到的关键点是:“如果你只是寻求解决方案而不分享你的问题,那么人们很难正确回答。”
  • 好的,克里斯。我同意。我现在已经在原始帖子中写了所有内容。我知道这个问题真的很不寻常,我正在尝试解释它。例如,让我们来看看这个 - 如何使用现有的 WSDL 文件以编程方式创建 WCF 服务。我在互联网上找不到任何代码示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 2012-02-07
  • 1970-01-01
相关资源
最近更新 更多