谁必须为新实体生成标识符?

Who must generate identifiers for new entities?

我作为 iOS 开发人员工作了 4 年多,我也做过一些其他平台并实践过 .net。几天前,我争论过谁必须为新创建的实体生成标识符 - 客户端还是服务器?

有一个客户端-服务器应用程序,客户端发送带有 'name'、'description' 和其他东西的创建请求。但是服务器端的人说我还必须生成 GUID 并将其发送到这个实体中。

我没有发现生成 GUID 有什么大问题,但我不确定将此责任交给客户端是否正确。

有什么想法吗?也许有利有弊?

UUID 普遍 唯一意味着谁生成它们并不重要,即使有多方没有实时或根本不互相交谈。

这可以实现诸如客户端离线创建和使用 UUID(甚至可能是多个对象相互引用)等场景,然后稍后再上传它们而无需担心冲突。这是否 "right" 是一个见仁见智的问题,可能取决于您的应用程序的具体情况,但它肯定是一个 有效 模式。