IoC 和托管外接程序框架 (System.AddIn) 能否与隔离的 AppDomain 一起工作?

2023-12-31

如果我使用托管 AddIn 框架 (System.AddIn) 并将其设置为使用单独的 AppDomain,我可以使用主/默认 AppDomain 中的集中式 IoC 容器吗? IoC 容器可以跨 AppDomain 解析吗?


我将通过忽略等式的 MAF 部分并专注于 AppDomain 问题来接近这个答案。理论上,IoC 容器可以执行您所描述的操作,假设 IoC 入口点继承自 MarshalByRefObject 或由一个继承自 MarshalByRefObject 的类包装。凭借 29K+ 的重复分数,我相信您知道这一点,但是:

1) 从 MarshalByRefObject 继承的对象可以通过代理跨 AppDomain 边界访问(即,所有调用都跨 AppDomain 边界编组到对象)。

2)可序列化的对象可以通过序列化跨AppDomain边界传递,也就是说,您可以在另一个AppDomain中获得它们的另一个副本。

由于多种原因,您不希望序列化整个 IoC 容器并将其运送到 AppDomain 边界。首先,这样做的开销将是巨大的,其次,IoC 容器背后可能存在大量不可序列化的管道。因此,唯一可能的方法是:

1)IoC容器本身是MarshalByRef,或者被这样的包装

and

2) 从 IoC 容器获取的对象都已正确设置为跨域使用(可序列化或 MBR 继承)。

如果上述两个条件都成立,那么理论上您可以从其他 AppDomain 使用主 AppDomain 中托管的 IoC 容器。您可能会通过定义特定于 IoC 容器的 Resolve 方法(或您使用的 IoC 工具中的任何等效方法)的 MAF 主机适配器来实现此目的。

请记住,许多 IoC 功能(尤其是 AOP)是使用跨应用程序域通信也使用的相同代理 API 来实现的。如果您尝试将 IoC 容器用于除基本可序列化结构和 MBR 继承服务之外的其他用途,我肯定会看到事情变得复杂。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IoC 和托管外接程序框架 (System.AddIn) 能否与隔离的 AppDomain 一起工作? 的相关文章

  • 如何在.NET 中编写安全/正确的多线程代码?

    今天我必须修复一些使用线程的旧 VB NET 1 0 代码 问题在于从工作线程而不是 UI 线程更新 UI 元素 我花了一些时间才发现可以使用 InvokeRequired 断言来查找问题 除了上面提到的并发修改问题之外 还可能遇到死锁 竞
  • 有没有类似 ActiveRecord::Migration for .NET 的东西?

    我玩过 ruby on Rails ActiveRecord Migration类 我喜欢保持数据库模式版本化是多么容易 我想在我的 ASP NET 项目中做类似的事情 我想知道是否有人听说过一个可以执行以下操作的工具ActiveRecor
  • 为什么 Roslyn 中有这么多对象池的实现?

    The 对象池 http source roslyn codeplex com Microsoft CodeAnalysis ObjectPool 25601 cs 20b9a041fb2d5b00是 Roslyn C 编译器中使用的一种类
  • 为单个方法引用大 DLL

    我想在 C 中使用大型类库 dll 中的单个方法 是否有性能或其他方面的缺点 我应该使用反射工具 读取 方法代码并将其复制粘贴到我的项目中吗 更新 硬盘空间不是问题 我的应用程序是网络应用程序 是否有性能或其他方面的缺点 唯一真正重要的是可
  • 无法更新 .mdf 数据库,因为该数据库是只读的(Windows 应用程序)

    我使用 C 创建了一个数据库 Windows 应用程序 我的应用程序在 Windows XP 上成功运行 但在 Vista 或 Windows 7 系统上无法正确执行 我的应用程序显示类似以下内容的消息 无法更新 mdf 数据库 因为该数据
  • 发生错误。", ExceptionMessage: "提供的 'HttpContent' 实例无效

    尝试将文件添加到 http 休息调用时出现此错误 responseJson 消息 发生错误 ExceptionMessage 提供了无效的 HttpContent 实例 它确实 正在使用 多部分 参数名称 内容 异常类型 System Ar
  • lambda 表达式是多线程的吗?

    lambda 表达式是多线程的吗 假设当你将数学公式编写为 lambda 方法时 当你将其传递给另一个方法时 它会是多线程的吗 不是100 清楚你问的是什么 您是否想问 lambda 是否自然地在不同的线程上运行 如果是这样 则它们只是 S
  • 父窗体中的居中消息框[重复]

    这个问题在这里已经有答案了 有没有一种简单的方法可以在 net 2 0中将MessageBox居中于父窗体中 我在 C 中确实需要这个并发现中心消息框 C http bytes com topic c sharp answers 26712
  • 中继命令和无参数执行方法

    我目前正在学习 WPF 和 MVVM 我想我已经了解了大部分内容及其工作原理 但我在使用 RelayCommand 或 DelegateCommand 时遇到了一些我不明白的问题 我认为这与代表的工作方式有关 请注意 下面的代码目前仅处于测
  • 从 VS.NET 2008 转换到 2010 时 Windows 服务安装项目出现问题

    我正在尝试将解决方案从 VS NET 2008 转换为 2010 该解决方案包括一个 Windows 服务项目和一个安装 Windows 服务的安装项目 我在编译安装项目时遇到问题 我已经尝试按照教程从头开始几次here http msdn
  • 依赖注入的惰性解析

    我有 net 课程 我使用 Unity 作为 IOC 来解决我们的依赖关系 它尝试在开始时加载所有依赖项 Unity中有没有一种方法 设置 允许在运行时加载依赖项 还有更好的解决方案 Unity 2 0 中对 Lazy 和 IEnumera
  • web.config 转换为

    我有针对多个环境的 web config 转换 在配置文件中 我有一个 applicationSettings 部分 其中包含多个设置和值对 我尝试过根据用于匹配名称的语法并更改连接字符串以匹配设置并更改值 但转换失败 这是可能吗 所以我的
  • 我如何移动粘性/捕捉 wpf 窗口

    当我移动 主 窗口时 我想移动两个或更多粘性窗口 我想做这样的事情 private void MainWindow PreviewMouseMove object sender MouseEventArgs e if e LeftButto
  • 学习实体框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • & 在 xml 文件中算作一个还是多个字符?

    我正在使用的 XML 模式具有特定的字符串字符长度 所以我可能有一个类似的字符串 Jim Mary 在 C 中是 10 个字符 但是当它写入 xml 时 它会变成 Jim amp Mary 如果 XML 模式规定字符串最多只能有 10 个字
  • FileInfo.BaseName 存在于 PowerShell 中,但不存在于直接 .NET 中

    为什么在 NET 中System IO FileInfo对象没有BaseName属性 但我可以通过 PowerShell 使用该属性 例如 FolderItems Get ChildItem Path C Where Object isno
  • 标签中的路径显示

    NET 中有没有自动修剪路径字符串的方法 例如 C Documents and Settings nick My Documents Tests demo data demo data emx becomes C Documents dem
  • WPF 中的屏幕分辨率问题?

    我将在 WPF 中使用以下代码检测分辨率 double height System Windows SystemParameters PrimaryScreenHeight double width System Windows Syste
  • 使用 ContractNamespace 属性设置 WCF DataContract 命名空间

    在设计我的服务时 我决定要自定义出现在生成的 WSDL 中的名称空间 对于数据合同 我遇到了合约命名空间 http msdn microsoft com en us library system runtime serialization
  • 使用 WF 的多线程应用程序的错误处理模式?

    我正在写一个又长又详细的问题 但只是放弃了它 转而选择一个更简单的问题 但我在这里找不到答案 应用程序简要说明 我有一个 WPF 应用程序 它生成多个线程 每个线程执行自己的 WF 处理线程和 WF 中的错误 允许用户从 GUI 端进行交互

随机推荐

  • 傀儡节点主机名

    我正在使用木偶来配置服务器 我想在 erb 模板中打印当前机器 节点 名称 有hostname变量 但这包含 puppetmaster 主机名 关于这个主题有什么好的参考 列表吗 好像我错过了什么地方 我只需在 erb 模板中调用以下代码即
  • 在 Django 的 ORM 中访问存储过程的最佳方式是什么

    我正在设计一个相当复杂的数据库 并且知道我的一些查询将远远超出 Django ORM 的范围 有人成功地将 SP 与 Django 的 ORM 集成吗 如果是这样 什么 RDBMS 以及您是如何做到的 我们 musicpictures co
  • iPhone 版 Mapsforge 模拟

    我的 iPhone 应用程序需要一些框架 该应用程序使用地图 现在这些地图是光栅图像 我想通过制作矢量地图来优化我的应用程序 我知道我的 Android 开发同事已经使用 Mapsforge 框架来实现此目的 iPhone 上有类似的库吗
  • 为什么我们在查找素数时可以使用 sqrt(n) 而不是 n/2 作为上限? [复制]

    这个问题在这里已经有答案了 我们如何使用sqrt n 代替n 2在这段代码中 使用是否正确sqrt n static boolean isPrime long n if n lt 1 return false double limit Ma
  • 使用curses.h从键盘获取字符

    我正在尝试使用curses h 从键盘获取一个字符 这是我的来源 get char example c include
  • 为什么位域的类型会影响包含结构的大小?

    首先 这是 ISO C 标准关于位字段的规定 引用了N1570 http www open std org jtc1 sc22 wg14 www docs n1570 pdf2011 年 ISO C 标准草案 第 6 7 2 1 节 位字段
  • 为什么允许“src”属性链接到来自外部域的脚本,而 XmlHtppRequests 则不允许?

    我已经阅读了 StackOverflow 上有关同源策略的几个答案 但我似乎没有抓住本质部分 在所有使用的标签中src属性 比如
  • 如何在 django 1.3 中获取 POST 数据

    嘿 我正在按照本教程学习使用 Django 制作 wiki 页面 然而 它是用 django 0 96 制作的 而我使用 Django 1 3 所以有些东西是不同的 有些我已经自己修好了 但是这个我似乎无法让它发挥作用 我制作了一个将数据提
  • javascript:将 元素保存到磁盘上的文件

    在我的 HTML 上 我有一个 SVG 元素 它使用 d3js 渲染并在 CSS 中应用样式 当我右键单击浏览器时 我可以选择 保存图像 此操作将保存应用所有 CSS 样式呈现的图像 我一直在寻找保存文件的好方法 转到画布并导出画布 可另存
  • AVAudioPlayer.play() 不播放声音

    为什么下面的代码不播放声音 它为 play 返回 true 但我听不到任何声音 let path Users account Music sound mp3 let fileURL NSURL fileURLWithPath path va
  • iOS7中UITextView contentSize的变化和NSLayoutManager

    问题 UITextView默默地改变它contentSize在某些情况下 最简单的情况是带有大文本和键盘的textView 只需添加 UITextView 出口并设置 viewDidLoad as void viewDidLoad supe
  • UniqueIdentifier 现在导致 Apple 拒绝[重复]

    这个问题在这里已经有答案了 请不要将此标记为重复项 这个问题是关于辛佩瑞姆以及它处理 uniqueIdentifier 和identifierForVendor 的方式 Simperium仍在使用 UIDevice currentDevic
  • 在 PowerShell 中运行 Python

    我正在尝试使用指南来学习 Python 的基础知识 艰难地学习Python https en wikipedia org wiki Zed Shaw Books by 泽德 肖 https en wikipedia org wiki Zed
  • 从StreamReader中批量读取

    我在尝试通过 StreamReader 将 800MB 文本文件加载到 DataTable 时遇到了 OutOfMemory 异常 我想知道是否有办法从内存流中批量加载DataTable 即从StreamReader读取文本文件的前10 0
  • C# 流布局面板换行或换行

    我正在向流程布局面板添加一些控件 在一些控件之间我需要换行 请问我怎样才能实现这个目标 谢谢 添加中断前的最后一个控件后 调用flow SetFlowBreak lastControl true Note lastControl是您想要在之
  • 房间数据库架构实体扩展错误

    在使用 android Room 时 我有以下实体 Entity public class Call implements Parcelable PrimaryKey autoGenerate true private long id pr
  • 创建带有用户帐户的网页,我需要记住什么?

    我正在尝试编写一个具有用户帐户的网站 除了密码和电子邮件地址之外 没有太多敏感信息 但我并不真正明白我在做什么 我一边走一边把它搞砸了 关于安全或任何其他重要细节 我应该记住什么吗 你应该 加密敏感数据 http www hscripts
  • 快速位集追加?

    我正在寻找一种具有快速位附加功能的位集实现 其中可以一次性有效地附加多个位 e g char value 31 char n bits 5 fast bitset bits bits append value n bits 到目前为止 我已
  • 无法在 R 中安装 Github 包

    我需要一个位于 Github 上的软件包 我知道有多种解决方案可以在 R 中安装该软件包 我正在尝试在 Windows 服务器上安装该软件包 这是我尝试过的 解决方案1 基于Vignette install packages devtool
  • IoC 和托管外接程序框架 (System.AddIn) 能否与隔离的 AppDomain 一起工作?

    如果我使用托管 AddIn 框架 System AddIn 并将其设置为使用单独的 AppDomain 我可以使用主 默认 AppDomain 中的集中式 IoC 容器吗 IoC 容器可以跨 AppDomain 解析吗 我将通过忽略等式的