我们有一个业务逻辑/数据访问层,我们通过WCF服务在几个不同的端点上公开.我们已经创建了DTO以用作服务的数据协定.我们将通过不同的端点为多个不同的应用程序使用该服务.在某些应用程序中,我们只需要DTO中的一些字段,而在其他应用程序中,我们可能需要几乎所有字段.对于那些我们只需要少数人的人,我们真的不希望每次都“通过线路”发送整个对象 – 我们希望将其削减到我们实际需要的给定应用程序.
我在为每个应用程序创建特定的DTO集合(过度杀伤?)和在某些应用程序中仅需要的成员上使用类似EmitDefaultValue = false之类的东西之间来回走动.我还考虑过使用XmlSerializer而不是DataContractSerializer来更好地控制服务中的序列化.
我的问题是 – 首先,我们是否应该担心我们传递的数据大小?其次,假设答案是’是’或我们决定关心它,即使它是’不’,这里建议采用什么方法,为什么?
编辑
感谢到目前为止的回复.我担心我们可能会过早地进行优化.我想暂时保持这个问题的开放,希望我可以得到其余部分的答案,既可以用于我自己的启发,也可以解决其他任何人有这个问题,并且有正当理由需要优化.
解决方法:
你要担心吗?也许.性能/压力测试您的服务并找出答案.
如果您决定照顾……有两种选择:
>创建一个返回部分水合DataContracts的不同服务(或同一服务中的不同操作).因此,这些新服务和/或操作返回相同的DataContrcts,但只是部分水合.
>创建DataContracts的“lite”版本并返回它们.基本上与选项1相同,但是使用这种方法,您不必担心消费者滥用完整的DataContract(可能会获得空引用异常等).
我更喜欢选项2,但如果您可以控制您的消费者,则选项1可能适合您.