我在 GAE 上构建了一个服务器,它通过 HTTP POST 处理 6 种不同类型的请求,所有这些请求都涉及创建、更新或从数据存储中删除对象。最好的设计是什么?我会告诉你我目前的设计并表达一些其他的。
- 我目前的设计是将所有请求发送到同一个 servlet,并使用“action”参数作为 POST 的一部分来区分和处理不同的请求。服务器应运行的代码包含在此处。
例如
public void doPost(HttpServletRequest request, HttpServletResponse response) {
if (request.getParameter("action").equals("action_1")) {..code..}
if (request.getParameter("action").equals("action_2")) {..code..}
.
.
.
if (request.getParameter("action").equals("action_n")) {..code..}
}
2._与上面类似,但不是此处的代码,此 servlet 仅充当集中式 servlet,并为该操作调用专用的 servlet。
3._每个操作只有一个专用的 servlet。
上述设计的优缺点是什么?在 GAE 上设置服务器的首选方法是什么?访问数据存储会影响我的设计吗?
最佳答案
我也有类似情况。我从您的选项 1 开始,效果很好。唯一的问题是它需要大量的参数解析,将字符串转换为整数等等,以及命令名称到方法的手动映射。选项 2 和 3 同样费力,但更糟糕的是因为您必须创建一堆辅助方法。如果我必须重新做一遍,我会使用一个为我完成所有工作的库,比如这个(我实际上正在考虑转换成这个):http://code.google.com/p/json-rpc/ .瞧,没有参数解析或手动创建帮助类!这恰好实现了一个 json rpc 客户端-服务器接口(interface),如果你正在做一个 ajax“胖客户端”,这很好。如果您在服务器端生成大部分 HTML,您可能需要另一种解决方案。
关于google-app-engine - Google App Engine Servlet 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5957082/