问题-(后故事)
因此,最近我进行了几次采访,而在这四个问题上不断出现的问题是:“X在MVC应用程序中的位置是什么?”
问题是我采访的公司每次都不一样。其中两家主要是ASP.NET MVC /微软商店,另外两家使用Ext.js、Ember.js、Angular.js或其他一些JavaScript MVC框架。
我的回答-
业务逻辑驻留在哪里?
ASP.NET MVC
在服务器上的一个单独的层中
JavaScript MVC
理论上,在控制器上或周围.但是它不安全.
验证驻留在哪里?
ASP.NET MVC
在模型中,视图使用它简单地警告问题,控制器在尝试提交之前验证模型状态。
JavaScript MVC
在模型里但是..。好吧,在视野中,但是控制器服务于.
什么是对的?
我的问题是,与JavaScript MVC相比,在哪些方面需要在ASP.NET MVC中应用以下基本功能,哪些差异可以由事实而不是意见来支持?
类别-
业务逻辑驻留在哪里?
需要在哪里应用验证?
验证在哪里需要确认?
你还有什么别的问题要问这个吗?
发布于 2013-08-14 00:10:23
根据我的经验,这是我的观点,目前我正在开发一个angularjs/servicestack应用程序,所以我们开始:
这些问题没有正确的答案,但我想有更多常识的最佳答案是:)
业务逻辑驻留在哪里?--基本上可以使用MVC/php/Rails或任何其他服务器端编程语言--因为我使用的是服务栈,所以我在MVC中将所有业务操作分离开来--我称之为业务服务--它可能是相同的,记住控制器,不管您使用的是哪个框架,都是协调视图和模型之间通信的框架,我不明白为什么需要将任何逻辑放入控制器中。
关于Javascript/Server框架,我认为js是一个调用我的REST服务的客户端(或者一个带有js库/ Web的MVC应用程序,等等),Js客户机只是从服务发送/获取信息,您可以在那里执行小的客户机操作,但不能执行严格绑定到系统模型的操作,JS框架的MVC更多地是一种将关注点分离到TDD和DI (至少AngularJS)的方法。
在哪里需要应用验证?无处不在,客户端验证非常适合,因为它们给用户即时反馈,但是您也必须对服务器中的所有输入进行双重检查。
对我来说,所有的体系结构在如何组织层和层方面都是非常相似的。最后,它所改变的是如何将信息呈现给客户机,如果它没有一个漂亮的回发客户端框架,或者只是简单的视图。
只是我的两分钱,我希望这是合理的。
发布于 2013-08-13 16:02:40
业务逻辑客户端只是为最终用户提供方便(可能还包括性能)。
在您到达服务器之前,业务逻辑验证“不需要”应用。
一旦您命中了服务,您“必须”确认/应用业务逻辑,因为您无法真正信任您无法控制的环境。
如果我们想象我们是Gmail,那么我们就可以运行几个场景。
如果业务逻辑与任何类型的验证无关,比如弹出一个我认识的可以发送电子邮件的人的列表,那么它属于客户端。
如果业务逻辑确保某人没有在他们的电子邮件中插入某种恶意html,那么验证就需要在服务器端进行。
恶意我可以模拟对gmail的ajax调用,假装我在html中用恶意代码编写了一封电子邮件。但是Smart转过身来检查调用的内容,以确保我没有伪造一些无效的信息。
https://stackoverflow.com/questions/18212887
复制相似问题