C# MVC3应用程序,基于现有体系结构
我有一个实体框架驱动的解决方案,在这个解决方案之上,我有一个业务层和一个服务层,将方法公开给我的测试控制台应用程序。控制台应用程序不知道我的实体框架。我有一个转换类,它接受实体框架数据对象,并将它们转换为自定义DTO,这些DTO位于共享库项目中。因此,我的数据库访问层和其他层一样使用共享库C# MVC3应用程序,基于现有体系结构,c#,asp.net-mvc,asp.net-mvc-3,C#,Asp.net Mvc,Asp.net Mvc 3,我有一个实体框架驱动的解决方案,在这个解决方案之上,我有一个业务层和一个服务层,将方法公开给我的测试控制台应用程序。控制台应用程序不知道我的实体框架。我有一个转换类,它接受实体框架数据对象,并将它们转换为自定义DTO,这些DTO位于共享库项目中。因此,我的数据库访问层和其他层一样使用共享库 现在,我想尝试构建一个MVC3应用程序。那么,在我的解决方案中将其作为一个单独的项目构建,然后让MVC应用程序的控制器部分引用我当前解决方案的服务层是否正确?例如,我的服务层公开了一个名为“GetAllUse
现在,我想尝试构建一个MVC3应用程序。那么,在我的解决方案中将其作为一个单独的项目构建,然后让MVC应用程序的控制器部分引用我当前解决方案的服务层是否正确?例如,我的服务层公开了一个名为“GetAllUsers”的方法,该方法返回一个列表。然后我获取该列表,并形成一个模型(MVC的M部分),并将其传递给视图。这看起来可以吗?我不是一个大的专家,但我认为这是可以的,而且是正确的。根据我创建MVC应用程序的经验,将MVC应用程序本身与整个解决方案的其他部分(如数据库、数据库模型或数据库模型类、数据库存储库、业务模型等)分开是正确的。此外,如果您愿意,可以基于您的服务层在MVC应用程序项目中直接创建ViewModel类。即创建一个更多的抽象级别,只使用控制器来发送结果以查看结果,而不是用于处理列表。< P>到Dima -您可以再次考虑将DTO的映射映射到定制的代码> VIEWSMODS类,特别适合于视图。(否则,您可能会发现自己必须使用
ViewBag
等将其他数据填充到视图中)
另外,为了确认MVC的“M”实际上是系统的整个后端(DAL、BLL、服务层、DTO、实体等)。我们通常会删除asp.net MVC项目中的模型文件夹,因为其他层位于单独的程序集中,并且被引用/注入。我假设MVC前端是系统的“主要”UI(即同一团队正在开发MVC前端和后端)
一个有待解决的问题是服务层——至少有以下两个选项
还有选项2,如果您确实有其他系统使用您的服务(除了您自己的前端),建议对接口进行形式化,例如,通过额外的外观/外部使用者映射。否则,每次为您自己的前端向WCF服务添加新属性或方法时,您都会破坏外部使用者的合同。WCF
MessageContract
s对于外部系统接口很有用,因为您更好地控制消息格式。Craig!=Craig。谢谢!那么,请确认一下……我的工作方法还可以,推荐一下?是否有更好的体系结构,或者这是一个很好的标准?我唯一质疑的是,我将实体对象转换为DTO,然后我想我会在需要时将DTO转换为视图模型我想展示一下。看起来还好吗?