2011-03-09 81 views
2

我对Silverlight和WF(都是4.0版本)都是新手,我想知道我们是否可以将WF4.0与Silverlight 4.0集成,这样当我们点击某个按钮时sliverlight UI中,应该执行工作流程并将工作流程的最终活动的输出显示在Silverlight屏幕中。如果可以完成,请给我提供一些链接或任何教程,我可以了解这一点并开始实施。将WF4.0与Silverlight 4.0集成起来

在此先感谢。

+1

这可以通过使用WorkflowInvoker? – Everest 2011-03-09 11:27:17

回答

4

在WF 4.0中,您可以让工作流由WCF端点启动(或前进)。因此,如果您可以从Silverlight应用程序中调用WCF终端节点,您应该可以非常轻松地完成此操作。在Microsoft's WF Developer Centre.

的信息很多假设你正在使用Visual Studio 2010中,你可以站起来,用一个非常简单的Silverlight运行 - > WF例子非常快...

  1. 创建一个新项目(新解决方案)从'WCF工作流服务应用程序'模板。该项目将被命名为DeclarativeServiceLibraryX。这应该给你一个非常简单的使用SequentialService的WorkflowService定义,该定义只接收来自客户端的请求(使用单个整数参数)并发送响应(具有相同的值)。该项目是作为一个Web项目创建的,因此包含一个Web.config。
  2. 创建一个新的Silverlight 4应用程序。系统会询问您是否要在现有Web项目中托管Silverlight应用程序(在步骤#1中创建)。可能是说好的主意。
  3. 在Silverlight应用程序中,选择“添加服务引用...”,然后选择“在解决方案中发现/服务”。 Service1.xamlx将显示为选项,选择它并单击确定。
  4. VS会生成一个WCF服务引用客户端。然后,您可以添加一个TextBox &按钮来捕获一些数据,创建客户端并通过线路将服务呼叫发送到WCF工作流服务。然后可以根据需要修改此工作流服务(或使用这些步骤将WCF工作流服务添加到您自己的Web项目中)。

一个可能具有挑战性的领域是将WCF服务绑定修改为与Silverlight兼容;可能会先在您的服务器端项目中创建一个兼容Silverlight的WCF服务,然后创建一个WF WCF端点并查看生成的代码&配置,以了解如何组合在一起。

MSDN Endpoint blog也是更多地了解WF和WCF(尤其是与新的风格轻量级REST风格“WCF的Web HTTP”绑定,这可能是由一个Silverlight客户端更适合消费的有用资源。

我假设你不想在Silverlight应用程序本身内托管工作流,因为WF是一个完整的.Net框架组件,而不是Silverlight兼容。我相信你可以编写自己的轻量级工作流框架Silverlight,但是给定的工作流程一般是多用户的,服务器端的关注这可能不会是非常有用的问题。

+0

您是否建议我应该创建一个WCF并从该WCF调用工作流,如果是这样,那么我认为它会影响我的应用程序的性能。 – Everest 2011-03-09 10:48:01

+0

你为什么这么说? WCF不一定会影响你的应用程序的性能,它只是组织分布式应用程序之间/之间组织通信的一个框架。如果Silverlight和应用程序的服务器端组件之间的通信过于喋喋不休,或者使用“繁重”协议(例如,SOAP与轻量级REST WCF服务),那么性能可能会受到影响。但是,无论您使用WCF还是其他某种机制来启用应用程序通信,这些都是分布式应用程序体系结构面临的挑战 – 2011-03-10 04:10:38

+0

无论如何,我更新了我的答案,包括创建WCF工作流服务和可触发它的Silverlight客户端的分步示例,希望它有用! – 2011-03-10 04:11:30

0

我发现这些samples的WPF here的一个例子。希望他们能够帮助你一点,或者至少能够对这个话题给出一个总体看法。

0

工作流发现ation不包含在Silverlight 4.0运行时中,因此不能在Silverlight应用程序中使用。所以Silx答案根本不涉及到Silverlight。 James Websters的答案是从Silverlight中使用WF的唯一解决方案。

0

你不能使用WF和Silverlight ....唯一的方法是,你可以调用WCF服务来访问WF,如James Webster所解释的那样。

+0

即你可以使用silverlight调用WF吗? :p – 2011-04-07 23:14:40