WF4 / WCF中的RESTful工作流服务端点

时间:2010-09-09 15:39:55

标签: wcf workflow workflow-foundation workflow-foundation-4

民间,   我正在构建一个非常标准的工作流程,我希望通过WCF端点公开 - 我正在使用“WCF服务应用程序”项目模板,我有一个.xamlx服务。这是一个非常简单的文档交换工作流服务 - 我希望消费者向我发布一个XML blob作为HTTP帖子的主体(包含身份验证令牌的HTTP头)。作为回应,这些消费者将获得包含回复的大量XML。我在这里使用REST / POX的2个目标是基于文档/消息的交互性质我希望在非.NET环境(特别是像Silverlight和iPhone这样的有限环境)中轻松进行客户端开发。

我真的没有看到如何使用开箱即用功能实现这一点(除非我遗漏了一些东西)。有没有人知道如何为WF4服务托管工作流创建RESTful(甚至REST-ish,我不挑剔)端点?在这里朝着正确方向前进的任何信息都会很棒。

2 个答案:

答案 0 :(得分:2)

有一个未发布的item on CodePlex来涵盖此内容,其中包含源代码。另请参阅this SO answer,其中包含实现此目的的另一个想法。

如果您希望发布CodePlex活动,请提前投票the UserVoice request

使用REST传递服务

正如@Maurice所提到的,您还可以将WF服务视为后端服务,并公开只调用WF服务的REST服务。

这种方法有点笨拙,但它的优势在于它不使用任何未发布的或非常复杂的。

如果后端服务在与REST服务相同的计算机上运行(可能就是您要执行的操作),则应使用命名管道绑定公开WF服务。此绑定是 fast ,但仅在调用方和被调用方位于同一个框时才有效。

进一步考虑:在调用后端服务时,您的REST传递服务被阻止。如果您的WF服务速度不是很快,那么您可以从REST服务 asynchronous 中受益,因此在调用WF服务时它不会阻塞线程池线程。

答案 1 :(得分:1)

没有开箱即用的活动可以让你使用REST和WF,Receice是纯粹的SOAP。

您可以构建自定义REST接收活动,并将其与您的工作流程一起使用。根据您的需要,这对很多工作来说都是非常少的。简单的选择是使用标准的REST WCF端点并将REST数据转换为SOAP,将rhe请求传递给工作流,并对结果消息执行相反的操作。