2011-11-25 61 views
3

我最近在惠普做了几个ASP.NET MVC3项目,因为我来自软件背景,我对MVC3的内部工作原理以及最佳实践都比较陌生。ASP.NET MVC3设计模式和正确的编码技术

在此期间,我稍微改编了一些同事的编码风格以及设计我的网页的方法,直到今天仍然坚持。考虑到这一切,我的主要问题是什么人会推荐学习材料;书籍/视频/教程。我可以从任何这些资源中学习,并且我很想知道我的编码是否正确。

我有几个项目在我的腰带和许多我使用Razor和ASP.NET编写的大型商业解决方案,但有时候我觉得我正在做的事情要么非常黑客,要么只是一种低效的编码方式的东西。因此,项目越大,添加新功能就越困难。

我认为这是我在编码方面的经验不足,但同时我想克服这一点,我认为,通过MVC3的大量经验,我可以适应更简单的风格或设计模式,帮助我不仅优化我的代码,而且成为一个更好的Web开发人员。如果任何人对书籍或培训网站有任何建议,请告诉我,因为我想变得更好。

预先感谢任何一直在我的鞋子里,愿意或能够推荐任何东西的人!

+1

这是非常主观的。我会说特殊的样本可能需要说史蒂夫sandersons MVC3书外。许多网站甚至在书呆子晚餐项目中都有代码味道。我会在这里发布你在做什么的具体问题,然后我们可以帮助解决具体问题。 –

+0

我可以看到你会怎么想我越看越它,我认为这就是为什么我有时会对我编写正确代码的能力感到困惑。我真的不知道如何展示示例,除非我粘贴控制器/模型和视图供人们看,那会更实用吗?我只是觉得有一个更好的实践,比如像SOA这样的设计模式和其他能够促使我以更基本的结构化方式开发的模式。 – jhartzell

回答

1

我不知道这是否是企业解决方案的一个例子,但我从RaccoonBlog中发现的技术中学到了很多东西。我喜欢Layout.cshtml和其他剃须刀文件如何使用RenderAction模块化视图。

该项目是一个使用RavenDb的MVC3示例,但它也是我在生产中实际使用的最好的真实世界应用程序之一。

希望这会有所帮助。

2

我正在处理相同的问题,并发现它是有用的做一个思维导图。尽管不可能给你充分的理解,但我可以试着用一些基本的想法指引你朝着正确的方向。

下载/视图(http://www.xmind.net/share/highroad/mvc3-design-pattern/

你熟悉设计模式?好吧,它们也与MVC应用程序一起存在:)

如果您想谈谈并理解包括我自己在内的人在谈论什么,那么您需要知道构建他们称之为企业级应用程序的典型设计模式。这些设计模式是开始理解概念的唯一真正方法。

这些模式结构复杂的业务逻辑的方式已成为设计挑战开发人员面临的经过考验和测试的解决方案(设计模式)。

在该图中通知有3层主要的层:

  1. 表示层
  2. 业务逻辑层
  3. 数据访问层

一些与处理时的高度的设计模式的ASP.NET中的模型视图控制器包括:

业务逻辑层设计模式:

  • 活动记录。模型与轻量级框架中的数据库完全相关,例如Ruby on Rails)。当使用ASP.NET和脚手架视图和控制器创建新的MVC3应用程序时,这是它如何设置的。非常适合较简单的应用程序。那么为什么不使用Ruby on Rails呢?我会
  • 域逻辑层。将MVC与包含非常少的代码的控制器一起使用,并创建大量可以执行复杂逻辑的额外模型,MVC仅用于演示。通常使用这种类型的层,称为服务层的轻量级层可以用来从控制器调用域层中的所有功能,即控制器调用服务层类中调用域层的方法。这种设计模式似乎在享受面向对象编程的人中非常流行。请参阅下面的链接到我的(非常基础的)使用域层设计的项目。

  • 事务脚本 - 使用控制器做了很多次操作逻辑的工作,问题是很多的动作需要做同样的事情,所以会出现代码重复

对于数据访问层:

  • 像实体框架模型结合一个存储库,可以执行任何你需要的SQL查询。
  • 没有进入所有模式的这一层,但它们包括:数据映射
  • 通过简单的应用程序,有没有真正的数据访问层,如果在业务层使用领域层只必要(这通常是这样的)

根据你的应用程序采取什么样的结构,你的模型将意味着非常不同的东西。一般来说,它们不会是链接到数据库的模型(创建新应用程序时的默认设置使它们像这样)。相反,它们将是ViewModels,它们只负责保存每个视图都需要的数据。

我已经创建了一个ssample应用程序,你可以在这里看到。

https://github.com/testbrian/enterpriseframeworksB