使用COM+实现MSXML和.Net之间的互操作

本文关键字:之间 互操作 Net COM+ 实现 MSXML 使用 | 更新日期: 2023-09-27 18:29:41

我需要创建一个具有以下两个要求的.Net C#组件:

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

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

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

MSXML使用线程模型和垃圾收集机制与.NET Framework不兼容。在.NET中使用MSXML通过COM互操作性的应用程序可能会导致意外难以调试的问题。

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

*代码库由数千个XSL文件组成,这些文件在MSXML XSLT引擎(MSXML 4.0)上运行良好,但在更挑剔的System.xml.Net库中会出现更多错误。

使用COM+实现MSXML和.Net之间的互操作

是的,您可以创建一个进程外的COM+应用程序,然后使用System.EnterpriseServices命名空间中的类或WCF(我个人会这样做)来连接到COM+应用程序。

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