我将在不久的将来开始开发一个应用程序。该应用程序包括:
我的理由如下:
我对这个体系结构的主要关注是,与网站能够直接进行查询或第三方API调用相比,网站的性能会更低。
我还需要考虑其他的利弊吗?
发布于 2014-03-04 16:39:04
正如他们在“计算机科学”( Computer )中所说的那样,“一定程度的间接解决每一个问题”。
您可以查看您正在开发的面向服务的体系结构。前端应用程序使用从后端应用程序检索的数据。他们一起组成了一项服务。(前端应用程序可能运行在用户的机器上,如果它是一个瘦客户机(例如JavaScript制造),或者它可能运行在您的计算机上,如果它是一个胖客户机,需要执行复杂的计算,或者需要访问用户机器上的其他资源)。
这个特定的“建立一个间接的层次”的主要优点是你正在抽象出你的核心数据模型。许多不同的客户端可能使用相同的API检索它:移动应用客户端、无法从互联网访问的管理站点或环绕月球的卫星上的嵌入式客户端。此外,您可以自由地交换这些核心数据的存储方式:对您来说,这些数据是从DB中检索的,但是这些客户端并不关心下周后端是否从平面文件或NoSQL键值存储中检索数据。
主要的缺点是,如果您正在构建一个内部网中使用的简单网站,这可能会造成过度的损失。
正如@RobertHarvey注意到的,你对表现的担忧是没有根据的。实际上,能够交换后端可能使您可以扩展到性能更好的硬件或软件,而客户却没有注意到。
其他优点和缺点:记住在前端和后端之间要有一个非常清晰的协议--以前包之间的接口已经变成了一个远程API。拥有返回版本或API功能的API调用是有用的。如果客户通过互联网打电话,记住要考虑到它们可能是伪造的--试着加密和签名,就像它们是从当地分支机构寄到你中央办公室的邮件一样。
发布于 2014-03-04 16:23:30
你基本上是在描述一个服务层。
你对表演的担忧似乎毫无根据。实际上,您的服务层只是将您的API转换为必要的第三方API或SQL调用;开销应该是最小的。
https://softwareengineering.stackexchange.com/questions/231153
复制相似问题