我习惯手工创建UI,BLL,DAL(有时我使用LINQ-to-SQL或SubSonic作为DAL)。自发布以来,我已经使用MVC完成了几个小项目。
在这些项目中,我仍然继续手工编写BLL和DAL,然后将它们合并到MVC的模型/控制器中。我希望在项目上优化我的时间,这似乎有些过度,可能浪费时间。
滚动DAL(如SubSonic)并直接在我的MVC网络应用程序的模型/控制器中使用它是否可以接受?现在的模型&控制器将充当BLL。我只是把这看作是一个主要的节省时间,不必担心另一层。
我只是想补充一点,我关注的不是DAL(我经常使用SubSonic和NH),而是专注于BLL。对不起,感到困惑。
答案 0 :(得分:10)
MVC与n层架构没有或几乎没有联系。它属于UI层,用于处理与用户的交互。如何构建应用程序的其余部分是......让我们使用正交这个词来使用MVC。
如果你有业务逻辑层,它就会停留。
如果您拥有数据访问层,则会停留。
不应使用控制器来实现业务逻辑。它基本上是一个路由层来决定要调用的操作,重定向到哪个路由。一般建议是保持简洁,并根据路由数据和一些业务逻辑调用做出决定。
模型也不等于业务对象。模型是视图显示的一组数据,可能包含一些与业务实体无关的辅助数据。
您可以使用ORM并用它替换数据访问层。取决于ORM如何集成它。使用EF,您可以直接将实体用作业务对象。
答案 1 :(得分:4)
对于如何构建应用程序,没有一个完美的解决方案。你必须考虑到背景并务实。对于小型应用程序,体系结构远不如严重的企业级应用程序重要。如果您认为您的方法可以为您节省大量时间并且将来满足您的需求:去吧。
答案 2 :(得分:1)
不,MVC不会替换手动创建的UI,BLL,DAL。
您不应该手动创建DAL大约 - hm - 8年左右。很多年来,很多好的或坏的DAL发电机都出来了。我在2001年左右有一个完整的ORM.NHibernate现在已经出了很多年了。这个世界 - 即使是.NET - 也不会以MS产品(其中所有这些产品,LINQ2SQL和EF)与其他产品相比仍然质量低劣。
您仍然需要在MVC中编写业务逻辑和UI代码 - 与传统ASP.NET不同。这个想法并没有摆脱它们,而是将它们放在一个不同的组织中,这对于干净的HTML以及单元测试(在传统的ASP.NET中很难做到)更好。