我们想要实现一个API,我们有一个位于中央服务器上的数据库,以及一个由许多计算机组成的网络。 在这些计算机上,将来会使用不同的编程语言开发一些本地程序,一些是java语言,一些是perl,C ++,等等。
这些本地程序应该能够访问API函数并与数据库交互。 那么应该用什么语言编写API?这样它就能与其他语言绑定。是否有任何特定的架构应该实施? 是否有任何链接可以提供有用的信息?
答案 0 :(得分:3)
如果API是纯数据库访问,那么REST Web服务是一个合理的选择。它允许几乎任何语言的(合理)简单的界面,并允许您选择您认为最适合编写实际Web服务的任何语言。但是,通过这种方式,您需要为每次API调用支付额外网络呼叫的费用。如果将Web服务放在与数据库相同的主机(或本地网络)上,则可以最大限度地降低从Web服务到数据库的网络调用成本,从而降低额外调用API的成本。
如果API中包含业务逻辑,则有两种通过方法......
您可以将API编写为可以从多种语言使用的库。 C是一个很好的选择,因为大多数语言都可以链接C库,但是您希望使用它的语言也会产生很大的影响。例如,如果您知道它总是会被JVM上托管的语言使用,那么任何JVM语言都可能是一个相当不错的选择。
另一种选择是使用两者的混合。用于数据库访问的REST API,以及用多种语言编写的业务层库。这个想法是你在应用程序端有业务逻辑,但它很简单,你可以编写一个"客户端库"在多种语言中,它们知道如何调用REST API,然后将业务逻辑应用于它返回的结果。假设业务逻辑太复杂(即,仅限于合并/查看数据库数据的方式),那么这不是一个糟糕的解决方案。
好处是它应该相对容易提供一个"默认"可以由多种语言使用的库,以及您有时间实现它们的库的其他语言特定版本。对于确定需要对数据库进行哪些调用以及如何组合结果的情况可能很复杂,我发现这是一个相当不错的解决方案。
答案 1 :(得分:1)
我会求助于webservices。无论你使用什么语言,只要你有一个与webservices交互的框架,你就是好的。根据您的需要,您可以公开一个简单的REST API,或者使用SOAP / WSDL等等。