gpt4 book ai didi

java - App Engine 服务的适当范围

转载 作者:行者123 更新时间:2023-11-29 05:55:39 25 4
gpt4 key购买 nike

创建 servlet 时 App Engine 服务的适当范围是什么:静态、实例还是本地? 每个的含义是什么?看起来你应该希望在尽可能广泛的范围内使用它们,以避免重新创建(或重新检索)它们的开销,但我想知道这是否会导致数据重用不当,特别是如果 <threadsafe>true</threadsafe> .


下面提供了每个范围的示例。 MemcacheService 将在下面的示例中使用,但我的问题适用于所有服务(尽管我不确定答案是否取决于所使用的服务)。我通常使用 MemcacheService DatastoreService PersistenceManager ChannelService UserService

静态范围:

public class MyServlet extends HttpServlet {
private static MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService();

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
memcacheService.get("x");
}
}

实例成员:

public class MyServlet extends HttpServlet {
private MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService();

@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
memcacheService.get("x");
}
}

本地范围:

public class MyServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp) {
MemcacheService memcacheService = MemcacheServiceFactory.getMemcacheService();
memcacheService.get("x");
}
}

最佳答案

GAE 是一个分布式系统,它的所有服务都在单独的服务器上运行。因此,当您调用服务时,它会在内部序列化请求(afaik 使用 Protocol Buffer )将其发送到运行该服务的服务器,检索结果并将其反序列化。

所以所有的 *Service 类基本上都是序列化/反序列化代码的非常薄的包装器。参见示例 source of MemcacheService .

关于范围:无需优化 *Service 类,因为它们是非常薄的包装器,与整个服务往返相比,创建它们所花费的时间可以忽略不计。

关于java - App Engine 服务的适当范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12238237/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com