当前位置:  开发笔记 > 编程语言 > 正文

如何在AppDomains之间进行最佳通信?

如何解决《如何在AppDomains之间进行最佳通信?》经验,为你挑选了3个好方法。

我有一个应用程序需要在许多AppDomain之间发送适量的消息.我知道我可以使用远程处理实现这一点,但我也注意到有跨域委托.谁有人看过这种问题?



1> Michael Mead..:

我使用带有命名管道绑定的WCF取得了很好的成功.使用命名管道不会创建网络流量并使用二进制编码,因此它应该非常快,而不会牺牲在未来扩展方案中分发的能力.

编辑:请参阅此处以获取更多详细信息,包括实施示例的链接.



2> x0n..:

跨域委托仅允许具有零参数的void方法,并且它可能不是您认为的那样.它只是一个简单的回调用于从一个appdomain到另一个appdomain的通知目的,例如像InitComplete()之类的方法.

Remoting是唯一的选择,无论你是将它称为WCF还是其他任何东西,传递可序列化类型,或使用MBRO类型(MarshalByRefObjects).它并不像你想象的那么难.

-Oisin



3> notmii..:

我刚刚发现您也可以使用AppDomain.SetData,但这只是从主机域到子域的一种方式.

static void RunInChildDomain()
{
     AppDomain childDomain = AppDomain.CreateDomain("friendlyName");
     string parameterValue = "notmii";
     childDomain.SetData("parameter", parameterValue);
     childDomain.DoCallBack(PrintName);
}

static void PrintName()
{
     string Name = Convert.ToString(AppDomain.CurrentDomain.GetData("parameter"));
     Console.WriteLine(Name);
}

您还可以使用AppDomain.FirstChanceException事件在子域和主机应用程序域之间创建异常驱动的通信:)

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有