相关疑难解决方法(0)

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

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

.net c# remoting appdomain

38
推荐指数
4
解决办法
2万
查看次数

Roslyn c# 脚本沙箱

有没有办法沙箱执行脚本,使其 a) 不能做任何“危险”的事情,并且 b)只要文件与脚本文件本身在同一目录中,它就可以访问它想要的任何文件。有点像是将所有文件路径视为relative

我想我是在询问 Roslyn 的脚本安全措施及其定制级别。

c# sandbox roslyn

7
推荐指数
1
解决办法
1716
查看次数

AppDomains之间的通信

我们正在构建一个应用程序(WinForms,.NET 3.5),它将"插件"DLL加载到辅助AppDomain中.辅助AppDomain需要偶尔与第一个AppDomain通信(更具体地说,从主AppDomain中创建的对象调用或获取数据).

我已经阅读了有关AppDomains的大部分内容以及它们之间的通信.

到目前为止,我见过的唯一简单的解决方案是继承MarshalByRefObject并将TransparentProxy传递到第二个AppDomain,在Proxy上调用方法.

此方法有其缺点(例如,在框架类型的情况下,或者从已经从其他类继承的类型,静态字段/类等等,并不总是可以从MBRO继承).

由于当前的通信点非常不变(只有2-3个需要通信的场景),我考虑创建一个具有以下属性的简单Mediator类:

  1. 将在1st(Main)AppDomain中创建.
  2. 只能作为主要AppDomain中创建的"Real"对象的"消息传递器".
  3. 将继承自MBRO,并将其代理引用发送到第二个AppDomain.

将调用此代理对象上的方法,然后调用第一个AppDomain中"真实"对象上的方法.

我的问题 -

  1. 这看起来像是一个逻辑设计吗?
  2. 更重要的是,WCF或任何其他通信框架中是否已存在调解器/消息传递器类?它似乎是一个通用的概念,我想知道是否有类似的东西.

.net c# wcf appdomain marshalling

4
推荐指数
1
解决办法
5339
查看次数

如何获得父AppDomain?

我需要在c#(伪)中做这样的事情:

static var ns = new Non_Serializable_Nor_Marshal()

var app = new AppDomain();
app.execute(foo)

void foo()
{
    var host = AppDomain.Current.Parent; //e.g. the original one
    host.execute(bar)
}

void bar()
{
    ns.Something();
}
Run Code Online (Sandbox Code Playgroud)

我在一个应用程序域中有一个非序列化或编组对象.我想创建第二个域并执行foo().从第二个域内我想在原始域上执行bar().

如何将原始域名传递给孩子?

.net c# appdomain

3
推荐指数
1
解决办法
5260
查看次数

标签 统计

c# ×4

.net ×3

appdomain ×3

marshalling ×1

remoting ×1

roslyn ×1

sandbox ×1

wcf ×1