我们有一个在C中实现非常复杂逻辑的库。它有一个命令行界面,不需要太复杂的基于字符串的参数。为了访问它,我们希望包装库,以便可以使用简单的XML RPC或甚至简单的HTTP POST调用来访问它。
有一些Java经验,我的第一个想法是
我相信应该已经有一些简单的东西可以使用,所以我在这里发布这个问题。解决方案具有以下要求
除了JNI / JNA提案之外,我认为在C#世界中编写Web服务并调用此非托管代码模块应该不会太难,但我希望有人可以给我一些关于要求可行的指针。
答案 0 :(得分:2)
如果你要使用网络服务,或许Soaplab会很有用。它基本上是一个将现有命令行应用程序包装在SOAP Web服务中的工具。它生成的Web服务看起来有点奇怪,但它是一种非常流行的方式来制作这样的工作。
答案 1 :(得分:1)
我认为您也可以将其发布为基于SOAP的Web服务。 gSoap可用于提供库外的服务接口。你有没有探索过gSOAP?见http://www.cs.fsu.edu/~engelen/soap.html
此致 Kangkan
答案 2 :(得分:1)
创建一个apache模块非常简单,因为您熟悉xmlrpc,所以应该查看mod-xmlrpc2。您可以轻松地将C代码添加到此apache模块,并在几分钟内运行xmlrpc服务器
答案 3 :(得分:0)
取决于您熟悉的技术,已安装和使用的服务器以及您的负载要求。
原始CGI怎么样?假设C代码在请求之间是无状态的,您可以在不修改库的情况下执行此操作。编写一个简单的脚本,将请求参数拉出CGI环境,可能会清理输入,通过命令行界面调用库,并将结果打包到您想要的任何HTTP响应中。然后配置Apache以将相关URL分派给此脚本。例如,Python具有对XML-RPC的库支持,Web上使用的所有其他脚本语言也是如此。
Servlet听起来有点过分,但是例如如果你想要每个CGI流程实例化多个请求,并且不想参与Apache配置,那么最简单的方法就是坚持你所知道的。
答案 4 :(得分:0)
目前我正在用C ++做类似的事情。就我而言,我正在编写一个PHP模块,允许PHP脚本访问我的C ++库中的逻辑。
然后我可以使用我想让世界其他地方看到的任何格式 - 最初它只是通过PHP Web应用程序,但我也将开发XML-RPC接口。
答案 5 :(得分:0)
如果您要沿着JNI路线行驶,请查看SWIG。 http://www.swig.org/Doc1.3/Java.html
假设您有项目绑定的标题,swig很容易使用。