我之所以问这个问题,是因为在我的另一个问题的答案中,tvanfosson(第一个)评论他的回答时说(关于ASP.NET MVC):“缺乏服务器端控件是由于MVC固有的关注点分离使其成为一个好的开发模式。”
我当然知道ASP.NET服务器控件,而且我认为我知道MVC设计模式,但我不明白服务器控件如何违反MVC。
我当然知道ASP.NET服务器控件,而且我认为我知道MVC设计模式,但我不明白服务器控件如何违反MVC。
谢谢。
谢谢。
我认为这与postback + viewstate + events模型有很大关系。
上述隐式发生以模拟用户以多步方式与应用程序交互的模型,其中系统存在各种状态。由于每个控件都持有其viewState,因此每个控件本质上都对此整体状态做出了贡献,随着页面复杂度的增加,这可能变得难以跟踪。我还相信方便性鼓励了这种复杂性。
上述可能更多地是支持restful的论点,它促进了更多地依赖协议的处理方式。使用post来实现上述功能,确实不是HTTP协议的意图。只需考虑asp.net网格的原始内置分页,因为它基于postbacks,搜索引擎忽略了第一页之外的任何内容。此外,您再也无法通过url访问该信息页面。
在asp.net MVC的上下文中,imho MVC模式更多地涉及简单的请求/响应操作。您可以使其变得像您需要的那样复杂,但它促进了一种更简单的操作方式。它不是基于与经典方式中页面/视图上散布的几个不同信息相关的状态进行工作;但是,如果这是您所需的,您仍然可以实现它,但在这样做时必须更加明确。
在《Pro ASP.NET MVC 2 Framework》一书中,Steven Sanderson(第5页)提供了答案:
“......实际上,开发人员被鼓励将表示层代码(例如,操作服务器控件树)与应用程序逻辑(例如,操作数据库数据)混合在同一个庞大的代码后台类中。
如果没有更好的关注点分离,最终结果往往是脆弱且难以理解的。”