在问一个问题之前,在你们因为有几个类似的问题而生气之前,我想解释一下什么是项目要求。你会看到这个问题与所有其他问题不同。
- 用户将使用 ReHosted WPF 应用程序创建工作流,并将 xaml 文件上传到我们将提供的 Web 应用程序。
- 启动工作流执行的入口点位于该 Web 应用程序中。他们可以从自己的应用程序中使用 UI 或使用 API 功能。
- 工作流程将长期运行。
我知道托管的不同可能性。
最简单的方法是将其托管在 ASP.NET Web 应用程序中,但由于我们不知道用户将上传什么样的工作流,IIS AppDomain 回收可能会破坏工作流线程的执行。
WCF 工作流服务看起来不错,但用户将上传自己的 xaml 工作流定义这一事实使事情变得更加复杂。看起来我们必须创建类似核心工作流的东西,公开为 WCF 服务,并且该工作流将加载并执行内部工作流(xaml 客户上传)。不确定在这种情况下如何将 in 参数传递给内部工作流。
第三种选择,也是我认为最好的选择,是在Windows Service中托管工作流执行。Web 应用程序和窗口服务之间的通信可以通过 MSMQ。此解决方案的缺点可能是用于确保 web 应用程序和 win 服务之间的良好通信的 boillerplate 代码。
我错过了更好的解决方案吗?如果您需要更多详细信息,请发表评论。