举个例子,为了充分利用RIA,我发现你几乎必须从头到尾依赖你的数据模型. WCF RIA的最佳功能(如端到端验证和EF集成)要求您尽可能地呈现您的Entity Framework数据模型,一直到您的表示层.这就排除了使用Service Layer模式,数据映射器或DTO设计软件的可能性.由于EF的限制,我也发现自己正在努力(到目前为止无济于事)创建一个真正的Domain Model应用程序.
代码生成的东西很好,我可以看到它节省了我的时间,除了它不支持诸如多对多关系之类的基本场景.这使我必须通过暴露中间外键表来通过EF公开更多的数据库实现细节.
除了这些问题之外,众所周知WCF RIA几乎不可能进行测试. DomainContext类不会隐藏在接口后面,由于更改跟踪和其他细微之处,这样做非常困难.在我看到的每一个案例中,viewmodel最终都直接依赖于DomainContext实现.即使这种依赖是构造函数注入它也没有意义,因为它无法合理地被嘲笑.
所以我想我的问题是双重的:WCF RIA是否强制执行糟糕的设计?如果是这样,有没有合理的解决方法,最终我失去了平台的大部分优势?如果没有,有人能指出一些文献,展示如何使用WCF RIA基于经过验证的模式生成优秀的设计吗?
解决方法
我们作为开发人员的许多技能是找出适合工作的正确工具. Silverlight和RIA有它们的用途,但它们不是一个神奇的银弹.
我认为你在考虑错误目标的技术.我说这是一个忠实于TDD,MVC等的人.我写过我使用DTO,存储库,图层,抽象等的应用程序…我也写了很多Silverlight和RIA在过去的几个月里.
安东尼说得很好:Silverlight和RIA旨在“消除重复并允许开发人员快速完成工作.”我不认为Silverlight和RIA是为大型企业应用程序而设计的,其中包含大量业务逻辑,这些应用程序需要进行单元测试和TDD来驱动进程……这对于这项工作来说是错误的工具.
我决定在Silverlight最近的一些项目中查看我的一些viewmodel.以下是我发现的内容:我在VM中所做的一切都非常适合Silverlight已经为我做的事情:数据绑定,观察属性更改,查询数据上下文,保存对数据上下文的更改,验证实体和通知GUI等等.
Silverlight和RIA已经为我做了这些任务.我只是委托电话!如果我要编写单元测试,我将测试Silverlight和RIA – 而不是我的域逻辑!我不需要测试框架 – 我假设MS知道他们在做什么.
如果你有足够的复杂性来保证DTO,数据映射器,服务层等等……那么你可能需要考虑除Silverlight和RIA之外的其他东西.知道我在说什么吗?
适合工作的人的正确工具.选择合适的工具.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。