如何以编程方式从XSD文件和服务合同创建WCF服务?

时间:2012-10-09 06:48:48

标签: wcf xsd wsdl

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

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

Message CustomAction(Message inputMessage);

因此,操作将是相同的,但XSD文件将会改变。

我们应该以编程方式完成所有工作。

以下是我的问题:

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

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

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

有一种以上的方法,我不知道哪一种是正确的。我不太接近解决方案。

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

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

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

提前谢谢。

此致

戈兰

1 个答案:

答案 0 :(得分:0)

你应该在这一点上质疑你是否在提出正确的问题。您已经发布了4次关于此问题的帖子(1),(2),(3),但是您没有用实际语言解释过您正在尝试的内容实现。

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

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

回答你的问题:

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

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

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