C# 通过WCF公开一个或多个对象

C# 通过WCF公开一个或多个对象,c#,performance,wcf,C#,Performance,Wcf,我的数据库是使用类表继承结构构建的。例如,一个“完整”的业务对象是从8个表中构建的,其中包含4到10个字段(不包括ID字段) 我最好通过WCF暴露一个大对象(有40个字段),还是暴露较小的对象,但有16个操作合同 另外,哪一个性能更好?这取决于客户端如何使用来自服务端的数据。 与整体绩效相关的基本步骤有4个: 生成数据对象 序列化数据对象 可用带宽 网络握手 序列化通常在数据大小上具有线性性能,因此对一个大对象或多个小对象进行序列化不会导致显著的性能差异 聊天可能需要更多的时间,这可能会很耗时。

我的数据库是使用类表继承结构构建的。例如,一个“完整”的业务对象是从8个表中构建的,其中包含4到10个字段(不包括ID字段)

我最好通过WCF暴露一个大对象(有40个字段),还是暴露较小的对象,但有16个操作合同


另外,哪一个性能更好?

这取决于客户端如何使用来自服务端的数据。 与整体绩效相关的基本步骤有4个:

  • 生成数据对象
  • 序列化数据对象
  • 可用带宽
  • 网络握手
  • 序列化通常在数据大小上具有线性性能,因此对一个大对象或多个小对象进行序列化不会导致显著的性能差异


    聊天可能需要更多的时间,这可能会很耗时。因此,如果您的客户机应用程序的逻辑能够很好地适应使用来自服务的一个大对象,那么您可以只进行一次客户机调用来获取所需的所有数据,而不是多次握手进行多次客户机调用。因此性能更好。

    一个大对象有多大?WCF在这方面很在行。很难说,这取决于数据。我们说的是原语还是大型二进制数据,请求的频率是多少,是只获取操作,还是crud操作?等等您是否需要第一次请求中的所有数据,还是只需要部分数据?一个基本的想法是,您只需要请求应用程序工作所需的最少数据量。冗余数据被浪费在带宽上。这个问题可能需要更多的细节来告诉你最好的方法。@AmitKumarGhosh,大约40个字段,大部分是字符串、数字和日期,@woutervs,大部分是原语,一些日期,还没有二进制数据。请求可能在每小时10-100次之间。取决于正在做什么。最频繁的请求是使用非常小的对象完成的。(3个字段,字符串数据)。我可能不会一次需要所有数据,当我的UI处于特定状态时,我可能会要求更多。@HenkHolterman,我将一次更新一个表,但我想知道从性能角度看,首先获取所有数据,然后更新相应的表,而不是在需要时提取和发送数据是否更好。