Google app engine 我们是否应该将应用程序引擎上下文存储在全局变量中,而不是为每个请求创建它?

Google app engine 我们是否应该将应用程序引擎上下文存储在全局变量中,而不是为每个请求创建它?,google-app-engine,go,Google App Engine,Go,我们目前在每个请求上生成应用程序引擎上下文。我们在其他地方读到,这并不重要,因为应用程序引擎本质上缓存了上下文 func addHandler(res http.ResponseWriter, req *http.Request) { c := appengine.NewContext(req) 我们的问题:将应用程序引擎上下文存储在全局变量中有意义吗?出于以下原因,我建议不要这样做: 保持全局状态始终是一种危险:它可能会过时、损坏,并且通常会破坏隔离和封装 由于AppEngine在放

我们目前在每个请求上生成应用程序引擎上下文。我们在其他地方读到,这并不重要,因为应用程序引擎本质上缓存了上下文

func addHandler(res http.ResponseWriter, req *http.Request) {
    c := appengine.NewContext(req)

我们的问题:将应用程序引擎上下文存储在全局变量中有意义吗?

出于以下原因,我建议不要这样做:

  • 保持全局状态始终是一种危险:它可能会过时、损坏,并且通常会破坏隔离和封装

  • 由于AppEngine在放大或缩小时的工作方式,您不知道它的真正全局性有多大,也不知道其他请求可能正在读/写它

  • 并发性。全局变量是并发的祸根。保持理智,不要在web应用程序中使用全局变量


  • 我建议反对,理由如下:

  • 保持全局状态始终是一种危险:它可能会过时、损坏,并且通常会破坏隔离和封装

  • 由于AppEngine在放大或缩小时的工作方式,您不知道它的真正全局性有多大,也不知道其他请求可能正在读/写它

  • 并发性。全局变量是并发的祸根。保持理智,不要在web应用程序中使用全局变量


  • 我建议反对,理由如下:

  • 保持全局状态始终是一种危险:它可能会过时、损坏,并且通常会破坏隔离和封装

  • 由于AppEngine在放大或缩小时的工作方式,您不知道它的真正全局性有多大,也不知道其他请求可能正在读/写它

  • 并发性。全局变量是并发的祸根。保持理智,不要在web应用程序中使用全局变量


  • 我建议反对,理由如下:

  • 保持全局状态始终是一种危险:它可能会过时、损坏,并且通常会破坏隔离和封装

  • 由于AppEngine在放大或缩小时的工作方式,您不知道它的真正全局性有多大,也不知道其他请求可能正在读/写它

  • 并发性。全局变量是并发的祸根。保持理智,不要在web应用程序中使用全局变量


  • 我如何保持我的功能解耦?在任何地方都需要上下文,即使是日志记录,也需要业务逻辑功能(不需要知道有请求)必须传入上下文。在不了解体系结构的细节的情况下,我想说的是考虑采用某种MVC风格的模式。让控制器处理请求,将所有必要的数据传递给具有业务逻辑的模型,并将所有需要返回给控制器的数据返回给视图(无论是实际视图还是json响应)。当然,这就是我们试图实现的目标。登录到模型内部的syslog,或者让模型发出外部http请求(我当前的用例),或者写入数据存储,似乎都不需要访问初始请求。是的,我遇到过一些用例,你肯定需要混合/模糊模型/控制器和实用程序之间的界线。这是给定平台约束的“付出的代价”。我如何保持我的功能解耦?在任何地方都需要上下文,即使是日志记录,也需要业务逻辑功能(不需要知道有请求)必须传入上下文。在不了解体系结构的细节的情况下,我想说的是考虑采用某种MVC风格的模式。让控制器处理请求,将所有必要的数据传递给具有业务逻辑的模型,并将所有需要返回给控制器的数据返回给视图(无论是实际视图还是json响应)。当然,这就是我们试图实现的目标。登录到模型内部的syslog,或者让模型发出外部http请求(我当前的用例),或者写入数据存储,似乎都不需要访问初始请求。是的,我遇到过一些用例,你肯定需要混合/模糊模型/控制器和实用程序之间的界线。这是给定平台约束的“付出的代价”。我如何保持我的功能解耦?在任何地方都需要上下文,即使是日志记录,也需要业务逻辑功能(不需要知道有请求)必须传入上下文。在不了解体系结构的细节的情况下,我想说的是考虑采用某种MVC风格的模式。让控制器处理请求,将所有必要的数据传递给具有业务逻辑的模型,并将所有需要返回给控制器的数据返回给视图(无论是实际视图还是json响应)。当然,这就是我们试图实现的目标。登录到模型内部的syslog,或者让模型发出外部http请求(我当前的用例),或者写入数据存储,似乎都不需要访问初始请求。是的,我遇到过一些用例,你肯定需要混合/模糊模型/控制器和实用程序之间的界线。这是给定平台约束的“付出的代价”。我如何保持我的功能解耦?在任何地方都需要上下文,即使是日志记录,也需要业务逻辑f