繁体   English   中英

带有RIA服务的实体框架,Silverlight - 脱钩与快速开发的权衡

[英]Entity Framework with RIA services, Silverlight - tradeoff of decoupling versus rapid development

我最近一直在玩Entity Framework,WCF RIA Services和Silverlight 4.我对使用这些工具开发应用程序的速度感到印象深刻,并且你获得了很多“免费”,例如Silverlight UI自动了解EF模型中作为DataAnnotations包含的某些验证。 但是,在大型应用程序中,似乎不希望在整个应用程序(包括业务逻辑和UI)中一直推动EF的依赖。

我知道您可以将POCO / IPOCO与实体框架一起使用,这对我来说无疑是一个选择。 但是,如果你走这条路,就会失去一些“自动化”的东西,比如Silverlight能够在没有任何额外工作的情况下显示模型验证。

人们如何处理这个问题? 你是否放弃了一些功能并将接口放在不同的层之间,以便将其他层与EF分离? 或者你是否放弃了解耦以便更快地发展? 有没有办法让我的蛋糕吃掉,我没有看到?

我的小组目前正处理这个问题。 我们想出了一个让每个人都满意的妥协方案。 请记住,在它结束之前,项目会随着时间的推移变得更加复杂,可维护性是关键。 您还希望尽可能地增加代码重用,因此更换UI(或单元测试)的工作量最小化。

鉴于这一切,我们倾向于定义良好的域层,而不是将EF一直推送到UI。 这使得模型成为应用程序的核心,并不会强迫我们遵循数据库的模式。 我知道EF试图通过它的概念模型来抽象它,但是我们一直在遇到一些小问题,这使得依赖EF完全堆栈变得越来越困难。 例如,确实没有一个将业务逻辑与EF放在一起的好地方。 我们不想把这些东西放到拦截器中,我们不想把它放在UI中。 当然,可能有一个聪明的解决方法,但我们不喜欢我们被推动的方向。

折衷方案是使用EF,但要将其保留在数据存储和域模型之间。 这样我们仍然无需针对DataReader进行编程,我们可以利用域中自跟踪实体的优势。 然后,我们将基本的WCF服务(不是RESTful)从我们的域暴露给我们的UI。

对我们来说,额外的验证工作并不是真的很重要。 当然,我们的初始版本需要花费更多的时间,但整个维护周期并不需要很长时间,因为我们没有完成框架的复杂性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM