在.NET web应用程序中使用C库

本文关键字:NET web 应用程序 | 更新日期: 2023-09-27 18:26:50

我有一个C库的源代码,需要与我的C#ASP.Net应用程序一起使用。听起来处理这个问题的方法是创建一个C++dll包装器并将其导入我的C#项目。我发现这有点难看,因为当它抛出异常时,整个应用程序都会崩溃。这是实现这一目标的最佳方法,还是有更安全的方法?我正试图研究如何用C库创建COM对象,但在那里还没有真正找到什么。是否可以创建COM对象并将其引用为.NET托管代码?

在.NET web应用程序中使用C库

我在谷歌上搜索了一下。我发现这篇比较的文章很棒

  1. 一个使用PInvoke和大量编组的C#门面
  2. 在C++/CLI中将Facade插入互操作层,并以混合模式编译以供C#使用

此外,MSDN引用:建议使用C++Interop而不是显式PInvoke,因为它提供了更好的类型安全性,通常实现起来不那么乏味,如果修改了非托管的API,它会更宽容,并使显式PInvoke无法实现的性能增强成为可能。

此外,你的想法(C++COM外观)似乎是合法的,正如这本好书所宣扬的那样,有两个优点:

  1. 生成的类可以从Visual C++以外的语言中使用
  2. COM接口的详细信息可以对托管客户端代码隐藏。NET数据类型可以用来代替本机类型,并且数据封送处理的细节可以在自定义运行时可调用包装器中透明地执行