将 Windows Workflow 公开为 Web 服务






3.85/5 (55投票s)
将 Windows Workflow 公开为 Web 服务
引言
首先,我将发布一个示例,该示例使开发人员能够将 WF 公开为 Web 服务,
以便任何域中的客户端都可以将此工作流功能用作服务。
在 VS 2008 中,Windows 工作流和 Web 服务可用的其他选项包括
1) Windows 工作流可以消费 Web 服务。
2) 通过使用工具箱中的“WebServiceFaultActivity”,我们可以在
发布异常处理后,向客户端发出错误消息。在我的下一篇文章中,我将介绍相同的内容。
背景
(可选) 是否有任何关于本文的背景信息可能有用,例如对所介绍的基本思想的介绍?
使用代码
关于如何使用文章或代码的简要说明。类名、方法和属性,任何技巧或窍门。
代码块应设置为“Formatted”样式,如下所示
First Create a Empty Project in Visual Studio 2008, name it “PrabhjotWFasWs”.
图 1
将一个类“Mathservice.cs”添加到我们的项目中,并声明一个名为“MathService”的接口,
在同一文件中使用一个名为“DivideNumber”的方法。
图 2。
定义接口是强制性的,因为这里的接口 MathService 及其方法将与
来自工具箱的“webServiceInput”活动相关联),在工作流中。此接口方法将采用
从 Web 服务角度来看的“Webmethod”形式,并且“WebserviceInput”活动将充当一个网关
用于输入参数,以便工作流被激活和初始化。
因此,这可能是我们第一次告别作为输入参数的 Dictionary 对象。
下一步是将一个工作流类型“具有代码分离的 sequentialWorkFlow”添加到我们的项目中,并且
将其命名为“WorkflowasService.xoml”。
然后按相同顺序拖动三个活动 - WebserviceInput、codeactivity、WebServiceOutput。
现在我们将设置活动的属性。选择 WebserviceInput 形状并按 f4,
以查看属性窗口。
在 Webserviceinput 活动的属性窗口中,我们单击接口类型选择选项旁边的省略号,
请选择我们的接口名称为“MathService”,并选择方法名称为“DivideNumber”,在此之后我们
将扩展同一属性窗口中的参数树。它将扩展到“Dividend”和“Divisor”参数。
如图 3 和图 4 所示

图 3
图 4
接下来选择与“Dividend”参数关联的省略号。在弹出窗口中,选择选项
“绑定到新成员”,将“A”分配给新成员名称,并且还选择“创建属性”选项,如图 5 所示
这将导致在工作流的视图代码中创建一个声明性属性。
图 5
同样,对于另一个参数“Divisor”,再次选择“绑定到新成员”,
将“B”分配给新成员名称,并选择创建属性选项,如图 6 所示。
图 6
确保在属性窗口中,我们将“IsActivating”的属性更改为“true”。同样,我们选择
Webserviceoutputactivity1 形状并打开其属性窗口,我们将创建一个新属性“C”,并将其绑定到返回值属性,如图 7 所示。此外,请确保我们将 WebserviceInputactivity1 分配给 InputActivityname 属性。每个 webserviceoutput 活动都将与一个 webserviceinput 活动链接。图 7
图 7
现在我们必须将操作添加到代码活动,即发生实际除法活动的地方。为此,双击
单击工作流中的 codeactivity 形状并键入此代码 c=a/b。图 8图 8
现在我们完成了,您所要做的就是首先构建项目,然后在项目上单击鼠标右键
在解决方案资源管理器中命名,然后单击“发布为 Web 服务”。图 9。图 9
完成后,您将看到在同一解决方案资源管理器中创建了一个新的项目文件,其中包含一个 .asmx 文件,
将其设置为启动项目并运行该项目,您将获得一个熟悉的 Web 服务测试页面。图 10 和图 11。图 10
图 11
使用“var”按钮将变量或类名包裹在<code>标签中,例如this
。
关注点
在编写代码的过程中,你学到了什么有趣/好玩/令人恼火的东西吗? 你做了什么特别巧妙、疯狂或异想天开的事情吗?
历史
在此处保持您所做的任何更改或改进的实时更新。