微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

silverlight – WCF RIA是否强制执行糟糕的设计?

在过去的几周里,我一直在使用Silverlight涉足WCF RIA,我发现使用它生成设计良好的软件非常困难.我的印象是,它是一种最适合“快速应用程序开发”,原型设计和花哨的演示的工具.

举个例子,为了充分利用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] 举报,一经查实,本站将立刻删除。

相关推荐