Asp.net mvc 2 需要一些关于使用MVC2开始新生活的建议,以及在MVC2中为RAD使用哪些工具?

Asp.net mvc 2 需要一些关于使用MVC2开始新生活的建议,以及在MVC2中为RAD使用哪些工具?,asp.net-mvc-2,architecture,repository,viewengine,layer,Asp.net Mvc 2,Architecture,Repository,Viewengine,Layer,我终于决定跳上MVC2的列车。 现在我最近读了很多书,下面是我认为对于大多数商业Web应用程序来说已经足够好的架构 分层体系结构:- 模型(与数据库通信的层)。EF4 存储库(与模型通信并包含所有查询的层) 业务层(验证、帮助功能、对存储库的调用) 控制器(控制应用程序的流程,并负责从业务层向视图提供数据。) 视图(UI) 现在,我决定为每一层创建一个单独的项目(只是为了尊重关注点分离的困境。虽然我知道这不是必要的,但我认为它使项目看起来更专业:-) 我正在使用AutoMetaDatat4模板进

我终于决定跳上MVC2的列车。 现在我最近读了很多书,下面是我认为对于大多数商业Web应用程序来说已经足够好的架构

分层体系结构:-
模型(与数据库通信的层)。EF4
存储库(与模型通信并包含所有查询的层)
业务层(验证、帮助功能、对存储库的调用)
控制器(控制应用程序的流程,并负责从业务层向视图提供数据。)
视图(UI)

现在,我决定为每一层创建一个单独的项目(只是为了尊重关注点分离的困境。虽然我知道这不是必要的,但我认为它使项目看起来更专业:-)

我正在使用AutoMetaDatat4模板进行验证。我也遇到了FluentValidation,但找不到太多。我应该和哪一个一起去

选择哪个视图引擎?
Razor View引擎是一见钟情。但它仍处于测试阶段,我认为要找到它的例子并不容易。我说得对吗?
火花我也找不到很多东西,也不想被困在中间的某个地方,当没有人听的时候,哭着求救……-(

) T4模板自动生成视图,我可以自定义它们以我想要的方式生成视图?使用razor和spark可以吗?还是我必须手动创建它们

有没有办法自动生成存储库

如果我能看到一个基于上述架构的项目,我将不胜感激

请告诉我这是否是一个值得遵循的好架构。

我对业务层有一些困惑,比如它真的有必要吗?

这是一个非常广泛的问题。我决定在绿地应用程序中使用Fluent NHibernate的自动配置功能,这给我留下了深刻的印象。我的许多同事都使用CakePHP,并且只需要很少的配置就可以生成与数据库模式兼容的数据库使用cake使用的默认约定,这对我们来说非常好。

我强烈建议使用ASP.NET MVC2这本书。这本书很好地涵盖了用于制作可维护的ASP.NET MVC应用程序的库生态系统

至于视图引擎的选择,这取决于您的背景。我个人更喜欢我的视图看起来尽可能像HTML,所以我会选择Spark。另一方面,如果您习惯于使用ASP.NET classic,WebForms视图引擎可能会让您启动并运行得最快

请让我知道这是否是一个好的架构遵循

这是一个很好的开始-我建议您添加的唯一一件事是在业务逻辑和数据访问之间添加一个抽象层(即:依赖项反转/注入)-请参见:

我知道这没有必要,但我认为这会让项目看起来更专业:-)

哈!!通常你会发现很多“东西”都是不必要的——直到有必要的那一刻,这时通常已经太晚了

重新查看引擎:我自己还是ASP.NETMVC的新手,因此不熟悉您所说的查看引擎;如果我是你,我会想出一些测试场景,然后尝试用每个产品解决它们,这样你就可以直接比较它们。通常情况下,您需要为试驾准备一些东西以使其更加舒适-虽然这可能需要时间,但通常是值得的

编辑:

如果我向我的PM推荐这一层,并给出上面两个理由,那么我认为他不会接受

首先,PM是而不是技术领先者(通常);您负责解决方案的设计,而不是PM。这并不少见,以我的经验,大多数时候,首相甚至不知道他们正在侵占你的地盘,而你的地盘不是这样的。这并不是说我是一个“政治上的土地掠夺者”,而是我倾向于考虑“分离关注点”,我相信你会理解的

作为设计师/架构师,由您来解释需求,并(考虑到业务优先级)提出解决方案,以提供未来最佳的“平台”

(关于DI)我的问题是,这真的值得吗

如果你用枪指着我的头,我会说是的,但是现实世界有点复杂

如果您对这些问题中的任何一个回答为“是”,那么使用DI可能是一个好主意:

  • 这个系统很重要
  • 系统的预期寿命超过2年(不确定这里的正确数字是多少,可能没有,所以我打算在地上投资)
  • 系统和/或其要求为流体
  • 将工作(BL/DAL)分成不同的团队将对项目有利(也许您是分布式团队的一部分)
  • 该系统适用于技术环境多样化的市场(例如:并非所有人都想使用MS SQL)
  • 您希望执行质量测试(这将使其更容易)
  • 该系统是大型/复杂的,因此可以拆分功能并将其放到其他系统中
  • 您希望提供不止一种存储数据的方法(例如,免费使用基于文件的存储库,收费使用数据库驱动的存储库)
  • 业务驱动因素/环境是不稳定的-如果他们来找你说“这很好,但现在我们想提供一个基于云的版本,你能把它放在Azure上吗?”
我还想指出的是,虽然有一个明确的学习曲线,但它并没有那么大,一旦你达到了速度,你至少会像现在一样快;或者最坏的情况是你;我会再花一点时间,但你会很好的