c# - 使用 COM+ 在 MSXML 和 .Net 之间互操作

标签 c# .net com interop com+

我需要根据以下两个要求创建一个 .Net C# 组件:

  1. 将一个 XML 和一个 XSL 路径作为输入参数应该返回一个 HTML 字符串。
  2. XSLT 引擎需要使用 MSXML XSLT 处理器来实现*

通过 COM Interop 使用 MSXML可能是一种选择,但我发现这篇关于该主题的可怕知识库文章说:

815112 信息:.NET 应用程序不支持使用 MSXML
http://support.microsoft.com/kb/815112

MSXML uses threading models and garbage-collection mechanisms that are not compatible with the .NET Framework. Using MSXML in .NET applications through COM interoperability can result in unexpected problems that are difficult to debug.

在进程外 COM+ 包中使用 MSXML 是否是从 .NET 应用程序访问 MSXML 的一种更安全的方式?
如我的要求所述,我不需要将 MSXML 类或接口(interface)作为输入/输出参数处理,而只需处理普通字符串。

* 代码库由数千个 XSL 文件组成,这些文件在 MSXML XSLT 引擎 (MSXML 4.0) 上运行良好,但在选择器 System.xml< 中给出的错误不止一个 .Net 库。

最佳答案

是的,您可以创建一个 out-of-process COM+ application然后使用 System.EnterpriseServices namespace 中的类或 WCF (我个人会这样做)连接到 COM+ 应用程序。

当然,这意味着除了 .NET 之外,您还必须使用一些其他技术 来托管您的组件,但这可能是获得进程隔离和与 .NET 的互操作性的最简单方法-开箱即用。

关于c# - 使用 COM+ 在 MSXML 和 .Net 之间互操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9978530/

相关文章:

c# - 插入时违反 PRIMARY KEY 约束

c# - 与 LINQ 中的集合集合相交

c# - 为什么删除 "throw"语句会导致 "use of unassigned local variable"编译错误?

c# - 如何使用 Moles 作为构造函数?

c# - 以编程方式使用具有指定位置和大小的 Windows 资源管理器打开文件夹 [C#]

c# - 是否可以从 .NET 测试暴露于 COM 的程序集?

com - 调试 VB6 COM+ Web 应用程序挂起

c# - 显示警报时获取警报内容

c# - 在 MVVM 中填充大量文本框的最佳方式

java - Java 上的 DirectX 可能吗?