代码改变世界

《WF编程》系列之29 - 本地通信事件:HandleExternalEventActivity & 活动生成器

  Windie Chai  阅读(3867)  评论(1编辑  收藏  举报

4.2.2 HandleExternalEventActivity

像CallExternalMethod活动一样,HandleExternalEvent活动也有一个必须设置的InterfaceType属性.当我设置这个属性之后,我们就可以设置EventName属性了:


如果从本地服务而来的事件一直没有到达HandleExternalEvent的话,它就不会完成.假如事件有可能永远不会到达,或者事件需要过一段时间之后才会到达,那么最好把这个活动置于Listen活动内部.我在之前介绍过,Listen活动可以有多条分支,我们可以把Delay活动放到其中一条分支中来模拟超时.
Roles属性可以绑定到WorkflowRoleCollection对象并且允许Runtime执行基于角色的授权检查. WorkflowRoleCollection对象是一个集合,它的成员都派生自WorkflowRole抽象类,WF提供了两个WorkflowRole的实现:ActiveDirectoryRole类和WebWorkflowRole类,分别对应于AD和ASP.NET 2.0角色提供程序.Runtime会用集合中的角色来验证传入的用户标识,如果验证失败,Runtime会抛出WorkflowAuthorizationException异常.

4.2.3 活动生成器

Windows Workflow包含了一个命令行工具来执行Windows Workflow Communications活动生成器:wca.exe.
我们可以向wca.exe传递.NET程序集(.dll或.exe)的路径,这个工具会在程序集中寻找有ExternalDataExchange标识的接口.找到之后,它就会生成专门的自定义活动,可以执行接口中的方法和处理接口中的事件.

将wca.exe生成的代码作为Workflow ActivityLibrary项目的一部分进行编译之后,添加到工具箱里,我们就可以像使用其它基本活动一样使用wca.exe生成的活动了.
自定义活动不仅包含InterfaceType以及EventName或MethodName属性,还包含所有通信所需的参数.

编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示