设计:将“应用程序服务器”与“Web服务器”分开是否有意义?

时间:2016-02-20 15:00:31

标签: angularjs web

我想建立一个“应用程序”,它将被消费:

  1. 使用浏览器访问网站的用户。
  2. 使用HTTPS / REST API与其进行交互的集成商。
  3. 使用本机应用在移动设备上运行它的用户。
  4. 暂时搁置负载平衡或数据库问题,我最初的想法是使用这些高级后端组件来构建它:

    1. “Application Server”支持第三API集成商的外部API(顶部列表中的#2)和移动应用程序(顶部列表中的#3)和单页Web应用程序使用的内部API。我们称这个服务器为“app.myapplication.net”
    2. “网站服务器” - 支持我公司的公共网站,并提供AngularJS Web应用程序页面,这些页面利用“Application Server”中的内部API来获取数据。我们称之为“www.myapplication.com”
    3. 我的动机是完全分离前端和后端工作。

      这是一种流行的架构方法吗?是否有意义?

1 个答案:

答案 0 :(得分:3)

这确实是最常用的方法。但是,对于较小的项目,您可能会开始将它们放在一起并稍后拆分。 从应用程序资源中分割静态内容有几个优点。在我所参与的项目中,专业人员是资源,发布管理以及较小程度上的浏览器限制。

  1. Cookie很贵;如果您将静态和应用程序内容放在一起,那么每个小请求都将承担携带cookie的负担。 Cookie还意味着浏览器会认为对服务器的所有请求可能对不同的用户有不同的响应,因此可能会破坏资源的缓存。如果您从没有cookie的域提供静态服务,则可以确保缓存正常工作。
  2. 资源使用。您可能已经提供了其他服务中的静态内容,您提到的angularjs,您可能会引用另一个域名。较旧的浏览器喜欢这样,因为它们将对单个Web服务器的并发请求数限制为2.因此,跨多个域分割资源是常见的,域名分片"。这允许浏览器并行工作。
  3. 发布管理。现在这取决于将在应用程序上工作的团队,但我们通常希望将应用程序和前端javascripts分开,以便前端程序员和设计人员可以单独发布静态内容而无需触发发布应用程序。
  4. 效果即可。根据应用程序和服务器的不同,如果不需要扫描.htaccess等,您可能会发现可以获得更高的性能。
  5. 内容分发网络主要为您提供静态内容分发,以便您的客户可以在更近的位置访问繁重的文件,并降低延迟。您可以在以后转移到CDN,从第一天开始可能不需要,但如果您的应用程序位于两个不同的域中,那么当您/决定这样做时,您可能会发现此练习更容易。< / LI>