问题描述
|
我们要实现一个API,我们有一个位于中央服务器上的数据库,以及许多计算机组成的网络。
在这些计算机上,将来将使用不同的编程语言来开发一些本地程序,其中一些使用Java,一些使用Perl,C ++等。
这些本地程序应该能够访问API函数并与数据库进行交互。
那么API应该用哪种语言编写?这样它将与其他语言绑定。是否应实施任何特定的体系结构?
是否有任何链接可以提供有关此的有用信息?
解决方法
如果API是纯数据库访问,则REST Web服务是一个合理的选择。它允许几乎所有语言都提供(合理)简单的界面,并允许您选择最适合编写实际Web服务的任何语言。但是,通过这种方式,您要为每个API调用支付额外的网络调用费用。如果将Web服务与数据库放在同一主机(或本地网络)上,则可以使从Web服务到数据库的网络调用成本降到最低,从而减轻了对API的额外调用的成本。
如果API中包含业务逻辑,则有两种通过方法...
您可以将API编写为可用于多种语言的库。 C是一个很好的选择,因为大多数语言都可以链接C库,但是您希望使用它的语言也会产生很大的影响。例如,如果您知道JVM上托管的语言将始终使用它,那么任何JVM语言都可能是一个不错的选择。
另一个选择是将两者混合使用。用于数据库访问的REST API,以及用多种语言编写的业务层库。想法是您在应用程序端具有业务逻辑,但是它很简单,您可以用多种语言编写一个“客户端库”,该语言知道如何调出REST API,然后将业务逻辑应用于结果返回。假设业务逻辑不是太复杂(即,限于合并/查看数据库数据的方式),那么这并不是一个不好的解决方案。
好处是,提供一个可以被多种语言使用的“默认”库,再加上您有时间实现它们的库的其他特定于语言的版本,应该相对容易。对于弄清楚需要对数据库进行哪些调用以及如何合并结果的情况可能很复杂的情况,我发现这是一个相当不错的解决方案。
,我将诉诸网络服务。只要您具有与Web服务交互的框架,就可以使用哪种语言都没关系。根据您的需求,您可以公开一个简单的REST API或完全使用SOAP / WSDL等。