这可能是一个过于自以为是的问题,但寻求帮助!
我一直在尝试优化我的ASP.NET MVC程序结构.我刚开始在预览5中使用它,这是我第一次涉足业务应用程序开发 - 所以每一个都是新的!
在控制器级别,我有一个服务对象负责与存储库进行通信并负责所有业务逻辑.在动作级别,我有一个对象,它包含所有视图数据 - 用户输入和生成的输出 - 我将其称为视图对象(这是一个通用术语吗?).与我看到的大多数示例不同,此对象不是数据库对象,而是特定于视图的对象.
所以现在我想添加用户验证.问题是,我不知道该把它放在哪里.在Service层中,我最有意义.Service层负责所有业务逻辑,验证是业务逻辑.另一方面,我看到的大多数验证框架都用于验证对象,这使我认为视图对象应该是验证感知的.最后,有一些验证方法需要数据库连接(例如,检查用户输入字段是否具有相应的数据库记录),并且视图对象没有数据库的概念,只有服务.
所以我看到的一些选项是:
在Service.Method中对传递给方法的参数进行验证.
在调用Service.Method之前,在视图对象中进行验证.
在视图对象中进行验证,但使Service.Method需要视图对象引用,以便它启动对象的验证.
我相信还有更多.我很好奇其他人如何处理MVC意义上的用户输入验证.我以前使用过企业验证块,并且喜欢能够为所有东西使用股票验证器,但我不确定如何使它适合单独的视图对象和服务层.如果他们(查看对象/服务)是同一个对象,这可能很容易,这可能是人们做的事情?就像我说的那样,它对我来说都很新,我正在寻找最佳实践/模式.
我通常在提交表单时在控制器操作中进行基本验证(必填字段,电子邮件格式等).然后我让业务层处理需要业务知识的验证.我通常也会仔细检查业务层中的基本内容,因此如果我通过Web服务公开该逻辑或稍后在其他应用程序中使用它,我仍然需要验证最重要的地方(IMO).