Apache flex 有状态客户端中的对象完整性和缓存

Apache flex 有状态客户端中的对象完整性和缓存,apache-flex,silverlight,caching,object,Apache Flex,Silverlight,Caching,Object,我想知道在有状态客户端(如Flex或Silverlight应用程序)中存在哪些策略来处理对象完整性 我的意思是如下:考虑一个应用程序,在这个应用程序中有一个组和一个成员实体。组包含多个成员,并且成员可以属于多个组。视图列出了延迟加载的不同组(最初没有成员)。当请求组的详细信息时,所有成员都会被加载和缓存,因此下次我们不需要调用服务来获取组的详细信息和成员 现在,当我们请求另一个组的详细信息时,该组与已加载的组具有相同的成员,我们是否关心该成员已在内存中这一事实 如果我们不这样做,我会在编辑成员(

我想知道在有状态客户端(如Flex或Silverlight应用程序)中存在哪些策略来处理对象完整性

我的意思是如下:考虑一个应用程序,在这个应用程序中有一个组和一个成员实体。组包含多个成员,并且成员可以属于多个组。视图列出了延迟加载的不同组(最初没有成员)。当请求组的详细信息时,所有成员都会被加载和缓存,因此下次我们不需要调用服务来获取组的详细信息和成员

现在,当我们请求另一个组的详细信息时,该组与已加载的组具有相同的成员,我们是否关心该成员已在内存中这一事实

如果我们不这样做,我会在编辑成员(在第一个组中引用)时看到潜在的数据冲突,并且更改不会应用于其他成员实例。因此,要解决此问题,我们可以检查服务调用的结果(获取组详细信息)用于已加载的成员,然后用缓存的成员替换已加载的成员


有什么提示、想法或经验可以分享吗?

您所描述的内容通常由“一级缓存”(Hibernate中的“会话”;JPA中的“实体管理器”)解决它确保特定上下文中只存在特定实体的一个实例。正如您所建议的,这可以应用于从服务器获取的对象,以确保对特定实体的所有引用实际上都是对同一对象实例的引用。您还需要一种机制来确保创建的实体nside AVM存在于相同的上下文中,因此它们具有相似的逻辑应用于它们

Granite数据服务项目有一个名为“潮汐”的项目,旨在解决这个问题:


就DDD而言,重要的是不要将后端设计为一个简单的数据访问API,例如简单地公开一组DAO或存储库。客户端应用程序不可信,事实上很容易使用调试代理(如Charles)进行操作。我总是设计一个专为UI定制的服务API(这样一次调用就可以获取屏幕数据)并且执行了必要的安全性或验证逻辑,通常使用注释和Spring AOP。

我要做的是创建一个客户端应用程序服务,该服务对数据请求进行缓存和服务。这将处理缓存中是否已经存在对象。如果您使用DDD,则需要决定要做什么成为您的聚合根实体。组或成员。您不能让两者都控制对方。需要有一个点来管理加载等。请在加拿大ALT.NET OpenSpaces的DDD上查看此视频