0

独自の自己ホスト型 WCF サービスを開発しており、いくつかの PHP アプリケーションがこのサービスを使用してデバイスと通信しています。

必要なデバイスにデータを送信するには、デバイス情報と送信するデータが必要です。逆に、データを取得する必要があります。

データを管理するための構造体がいくつかあります: Device、User、UserInfo、DisplayInfo、Events、Logs... データを送信するときは、次のようなものを使用します。

bool SetUsers(Device d, User[] u);

これは問題なく動作しますが、PHP ではデバイスごとにデータを送信するため、50 台のデバイスと 2000 人のユーザーがいる場合、2000 人のユーザーの 50 倍のデータを送信すると、より適切に実行できることがわかります。

したがって、次のようなものを使用できると考えました。

bool SetUsers(Device[] d, User[] u);

これも問題なく機能しますが、ほとんどの場合、すべてのユーザーがすべてのデバイスにアクセスする必要があるわけではないため、最新の方法は適切ではなく、最初の方法は多くの冗長データに送信されます。

私の質問は、50 台のデバイスに 2000 人のユーザーまたは 2000 人の userInfo または 2000 人の displayInfo を 1 回の呼び出しで送信する最良の方法は何ですか?

私は3つの可能な方法を考えました:

  1. Device Struct には、いくつかの Structs の可変プロパティが含まれます。データを送信する最良の方法、データを整理する最悪の方法。
  2. 各 Struct、User、UserInfo... に Device Struct を含め、コード内のデバイスに応じて並べ替えます。それが好きですが、それが最善の方法だとは思わないでください。
  3. すべてのデバイス + 関連するすべてのデータ + それらの 2 つを関連付ける 3 番目の Struct を送信します。各 Struct でカスタム ID を生成し、多対多の Struct を作成する必要があります。(正確な方法はわかりません)。

どれが最良の方法だと思いますか? たぶん、新しく改良されたものですか?

ありがとう!!!

4

1 に答える 1

0

私が正しく理解していれば、デバイスオブジェクトは複数のUsers、UserInfo、またはDisplayInfoに関連付けることができます。その場合、それらをDeviceUser、DeviceUserInfo、およびDeviceDisplayInfoオブジェクトとして論理的にグループ化し、その中にUser / UserInfo/DisplayInfoのIEnumerableコレクションを含めます。

例、

DeviceUser
- DeviceId (int)
- Users (IEnumerable<User>)
- Make (string)
- Year (int)
于 2013-02-07T07:55:23.797 に答える