0

アプリの応答性を改善しようとしています。ユーザーは、Song オブジェクトをプレイリストに追加したいことを示します。そのために、新しい Song オブジェクトを作成し、それをサーバーに保存して ID を設定します。サーバーが正常に応答したら、Song オブジェクトをプレイリストに追加します。

これには、ユーザーのアクションとアプリの応答の間にぎこちない遅延が生じるという副作用があります。

空の GUID を持つオブジェクトを NHibernate に渡す代わりに、クライアント側でエンティティの GUID を生成しても問題ないかどうか疑問に思っています (その後、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 に答える