我正在研究应用程序的设计。 Core应该用C#编写,但我也想使用一些已经完成的CPython模块(未管理)。C#.NET与托管Python(CPython)的互操作性 - >任何问题?
所以我对互操作性感兴趣(从C#调用CPython方法和从CPython调用C#)。如果有问题,因为C#在.NET运行时(托管)内运行,CPython直接不受管理。
我已经研究过此问题与谷歌就出来了这些解决方案:
- 使用IronPython的通过DLR +“CPython的扩展名” +也许“铁定的”,并从IronPython的调用CPython的模块,反之亦然 - >这些模块是执行托管还是非托管?如果我想使用CPython的C#类和方法,是否有任何问题?
- 使用“Python for .NET” - >与上面相同的问题。
您认为哪种方式更好?或者你有另一种解决方案?
而最后但也许是最重要的问题,我理解上面提到的问题吗?还是我搞砸了?
非常感谢提前!
从什么意义上讲,你的模块CPython(而不仅仅是普通的Python)?我问,因为没有太多依赖于实现的功能,尽管肯定有一些功能。仅使用IronPython就可以简单得多,IronPython运行于.NET上,并且可以使用DLR与C#高效交互。 – katrielalex 2012-04-18 12:50:20
谢谢你的回复katrielalex,我不想重写CPython模块,因为它们很多。我也认为IronPython会更好,但是绝对的所有模块都是用CPython编写的。还有一个问题:我根本不熟悉Python,但是如果CPython基于C,在编译本地DLL之后是模块,并且我可以像C DLL那样将它们作为DLL(通过dllimport?)处理。 – Tintenfiisch 2012-04-18 12:59:36
不,你不明白。 CPython是Python语言的一个_implementation_,它正好用C语言编写(就像C#编译器是用C++编写的那样)。尽管可以编写依赖于具体实现的Python代码,但通常任何Python都可以工作任何地方。 – katrielalex 2012-04-18 13:20:18