Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 全栈应用程序&x2B;Symfony2中的API-最佳方法_Rest_Api_Symfony - Fatal编程技术网

Rest 全栈应用程序&x2B;Symfony2中的API-最佳方法

Rest 全栈应用程序&x2B;Symfony2中的API-最佳方法,rest,api,symfony,Rest,Api,Symfony,我想问问以前做过这件事的人。我有一个用symfony2.x编写的完整堆栈(应用程序逻辑+模板等)应用程序。现在,我需要将RESTAPI添加到我目前拥有的内容中,并且我希望避免将这两个内容混合在一起,因为API需要加载细枝和大量其他组件/捆绑包,这肯定会影响性能。到目前为止,我确定了三种方法: 编写一个单独的应用程序(这将需要大量重构来分离当前应用程序的各个部分,使它们可以被这个新的API应用程序重用) 使用新环境(现在我们称之为“api”) 使用新内核(例如ApiKernel) 虽然第一个对我来

我想问问以前做过这件事的人。我有一个用symfony2.x编写的完整堆栈(应用程序逻辑+模板等)应用程序。现在,我需要将RESTAPI添加到我目前拥有的内容中,并且我希望避免将这两个内容混合在一起,因为API需要加载细枝和大量其他组件/捆绑包,这肯定会影响性能。到目前为止,我确定了三种方法:

  • 编写一个单独的应用程序(这将需要大量重构来分离当前应用程序的各个部分,使它们可以被这个新的API应用程序重用)
  • 使用新环境(现在我们称之为“api”)
  • 使用新内核(例如ApiKernel)
  • 虽然第一个对我来说很明显,但在这个时候并不真正可行。接下来的两个对我来说有些模棱两可。从Symfony文档:

    环境使用不同的配置执行相同的应用程序,而内核可以执行相同应用程序的不同部分

    所以我可以想象内核场景,它有单独的前端控制器,加载新内核,加载自己的配置并注册它的包。但在新环境中,我们还可以加载特定于环境的配置并注册其他捆绑包集

    哪一个性能更好?(假设全栈应用程序使用几个相当重的捆绑包,总共使用大约15个第三方捆绑包,而API应用程序将使用2-3个第三方捆绑包,这些捆绑包需要是轻量级的)。这里的次要因素是可维护性


    如果您知道其他方法可以很好地处理此问题,请毫不犹豫地给出您的建议(与上面列出的解决方案相比有优缺点)。

    在开始任何活动之前,您是否检查过它是否确实影响了您的性能?是的,我已经分析了当前应用程序一段时间了。与总执行时间(高达70%)相比,初始化时间非常重要。它有很多API不需要的东西。您是否在debug on或prod的开发模式下检查了它,以及所有的优化?老实说,一开始使用REST api时,我们在性能方面遇到了很多困难,但在以某种方式拆分应用程序之前,您可以做很多事情。我主要是在开发模式下测试它,但我也在prod中尝试过(启用了探查器,我不知道探查器对结果的影响有多大)。老实说,我还没有任何与这个API相关的东西,所以我真的很想这样做,并将它(在某种程度上)从主应用程序中分离出来。尤其要记住,在不久的将来,完整的应用程序很可能会被API完全取代,前端将使用Javascript框架构建。这就是我们所做的。我还是不明白你为什么确定你必须在这里做点什么。除了一个新内核之外,我还建议使用一个不同的“env”。但我还是会避免。祝你好运。在这里开始任何活动之前,你是否检查过它是否真的影响了你的性能?是的,我已经分析了当前的应用程序一段时间了。与总执行时间(高达70%)相比,初始化时间非常重要。它有很多API不需要的东西。您是否在debug on或prod的开发模式下检查了它,以及所有的优化?老实说,一开始使用REST api时,我们在性能方面遇到了很多困难,但在以某种方式拆分应用程序之前,您可以做很多事情。我主要是在开发模式下测试它,但我也在prod中尝试过(启用了探查器,我不知道探查器对结果的影响有多大)。老实说,我还没有任何与这个API相关的东西,所以我真的很想这样做,并将它(在某种程度上)从主应用程序中分离出来。尤其要记住,在不久的将来,完整的应用程序很可能会被API完全取代,前端将使用Javascript框架构建。这就是我们所做的。我还是不明白你为什么确定你必须在这里做点什么。除了一个新内核之外,我还建议使用一个不同的“env”。但我还是会避免。祝你好运