0

我正在尝试提高应用程序的响应能力。用户表示他们想要将 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);
});

不过,我担心碰撞。我可以做?还是客户端和服务器端生成的 GUID 大多相同?

4

2 回答 2

1

在客户端生成 ID 时,您不能保证唯一的 ID,因为客户端 JavaScript 代码可以由精通的用户修改(或者可以修改发送到服务器的请求)。所以你应该在服务器端生成要保存的 GUID。

于 2012-12-15T21:24:40.950 回答
0

您提到的生成GUID的方法绝对不安全,迟早会导致冲突。您绝对应该在服务器端生成 GUID。

你有什么理由创建新的 Song 对象吗?
您是在复制现有对象还是创建全新对象?
如果是副本,您应该考虑将原件链接到播放列表(此时您不必等待 GUID)。

于 2012-12-15T21:43:26.240 回答