![](/img/trans.png)
[英]It is fine to translate guids generated client-side directly to server-side, store them, etc? No higher risk of collisions?
[英]Should I let NHibernate generate GUIDs for created entities, or is it safe to generate the GUIDs client-side?
我正在尝试提高应用程序的响应速度。 用户指示他们想要将Song对象添加到播放列表。 为此,我创建了一个新的Song对象,将其保存到服务器中以设置其ID,然后,当服务器成功响应时,我将Song对象添加到播放列表中。
这样做的副作用是,在用户的操作和应用的响应之间会给用户带来尴尬的延迟。
我想知道是否可以为我的实体客户端生成GUID,而不是将具有空GUID的对象传递给NHibernate(然后在与Sql Server DB一起工作时对其进行设置)。
我将使用此方法来生成GUID :
'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
不过,我担心Collisons。 我可以做? 还是客户端和服务器端的GUID大致相同?
在客户端上生成ID时,您不能保证唯一的ID,因为精通的用户可以修改客户端javascript代码(或者可以修改发送到服务器的请求)。 因此,您应该在服务器端生成要保存的GUID。
您提到的生成GUID的方法绝对不安全,迟早会导致冲突。 您绝对应该在服务器端生成GUID。
您是否有任何理由创建新的Song对象?
您是要复制现有对象还是创建全新的对象?
如果是副本,则应考虑将原始链接到播放列表(然后不必等待GUID)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.