ASP.NET MVC3设计模式和适当的编码技术

时间:2011-11-25 05:39:26

标签: asp.net asp.net-mvc-3 razor

我最近在惠普做了几个ASP.NET MVC3项目,因为我来自软件背景,我对MVC3的内部工作以及最佳实践相对较新。

在此期间,我有点调整了同事的编码风格和设计我的页面的方式,至今仍然坚持。考虑到所有这些,我的主要问题是任何人都会建议学习材料;书籍/视频/教程。我可以从任何这些资源中学习,我很想知道我正在编码。

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

我认为这是我缺乏编码经验,但同时我想克服这一点,我觉得凭借我对MVC3的大量经验,我可以适应更简单的风格或设计模式,这将有助于我不仅优化我的代码,而且成为一个更好的Web开发人员。如果有人对书籍或培训网站或任何事情有任何建议,请告诉我,因为我希望自己变得更好。

提前感谢任何一位愿意或有能力推荐任何东西的人!

2 个答案:

答案 0 :(得分:2)

我正在处理同样的问题,并发现制作思维导图很有用。虽然不可能给你一个完整的理解,但我可以尝试用一些基本的想法指出你正确的方向。

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

您熟悉设计模式吗?那么它们也存在于MVC应用程序中:)

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

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

在图表中,通知有3个主要层:

  1. 表示层
  2. 业务逻辑层
  3. 数据访问层
  4. 在ASP.NET中处理模型视图控制器时,一些高度使用的设计模式包括:

    业务逻辑层设计模式:

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

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

    对于数据访问层:

    • 实体框架模型与可以执行您需要的任何SQL查询的存储库相结合。
    • 不进入该图层的所有模式,但它们包括:Data Mapper
    • 对于简单的应用程序,没有真正的数据访问层,只有在业务层中使用域层时才会有必要(通常​​就是这种情况)

    根据您的应用程序采用的结构,您的模型将意味着非常不同的东西。通常,它们不是链接到数据库的模型(创建新应用程序时的默认设置使它们像这样)。相反,他们将是ViewModels,它只负责保存每个视图所需的数据。

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

    https://github.com/testbrian/enterpriseframeworksB

答案 1 :(得分:1)

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

该项目是使用RavenDb的MVC3的一个例子,但它也是我见过的最好的真实世界应用程序之一,因为它实际上用于生产。

希望这有帮助。