javascript – AngularJS Web服务是否应返回响应的深层副本?
作者:互联网
我有一个长轮询的Web服务.最近的响应被缓存.只要有新数据,Web服务就会通知用户.
返回响应的深层副本或者是否应该与所有订阅者共享数据是一种好习惯吗?或者仅仅依赖于用例?
解决方法:
乍一看,我认为这看起来像是需要在使用上更广泛的情况.
这项服务提供什么.它是只读数据还是负责管理数据修改的服务?一旦你回答了它,它可能会更容易,所以看看你应该如何处理它.
但事实是,服务应该拥有数据,数据的订阅者不应该能够篡改结果.如果订阅者只应该读取数据,那么应该强制执行,但即使他们修改数据,直接在对象本身上这样做也是不好的做法 – 特别是/特别是因为有相同数据的许多订阅者.
最后,我认为你需要为每个订阅者提供数据的深层副本,如果这太过消耗,请考虑为订阅者提供浅拷贝并公开一个接口来查询嵌套数据 – 这也将返回数据副本.
数据的任何订阅者都应该将数据传递给负责保存数据的方法,例如service.SaveSomeInformation(responseInformation).
TL; DR
不要与订户共享数据引用,为每个订户提供数据(子集)的副本.
祝好运
可靠的来源
http://martinfowler.com/eaaCatalog/serviceLayer.html
Defines an application’s boundary with a layer of services that
establishes a set of available operations and coordinates the
application’s response in each operation.
和
… . It encapsulates the application’s business logic, controlling
transactions and coor-dinating responses in the implementation of its
operations.
标签:javascript,angularjs,design-patterns,angular-services 来源: https://codeday.me/bug/20190628/1318446.html