[英]Interop between C# and other Languages
我有一个用C#编写的系统,该系统旨在提供一个dll,其中包含一个实现特定接口的类,然后实例化该类并调用某些接口方法并使用响应。
背景是建立一个AI竞赛,人们将AI提交为C#dll。 一切都完美。 好极了!
现在,我想以相同的方式开始支持其他语言。
从根本上讲,用户应上传一个文件(以及有关哪种文件的元数据),然后我将相应地调用该文件的内容。
对于C#,这是“上载dll”并“使用C# System.Reflection
实例化它以获取实现该接口的C#对象,然后仅调用相关方法”。
我想知道我还可以支持哪些其他语言? 我可以与可以编译成.exe并通过命令行进行交互的任何内容进行交互,也可以设置基于Web API的交互。
但是,对于那些更类似于实例化对象并直接与该对象进行交互的事情,有什么选择呢?
我很高兴的答案是一个链接到特定语言已经解决了这个问题,其他的做题-尽管我希望你能确保它解决它在我的特定情况下,用户上传文件(可能是zip?)和我直接在服务器端C#环境中调用它。
找到在CLR内运行的语言绝对是这里的最佳方法吗? 它们都与C#交互的方式并不一致,因此您需要做更多的工作来支持每种语言。
一种替代方法是通过一些定义明确的接口(例如,使用标准I / O流或某些特定端口上的TCP或某些协议的协议)生成单独的沙盒处理并进行交互。 IIRC就是过去Google AI挑战的工作方式。 这样,您不必专门实现需要支持的每种语言。 人们只需要提供符合您的界面的可执行文件即可。 当然,您会遇到安全地对其进行沙箱处理的其他问题,但这仍然是一个普遍的问题,而不是必须根据每种语言解决的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.