Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 电子商务网站体系结构_Java_Security_Rest_Architecture_E Commerce - Fatal编程技术网

Java 电子商务网站体系结构

Java 电子商务网站体系结构,java,security,rest,architecture,e-commerce,Java,Security,Rest,Architecture,E Commerce,我想为电子商务网站应用程序创建一个rest体系结构 事实上,会有: 前台网站 作为内容管理器的后台网站,以及客户服务 处理所有函数逻辑的RESTful WS 我对这种架构有几个问题: 1-它是电子商务应用程序的良好体系结构吗 2-RESTful WS必须是从外部无法访问的,或者必须是安全的,才能被外部访问(以防我想让您能够访问产品描述,例如Amazon对其产品所做的描述,但不能访问“安全的”数据) 3-如何保护WS?认证?授权?(我想我可以使用Spring Security…) 4-对于支付

我想为电子商务网站应用程序创建一个rest体系结构

事实上,会有:

  • 前台网站
  • 作为内容管理器的后台网站,以及客户服务
  • 处理所有函数逻辑的RESTful WS
我对这种架构有几个问题:

1-它是电子商务应用程序的良好体系结构吗

2-RESTful WS必须是从外部无法访问的,或者必须是安全的,才能被外部访问(以防我想让您能够访问产品描述,例如Amazon对其产品所做的描述,但不能访问“安全的”数据)

3-如何保护WS?认证?授权?(我想我可以使用Spring Security…)

4-对于支付等交易案例,如何在其余WS中完成?或者我必须创建一个独立的库,用于两个网站


非常感谢您。

最近,当我获得第一次实习机会时,我刚刚开始实施一个电子商务web应用程序。事实上,尽管我没有使用RESTful WS,但我也使用了与您在问题中提到的类似的体系结构

根据我的尝试和经验,我觉得将面向客户的前端web服务与面向员工的后端web服务分开非常方便。首先,这将防止两种web服务的代码混合在一起。因此,将来更容易维护代码。我能想到的另一个优点是,一些公司不希望他们的员工在办公室外访问web服务。因此,如果将这两种web服务分开,就可以很容易地在Internet上访问前端web服务,并使后端web服务只能在公司办公室内本地访问。如果您的后台web服务被允许在线访问,我认为这种体系结构仍然可以在安全方面对您有所帮助。例如,假设您的后台web服务可以通过URL访问“http://mydomain.com/back/". 如果您的员工不向其他人透露“/back”,没有人会知道您的back服务在这里可用

此外,关于“处理所有功能逻辑的RESTful WS”,我不确定这是否是个好主意。例如,在我的web应用程序中,尽管员工和普通用户都可以登录到系统中,但实际上我为他们提供了两种不同的“登录”方法。原因是,在登录期间,如果请求来自员工,我需要检查其他信息。此外,登录后,我发送回员工和用户的cookie也包含不同的信息集。因此,我认为在可能的情况下,最好将功能逻辑部分分开。将来维护代码也会更容易

关于如何保护您的WS,我认为您所写的是正确的。在用户可以访问任何类型的服务之前,请他登录。此外,在用户访问特定类型的服务之前,请检查他是否有权访问该服务。这就是我在我的系统中所做的

最后,对于支付之类的事务案例,我不确定使用RESTful WS是否是一个好主意。我必须再次承认,我以前从未使用过RESTful WS,因此,我的观点可能不可靠。然而,根据甲骨文的:

如果您想执行事务,我认为您的应用程序必须始终在某个时间点记住有关客户机的一些信息。例如,你需要记住他购物车里的物品,或者当客户输入他的信用卡号时,你需要封锁他在电影院预订的座位

那是我的2美分!如果我错了,请纠正我

“1-它是电子商务应用程序的良好体系结构吗?”

就我个人而言,我认为在这种情况下使用RESTful架构是一种浪费。您最好将必要的逻辑编码到包含在前端和后端办公室中的公共库中

为什么?

简单地说,每个服务调用都需要web服务器处理另一个请求。这意味着要在本地执行额外的工作,以创建请求、将数据从常规内存对象转换为post变量并发送请求。此外,接收方必须响应请求,将请求变量转换回可用的内容并对其进行处理

如果您决定RESTful服务需要驻留在与托管前台和后端的web服务器完全不同的机器上,那么您需要额外的要求,例如在本地网络(电缆、路由器、NIC等)上增加负载,以推动这一点

简言之,有许多步骤增加了内存和处理器的需求,但却没有什么回报。此外,它还极大地增加了您必须编写的代码量,而且几乎没有ROI。额外的代码将归结为不断地将数据从一种类型编组到另一种类型:例如,int值编组为字符串,用于构造post查询,然后在接收post的接收方上,将其转换回int(使用适当的类型和边界检查)并进行处理

有没有一种情况我会提倡使用REST来实现这一点?内服?否。如果需要通过外部第三方应用程序拨打电话,则为是

“2-必须从外部无法访问RESTful WS…”
不可以。您可以在本地网络的范围内完全控制这一点

“3-如何保护WS.”
这里有很多方法,一点都不好笑。您可以加密流量,您可以要求为每个请求提供用户凭据,这些请求甚至可能只是一个经过验证的API密钥。不管怎样,这两件事你都应该做

“4-用于事务CA
RESTful design may be appropriate when the web services are completely stateless. 
A good test is to consider whether the interaction can survive a restart of the server.