我目前正在使用尚未实现实体框架的Silverlight / MS SQL项目,我想知道在这种特定情况下处理计算字段的最佳做法是什么。
考虑到某些外部系统也可能直接在数据库中或通过Web服务使用我的数据,这是我现在可以看到的3个选项。
1)强制任何外部系统通过Web服务使用数据,并仅在对象中创建所有计算字段。
2)在DB视图中创建计算字段,并在每次需要计算值时将对象与服务器重新同步。
3)在对象和数据库视图中复制计算规则。
任何其他建议也会受到欢迎。
答案 0 :(得分:3)
我建议遵循两个原则:数据解耦和最小功能重复。两者都建议只将计算放在一个地方,并且已经计算好了。所以我会在数据库中实现计算,并通过Web服务提供它们。
但是,您必须考虑您的具体情况。例如,如果计算非常繁重,您可以将它们委派给客户端以节省服务器资源。这甚至可能是您使用Silverlight的原因。我在一个项目中处于类似的情况,我发现最好的折衷方案是将原始数据推送到客户端并让它进行繁重的计算。
答案 1 :(得分:1)
对于这种问题采用最佳实践或方法很困难,因为情况发生变化,以前的好方法可能开始变得不那么有用了。这就是说我可以在DB级别做任何相关数据,包括计算字段。这样您就知道无论您在哪里查看来自您的数据都会看到相同的结果。因此,您的Web服务,SQL报告以及需要查看或接收数据的任何其他内容都将看到相同的结果。