使用不同Structs将相关数据发送到WCF的最佳方法

时间:2013-02-07 07:45:06

标签: c# php .net wcf

我们开发了自己的自托管WCF服务,并且有几个PHP应用程序使用此服务与设备进行通信。

要将数据发送到我们需要的设备,设备信息和我们要发送的数据,我们还有相反的方式来获取数据。

我们有几个Struct来管理数据:Device,User,UserInfo,DisplayInfo,Events,Logs ...... 当我们发送数据时,我们使用类似的东西:

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

这工作正常,但是我们使用PHP发送每个设备的数据,因此如果我们有50个设备和2000个用户,我们会发送50倍于2000个用户,您可以看到这可以做得更好。

所以我们认为我们可以使用类似的东西:

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

这也很好用,但大部分时间并非所有用户都必须转到所有设备,所以最新方法不行,第一种方法是发送大量冗余数据。

我的问题是:通过一次通话发送到50个设备2000用户或2000个userInfo或2000个displayInfo ...的最佳方法是什么?

我想到了三种可能的方法:

  1. 在Device Struct中包含多个Structs的变量属性。发送数据的最佳方式,用于组织数据的方法。
  2. 在每个Struct,User,UserInfo ...中包含Device Struct,然后我们将在代码中对设备进行相应的排序。喜欢它,但不认为是最好的方式。
  3. 发送所有设备+所有数据相关+第三个与其中两个相关的结构。我必须在每个Struct中生成自定义ID并创建多对多的结构。 (不知道具体如何)。
  4. 您认为哪一种方法最好? 也许是一个新的和改进的?

    感谢!!!

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您的设备对象可以与多个用户,UserInfo或DisplayInfo相关联,这种情况下我会将它们逻辑地分组为DeviceUser,DeviceUserInfo和DeviceDisplayInfo对象,并在其中包含User / UserInfo / DisplayInfo的IEnumerable集合

实施例,

DeviceUser
- DeviceId (int)
- Users (IEnumerable<User>)
- Make (string)
- Year (int)