为功能分配Web地址

时间:2012-05-23 14:32:50

标签: rest amazon-ec2 amazon-web-services fortran

很抱歉,如果我没有表达清楚。我需要:通过HTTP(S)通信创建一个函数,这意味着应该为我的函数分配一个Web地址。用户可以以适当的格式发送输入以启动此功能。

目前,这些功能是用FORTRAN编写的,这意味着我无法将它们放到Google App Engine中。我的方法是:

  1. 将FORTRAN代码上传到此云服务器并将其编译为可执行文件。
  2. '发布'此编译的FORTRAN代码,该代码将为其提供一个网址。
  3. 允许用户将输入发送到此地址并进行一些计算。
  4. 将计算结果保存到AMAZON S3并生成供用户下载的链接。
  5. 所以我的问题是这个功能的名称是什么(我猜是REST)?是否有任何大型云服务器可以提供此服务(如AMAZON,GOOGLE)?

    谢谢!

5 个答案:

答案 0 :(得分:3)

此功能的名称是什么?它被称为Web服务,也称为Web API。

这里有一个非常好的解释:http://www.ibm.com/developerworks/webservices/library/ws-restful/

Web服务或多或少与网站完全相同(在Web服务器上运行,使用HTTP)但它只返回数据,通常是XML或JSON,没有图形或格式。

至于托管,正如我所说,托管网页服务和托管网页之间基本没有区别。在应用程序级别,Web服务仅返回数据,而网站返回HTML格式的Web页面。当你认为HTML(XHTML)实际上是XML的一个子集时,网站和网络服务之间实际上没有任何区别 - 唯一的区别是消费者:一个是看起来很好并且被阅读的人消费一个网页,另一个只返回数据,并打算由某种客户端应用程序使用。

==编辑==

Fortran比互联网要长很多。这是第一个高级编程语言....我认为是在1950年代开发的,所以在互联网出现之前大约20年。您不会找到任何可以托管Fortran Web服务或应用程序的人。如果你需要网络互动,也许可以考虑用Python重写 - 它们非常相似。或者,大多数Web语言都支持调用控制台应用程序:

http://php.net/manual/en/function.shell-exec.php

Call a Console App from ASP.NET MVC, but don't want to wait for the response

答案 1 :(得分:1)

听起来您希望将某些功能作为 Web服务公开在计算机上。具体来说,如果您希望它的行为就像您实际调用计算机上的特定功能一样,那么它可能是远程过程调用

许多因素会导致选择使用哪个供应商,如果您正在寻找云基础解决方案,我会确定您是否要使用某种特定语言,并查看哪些解决方案可以支持这种解决方案。除此之外,每个都有不同的支持和定价模式。

答案 2 :(得分:0)

我建议使用VPS类型的服务。我删除了Google App Engine,因为它目前无法运行Fortran代码。您将看到Amazon EC2,或者只是从GoDaddy,BlueHost,HostGator等网络托管公司获取VPS,具体取决于您的使用情况。

根据您的经验,您可以使用Python,Ruby或PHP执行此操作。它们都具有强大的Web框架,可以调用本地系统上的可执行文件,例如Fortran编译器。因此,您可以在Django或Rails等框架中编写Web代码,然后调用本地cgi来执行Fortran代码并通过框架返回结果。

其他建议: 您可能希望使用Pypy和python进行计算,它几乎和Fortran一样可以做,但是更现代。

答案 3 :(得分:0)

任何云提供商尝试“支持”Fortran都没有任何商业意义。此外,Fortran是如此“令人敬畏”,它真的很难支持。

策略:

  1. 使用其他语言/框架创建Web服务,然后通过CLI调用调用Fortran代码。
  2. 使用Fortran包装器和高级工具包(例如Fortran for .NET)来创建Web服务。
  3. 将Fortran代码编译为本机代码(例如.dll)并使用JNA从Java调用,然后使用Java Web Services为函数创建REST / SOAP WS。这可以使用Netbeans IDE轻松实现。
  4. 就个人而言,我会考虑选择3。

    这些是我将其归类为“特技”的一些内容,因此我会自动将AppEngine排除在外。 我会在一个盒子(或虚拟盒子)上这样做,我可以获得root访问权限并做任何我想做的事情(有很多这些)。

    以下是一些资源。

    使用Java Native Access从Java调用Fortran:http://oms.javaforge.com/wiki/66061

    使用JNI从Java调用Fortran:http://www.math.ucla.edu/~anderson/JAVAclass/JavaInterface/JavaInterface.html

    使用Lahey / Fujitsu Fortran Enterprise的Fortran for .NET:http://www.lahey.com/lf71/lf71.htm

答案 4 :(得分:0)

这是一个用Fortran编写的Web应用程序:https://github.com/rlcarino/heeds。 Fortran程序通过FastCGI与nginx Web服务器通信。程序的数据存储在文本文件中;不正式'使用数据库。

可以在http://heeds.csu.edu.ph/中找到该程序的实时运行。该应用程序正在云中的服务器上运行。一些用户通过运行Free Basics的Android智能手机连接到它,而不需要单元数据,该智能手机可以在世界上的这个地方使用。