将Web服务直接公开给Web客户端还是在两者之间保持薄服务器端脚本层?

最大值:

我正在开发REST Web服务(Java,Jersey)。我这样做的目的是希望通过Javascript直接访问Web服务。有些本能告诉我这不是一个好主意,但我无法真正解释这种本能。我的自然方法是让Web服务执行真正的逻辑和数据库访问,但是还具有一些(相对较薄的)服务器端脚本层(例如,在PHP中)。客户将与PHP层进行对话,而PHP层又将与Web服务进行对话。(该Web服务对于apache / PHP服务器来说是相当本地的,并且隐式信任来自脚本层的调用。脚本层将负责会话管理。)(顺便说一句,我并不是在谈论将Web服务隐藏在Apache后面,而这只是简单地重定向呼叫。)

但是当我发现自己缺乏用语言/参数来解释我的直觉时,我想知道自己的直觉是否正确-请注意,尽管我一直在用各种语言和框架开发各种软件,例如17年,但这是第一次开发Web服务。

所以我的问题基本上是:您对此有何看法?是否有任何标准设置?我的直觉是完全错误的吗?还是部分?; P

非常感谢,

最高

PS:我可能会添加一些有关整个应用程序的计划用法的信息:

  • 将由不同类型的用户访问,部分用户是公众,部分特权
  • 因此,所有主要的操作系统/浏览器组合都可以作为客户端
  • 但是,写客户不是我的责任
  • 可能会有非常高的负载/流量
  • Web服务的逻辑将在以后大规模扩展为另一种产品,这基本上是当前项目功能的超集
  • 很有可能在某个时候公开一个API,供第三方开发者使用-显然,存在一些限制
  • 在某个时候,产品的公众视野也应该可以通过智能手机访问(换句话说,也许是该网站的定制版本,以适应较小的显示器和不同的输入方法)
达夫:

我不认为直接通过例如JavaScript访问REST Web服务通常不是一个坏主意,因为REST体系结构是为之而设计的。对于您的用例,您可能需要考虑一些含义:

  • 您的Web服务将必须照顾用户管理。由于REST体系结构不支持服务器端会话状态,因此您将必须对每个请求进行身份验证和授权。用户将必须在客户端维护其状态。
  • 您的Web服务实现将必须处理诸如缓存和负载平衡之类的问题,以及您可能已分配给所有其他事情的问题,例如PHP“ proxy”脚本

您的要求:

所有主要的操作系统/浏览器组合都可以作为客户端

由于您的Web服务将仅传递数据(例如JSON或XML),因此这不成问题。JavaScript部分只需要注意发出正确的请求即可。

可能会有非常高的负载/流量

如果严格遵循REST体系结构,则可以使用http缓存。但是请记住,无状态本质将始终导致更多流量。

Web服务的逻辑将在以后大规模扩展为另一种产品,这基本上是当前项目功能的超集

关于开放式Web服务的好处是您可以将它们松散地耦合在一起。

很有可能在某个时候公开一个API,供第三方开发者使用-显然,存在一些限制

再次,使用RESTful Web服务,您已经为开发人员提供了API。由您的客户决定这是好事还是坏事。

在某个时候,应该可以通过智能手机访问产品的公众视野

另一个使您的REST Web服务可公开访问的专家。大多数智能手机API支持HTTP请求,因此您只需要为直接调用Web服务的特定smarphone平台开发GUI。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Web图表,服务器端还是客户端?

我怎么知道一个库是服务器端,客户端还是两者都存在?

Alfresco中的存储库层VS Web层VS服务器端VS客户端端

分页:服务器端还是客户端?

将地址转换为GeoPoint-服务器端还是客户端?

将客户端-服务器应用程序转换为 Web 连接:REST 还是客户端查询?

HTML5:我是否需要同时在客户端和服务器端验证Web表单,还是可以只在客户端进行验证?

如何将变量从服务器端返回到客户端脚本?

在哪里运行复杂算法?服务器端还是客户端端?

解析Django模型服务器端还是客户端端?

Devexpress MVC扩展。这些扩展是服务器端还是客户端端?

哪一个负责生成HTTP会话ID?客户端浏览器,服务器还是两者?

使Web服务客户端与更新的服务器兼容

降价解析器应该是客户端还是服务器端

Firebase,客户端服务器端与云功能服务器端

JSP到底在哪里运行?在客户端还是服务器端?

React是使用服务器端渲染还是客户端渲染?

是用于客户端还是服务器端的passportjs?

分页/可排序列的方式(客户端还是服务器端)?

在ASP.NET服务器端还是客户端中的HTML控件?

如何检查代码是在GWT的服务器端还是客户端执行的?

我如何知道库是服务器端库还是客户端库?

在MVC中,model.isvalid是检查客户端还是服务器端?

Ember.js是服务器端还是客户端?

是在客户端还是在服务器端渲染图像?

Node.js - 从服务器端还是客户端获取?

输入验证是针对企业应用程序的客户端还是服务器端?

.Net MAUI Blazor 应用程序 | 服务器端还是客户端?

动态路由在Next JS中呈现在服务器端还是客户端?