最好将业务逻辑放在WCF服务中,或将代码放在Silverlight控件上?

最好将业务逻辑放在WCF服务中,或将代码放在Silverlight控件上?,silverlight,wcf,entitydatasource,Silverlight,Wcf,Entitydatasource,在尝试为Silverlight应用程序设计架构时,我会问: 将实体数据模型与WCF数据服务一起使用,然后将我的业务逻辑放在silverlight用户控件的代码中,以便对WCF数据服务返回的纯数据进行任何修改/管理 或 将实体数据模型与WCF服务一起使用,然后使用[OperationContract]方法将我的业务逻辑放入实际服务中,我可以在服务级别应用我的业务逻辑,从而在表示(silverlight)和业务(Service)之间提供清晰的分离 有谁能就哪种方法更好提出自己的意见,或者在我上述建议

在尝试为Silverlight应用程序设计架构时,我会问:

将实体数据模型与WCF数据服务一起使用,然后将我的业务逻辑放在silverlight用户控件的代码中,以便对WCF数据服务返回的纯数据进行任何修改/管理

将实体数据模型与WCF服务一起使用,然后使用[OperationContract]方法将我的业务逻辑放入实际服务中,我可以在服务级别应用我的业务逻辑,从而在表示(silverlight)和业务(Service)之间提供清晰的分离

有谁能就哪种方法更好提出自己的意见,或者在我上述建议的范围之外,是否还有我没有发现的更好的方法


谢谢

就我个人而言,我会使用以上的组合(经过修改)

我会将业务逻辑和业务规则(视情况而定)放入您的WCF服务中。这有许多优点,包括允许服务执行所有的数据验证和检查(在任何情况下都应该这样做),而不需要执行两次。这将促进将来应用程序对服务的重用,因为其中的逻辑是特定于领域的,而不是与特定的表示层或应用程序设计相关联


也就是说,我不会将特定于此应用程序的逻辑放入服务中。相反,我将使用MVVM方法,将特定于应用程序的逻辑(与业务规则分离)放入ViewModel类中,并从Silverlight视图中使用它。我会尽量避免使用代码隐藏作为注入逻辑的地方—无论是应用程序还是特定于业务规则。

我不会将业务逻辑放在实际的服务中。这项服务是一项很好的服务

本质上,它提供了“系统”和外部世界之间的接口(API)。在本例中,您的UI


因此,您仍然需要一个具有您的逻辑的业务层。服务接口层与业务层对话,并将方法和数据显示为WCF服务。

太好了。谢谢你的建议。我已经解决了我面临的问题,并计划遵循与您建议的类似的模式。