【发布时间】:2026-02-24 08:15:02
【问题描述】:
所以我正在为办公室、前端、后端、移动性、客户帐户、在线注册、员工帐户、管理员帐户构建一个 Web 应用程序......整个九码。
我主要关心的一个问题(因为我以前没有做过)是用户实体交互。 目前我已经定义了 4 种方法,用户实体可以通过这些方法与其他用户进行交互。
1) 消息(来自用户...到单个或多个用户)
2) 通知(从后端到用户)
3) 任务(到和从用户...到单个或多个用户)
4) 邀请(来自用户...对单个或多个用户)
(将引入一个 XMPP 聊天引擎,需要记录,但那将在稍后说明)
我认为为每种类型实现一个 com 协议会很离谱,所以我创建了一个抽象层(请不要因为那个而杀了我,但这就是我的感受)
所以在每个用户中都会有 2 个密钥列表
private <Key> Sent_Parcels;
private <Key> Received_Parcels;
这些只是指向包裹实体(抽象层)的数组列表,其中将包含
private Key Sender; // Key of Sender User Entity
private List<Key>Recipients; // List of Keys of Recipients
private Type type; // Enum of Type : Message, Notification, Task, Invitation
private Key Payload; // Key of the payload object: Message Entity, Notification Entity ...
现在标准的创建、持久性、通知的东西......完全不用担心,因为它是一个单一的 com 协议,适用于不同的有效负载......从这一点开始不关心,因为我可以按 Parcel Type 过滤所以......
但是,这里有一些主要问题(记住大规模实施):
1) 假设发件人和所有收件人决定删除有效负载。这意味着创建指向此有效负载的所有 Parcel 实体都已消失……我如何找到任何人都不再需要的有效负载来删除它们并在 GAE 数据存储上节省宝贵、昂贵的存储空间。
2) 我很确定在用户之间实现一个 com 系统并不是那么简单,所以如果某个该主题的专家能过来告诉我这完全是垃圾,我会很高兴,这就是它的完成方式。
3) 我之所以选择这种方法,是因为对于 com 操作中的每个用户参与者而言,具有重复的小包裹实体、单个有效负载优于具有重复的 LARGE 有效负载(完全相同)。但是,拥有重复的有效载荷将意味着如果用户删除它,很好,很好,不必去挖掘仍然拥有有效载荷的人,因为他是唯一拥有它的实体,另一方面,我觉得这太浪费了空间
欢迎所有 cmets 和建议...非常感谢大家的一切!
【问题讨论】:
-
忘记了重要的事情!! ...实现之前阅读/仍然是新的东西会非常好......比如电子邮件。因此,关于如何完成该主题的任何想法......将是超级超级好添加在包裹打开时向发件人发送通知的功能
-
发送通知:这只是在收件人打开“包裹”时以编程方式创建新通知
标签: java entity-framework google-app-engine jpa google-cloud-datastore