使用ChannelFactory与WorkflowServiceHost

3

有没有一种方法可以在工作流定义XAML上执行服务推断,创建一个可以分发给客户端并与ChannelFactory一起使用的接口,而不是主机公开WSDL,并且客户端必须通过添加服务引用来生成服务定义?


你的问题是指“如何在不从wsdl生成代理的情况下,使用ChannelFactory调用我的wcf服务”吗? - evgenyl
是的,evgenyl。我想要分发一个接口给我的服务,就像一个“普通”的程序集一样,而不是依赖于WSDL / mex端点。 - Mark Bostleman
1个回答

2
我是这样做的:
  1. 暂时从工作流服务中公开元数据
  2. 使用svcutil创建代理代码
  3. 将配置更改回不公开元数据

详细步骤:

  • 在“WCF工作流服务应用程序”(DeclarativeServiceLibrary1)中创建项目,包含定义服务的XAMLX文件
  • 编译该项目
  • 将该项目设置为启动项目
  • 在解决方案资源管理器中选择xamlx文件
  • 按Ctrl-F5 -> WCF测试客户端启动,您会看到已加载服务
  • 右键单击WCF测试客户端中的xamlx URL,选择复制地址(例如 http://localhost:56326/Service1.xamlx
  • 打开VS2010管理员控制台窗口
  • 使用svcutil.exe创建代理代码:
    • cd /D %TEMP%
    • svcutil http://localhost:56326/Service1.xamlx
    • 这将创建两个文件,一个*.cs和一个*.config,其中包含代理代码
我在其他方式创建代理代码时遇到了很多问题,外部svcutil是最稳定的方法。希望这可以帮助到您。

谢谢Achim,文档写得很好!使用svcutil是我的备选方案,但我一直在等待更简单的解决方案。不幸的是,Visual Studio可以解析XAML以制作华丽的拖放和设计师界面,但无法输出简单的接口代码文件,特别是因为WorkflowServiceHost已经可以实时生成它。 - Mark Bostleman
是的,像这样的事情确实会让你发疯,你说得完全正确。至少他们给了我们svcutil... :) - Achim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接