从Grails应用程序调用在Mono下编译的.NETDLL还是使用SOAP?

从Grails应用程序调用在Mono下编译的.NETDLL还是使用SOAP?,grails,soap,mono,java-native-interface,jna,Grails,Soap,Mono,Java Native Interface,Jna,我项目的一部分用C#编写了他们所有的代码。我们的web应用程序在Grails中,需要访问它们的代码。我们需要的接口非常简单(例如,以字符串形式传递文件名)。我可以用Mono编译它,因为我们的环境是基于*nix的,但是我不想用mod_Mono设置ASMX web服务,而只想用JNA或JNI调用dll。这可能吗?有没有人有这样做的好例子?或者最简单的选项是设置WS或其他RPC机制吗?我对以下任何一种都没有经验,但由于Grails在JVM上运行,这些可能适合您。我不确定使用Mono会如何影响你的结果。

我项目的一部分用C#编写了他们所有的代码。我们的web应用程序在Grails中,需要访问它们的代码。我们需要的接口非常简单(例如,以字符串形式传递文件名)。我可以用Mono编译它,因为我们的环境是基于*nix的,但是我不想用mod_Mono设置ASMX web服务,而只想用JNA或JNI调用dll。这可能吗?有没有人有这样做的好例子?或者最简单的选项是设置WS或其他RPC机制吗?

我对以下任何一种都没有经验,但由于Grails在JVM上运行,这些可能适合您。我不确定使用Mono会如何影响你的结果。 它的设计允许您轻松地从Java调用.net代码。 另一种选择是使用IKVM作为虚拟机运行Grails应用程序。但我不确定这会有多好,因为IKVM不支持标准Java虚拟机的所有功能。有关从Java调用Mono代码的信息,请参阅
对于其他可能的选项,因为GRAIUS在JVM上运行,所以所有这些都应该是可用的,但是使用MUNO而不是No.NET平台可能会导致其他问题。

< P>我实际上做了一些我通常认为糟糕的事情,但似乎是最容易的。我有一个.Net程序集,可以作为DLL引入到我自己的.exe文件中,该文件在Mono中运行。最后,我将使用来自的信息从Grails服务调用它。在.Net exe中,我将向STDOUT返回一个字符串,我可以使用Groovy的Eval功能对其进行封送,如(简化):


我确信这并不理想,但对于我的项目来说,这似乎是最无痛的方式,不会影响我们的应用程序的运行。

谢谢,我认为在大多数情况下,您都遇到了我遇到的选项,而这些选项似乎对我的项目都不可行。
// something like ['mono', "/opt/external/dotnet.exe", "parm1"]
def command = getCommandBasedOnSystem(exePath, urlPath)
def proc = command.execute()
// STDOUT: [prop1:"test", prop2:"something"] as HashMap
def object = Eval.me(proc.in.text)
// Processing based on object