.net MVC解决方案结构

.net MVC解决方案结构,.net,asp.net-mvc,entity-framework,.net,Asp.net Mvc,Entity Framework,我觉得问这个问题有点傻,但我已经寻找了一段时间,但还没有找到完整的答案,比如说我有一个MVC网站,我遵循了这篇文章的结构: 1) 我应该将用于搜索数据的链接查询放在哪里 我考虑在我的BL中创建一个通用搜索,搜索对象可以在其他应用程序(比如移动应用程序或winform应用程序)需要时重用,然后返回通用搜索对象,该对象将通过演示模型项目映射? 我不确定查询是否为“业务逻辑/规则” 或者我应该直接在Presentation Models项目中执行所有这些查询吗? 如果是这样,我会假设我仍然需要首先创

我觉得问这个问题有点傻,但我已经寻找了一段时间,但还没有找到完整的答案,比如说我有一个MVC网站,我遵循了这篇文章的结构:

1) 我应该将用于搜索数据的链接查询放在哪里

我考虑在我的BL中创建一个通用搜索,搜索对象可以在其他应用程序(比如移动应用程序或winform应用程序)需要时重用,然后返回通用搜索对象,该对象将通过演示模型项目映射? 我不确定查询是否为“业务逻辑/规则”

或者我应该直接在Presentation Models项目中执行所有这些查询吗? 如果是这样,我会假设我仍然需要首先创建通用对象,这样我就可以将相同的查询重新用于其他设备

2) 假设我想在此基础上添加一个移动应用程序,我是否应该将每个viewmodel都放在Web和移动的同一个Presentation Models项目中

3) 来自web的每个调用是否都应该通过表示层,即使是输入验证和CRUD操作


感谢您抽出时间

在此,我就您在这里提出的问题发表了我的意见 1) 我应该将用于搜索数据的链接查询放在哪里

*如果Linq查询与某些搜索条件相关,请在BL层中使用它们* 2) 假设我想在此基础上添加一个移动应用程序,我是否应该将每个viewmodel都放在Web和移动的同一个Presentation Models项目中

*您需要这样做*

3) 来自web的每个调用是否都应该通过表示层,即使是输入验证和CRUD操作? *任何验证都应在两个位置进行:表示层和BL中,以便在以后为WCF公开服务时,它将毫无例外地运行。即使跳过了表示层验证,也可以。但是BL验证总是故障安全的*

WebSite (MVC)
   Controllers
   Views
   Content (scripts, css, images, etc.)

Presentation Models
   View Models
   Model mappers

Web Library
   Extensions (to MVC/Web classes)
   Helper Classes
   Attributes

Business Logic
   Rules  

Data (if complex, use separate subfolder per context/repos/models)
   Entity Models
   Repositories 
   Data Context

General Library
   Extensions
   Helper Classes