2013-03-04 200 views
3

我觉得有点傻可以问这个问题,但我一直在寻找一点点,但还没有找到完整的答案,比方说我有一个MVC网站,因为我遵循这篇文章的结构:MVC解决方案结构

Architectural decisions: ASP.NET MVC & Entity Framework

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 

1)我应该在哪里把我的链接查询数据搜索?

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

或者我应该直接在Presentation Models项目中完成所有这些查询吗? 如果是这样,我会假设我仍然需要先创建一个通用对象,这样我可以对某些其他设备重复使用相同的查询。

2)比方说,我想添加一个移动应用程序,我应该把每个视图模型放在Web和移动设备的同一个Presentation Models项目中吗?

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

谢谢您的时间

回答

0

。由此我已经给了我在哪里,我应该把我的链接查询数据搜索,你已经取得的查询这里 1点)的意见?

* 如果您的Linq查询与某些搜索条件相关联,请在BL层中使用它们。 * 2)假设我想在此之上添加一个移动应用程序,我应该将每个视图模型放在Web和移动设备的同一个Presentation Models项目中吗?

*您将被要求这样做*

3)应该从每一个网络呼叫流程直通即使输入验证和CRUD操作演示层? *任何验证都应该在以下两个位置完成:表示层和BL,以便稍后将您的服务公开给WCF时,它将毫无例外地发挥作用。即使跳过表示层验证,也没关系。但BL验证始终是安全的*