MVC + WCF + TDD或DDD架构

时间:2012-08-23 15:15:05

标签: c# asp.net-mvc-3 wcf tdd domain-driven-design

我们再次处于十字路口。

我想尝试至少在接下来的3年内实施一种简单,经过验证的方法来构建我的应用程序。 每次我要开始一个项目时,感觉这是第一次,因为这些天创建网站的方式非常多。

我有这个示例代码,我从这个包中购买了我购买的调用Design Pattern Framework 4 C#。在他们拥有的多个项目中,有一个名为“行动中的设计模式”。您可以从此处https://skydrive.live.com/redir?resid=B853B0DB724C30E5!16735&authkey=!AOeHSAWa_P4vzzU

下载

我的问题,在你看一下这个解决方案后,有什么好的,坏的,你会保留什么,你会删除什么,什么是不必要的等等?关于这个例子?

我知道他们正在尝试展示多个客户端以及多个DAO。但总的来说,这个架构是否会被视为“模板”? 感谢。

3 个答案:

答案 0 :(得分:4)

系统架构很像构建架构:

  • 没有一种“正确”的方式
  • 每个人对“最佳”
  • 都有自己的看法
  • “最佳”架构取决于背景和需求
  • 样式和方法随时间而变化

选择体系结构有很多因素:

  • 上市时间 - 您需要多长时间才能获得成功?
  • 可维护性 - 你是唯一一个维持它吗?开源?
  • 可扩展性 - 它是一个封闭的还是开放的系统?
  • 可扩展性 - 简单的实用程序还是企业级?
  • 平台 - 网络还是本机?桌面还是移动?

所有这一切,如果你能想出一个适合你未来3年将要拥有的每个项目的全能框架,我会感到惊讶。将MVC,WFC,TDD,DDD等视为工具,您可以使用它来构建 一个满足需求的系统那种情况。

我的观点是:只要符合特定情况,就可以使用你能理解的任何概念(如有必要,可以教别人)。

答案 1 :(得分:2)

  

我的问题,在您看一下这个解决方案之后,有什么好的,坏的,   你会保留什么,你会删除什么,什么是不必要的等等   关于这个例子?

快速浏览一下,这就是我要说的:

  • 关于您问题的DDD标记,这显然不是域驱动的体系结构。除了一些简单的验证规则之外,业务对象看起来anemic,并且不存在DDD架构的许多基本构建块(聚合,值对象等)

  • 除非我遗漏了一些内容,否则大多数业务操作都是CRUD操作,而这些操作并不能代表真实的企业应用程序。

  • 有一个胖胖的Service层,它有一个胖的ActionService类,它基本上似乎可以处理应用程序的所有用例。好消息是,它以不可知的方式处理用例(据我所知,它操作的请求和响应对象是独立的传递机制)。因为课程包含太多责任(SRP),所以缺乏欲望是肥胖的。

  • 在客户端使用存储库和服务器端的DAO看起来很奇怪,但为什么不呢。

  • 如果它真的是测试驱动的,为什么不包括所有单元测试而不只是一个样本呢?

除此之外,这些图层设计得很好,并且正如多个表示层所示,将一个前端替换为另一个前端或另一个持久性存储应该不难。

答案 2 :(得分:0)

  1. 选择一个。
  2. 试一试。
  3. 如果它不适合您,则重构/更改。
  4. 最重要的是确保使用可重构的模式。如果您正在使用TDD并发现可以注入依赖项,假货等,那么这将简化重构过程。三年是使用任何给定模式的很长时间。一位朋友说,如果你不看6个月前的代码并认为它​​很糟糕,那么你可能不够学习:)