2011-05-25 121 views
3

我们想要实现一个API,我们有一个位于中央服务器上的数据库,以及许多计算机的网络。 在这些计算机上,将来会使用不同的编程语言开发若干本地程序,其中一些用于java,一些用于perl,C++等等。应该用什么语言编写API?

这些本地程序应该能够访问API函数和与数据库交互。 那么应该用什么语言编写API呢?以便它对其他语言具有约束力。是否有任何特定的架构应该实施? 有没有提供有用信息的链接?

+2

我会说XML – 2011-05-25 20:57:44

+1

我使用乐高积木创建我的API ...不,但真的,我通常会使用REST API,可能使用JSON,这得到了很好的支持(http://www.json.org/) )。即使你使用的语言不支持它,语法也很容易解析imho。 – 2011-05-25 21:01:37

回答

3

如果API是纯数据库访问,那么REST Web服务是一个合理的选择。它允许几乎任何语言的(合理的)简单的界面,并允许您选择任何您认为最适合编写实际Web服务的语言。但是,以这种方式执行此操作时,您需要为每个API调用支付额外的网络调用费用。如果将Web服务与数据库放在同一台主机(或本地网络)上,则可以将从Web服务到数据库的网络调用的成本降到最低,从而减少额外调用API的成本。

如果原料药有业务逻辑在里面,有两家通过方法...

你可以写的API为可从多语言使用的库。 C是一个很好的选择,因为大多数语言都可以链接C库,但是您期望使用它的语言也会产生很大的影响。例如,如果您知道它始终将被托管在JVM上的语言使用,那么任何JVM语言都可能是一个相当不错的选择。

另一种选择是使用两者的混合。用于数据库访问的REST API,以及用多种语言编写的业务层库。这个想法是你在应用程序端有商业逻辑,但它很简单,你可以用多种语言编写一个“客户端库”,知道如何调用REST API,然后将业务逻辑应用到它返回的结果。假设业务逻辑不太复杂(即仅限于合并/查看数据库数据的方式),那么这不是一个糟糕的解决方案。

好处是它应该比较容易提供一个可以被多种语言使用的“默认”库,以及其他可用于实现它们的语言特定版本的库。对于确定需要对数据库进行哪些调用以及如何合并结果的情况可能很复杂,我认为这是一个相当好的解决方案。

+0

感谢您的详细解答!所以我可以从中得出结论:我应该使用REST,因为API只能访问网络上各台计算机的数据库(存储/读取数据)。 – SLA 2011-05-26 17:40:03

1

我会诉诸web服务。只要你有一个与web服务交互的框架,你就可以使用哪种语言。根据您的需要,您可以公开一个简单的REST API,或者全程使用SOAP/WSDL等。

+0

也许一些OData,如果你是这样的事情。 – recursive 2011-05-25 21:02:28

相关问题