MVC松散耦合,使用MVC。 控制器 - 模型 - 视图松散耦合,因此测试很容易。
但是当我们使用紧密耦合的视图,即视图紧密耦合到模型时,那么View如何独立且与模型无关。
紧密耦合视图将取决于模型,它将与Web表单相同,其中.aspx页面将依赖于其代码后面的页面。因此,测试将成为View的一个问题。
答案 0 :(得分:1)
松耦合并不意味着松散的合同。合同是明确的。
View与合同相关联,而非实施,因此它可以显示符合合同的任何内容。
MVC与网络表单不同。视图中通常很少或没有代码。如果存在,则涉及显示/渲染,而不是数据或逻辑。您在webform页面中看到的大多数代码都会被移动到控制器或MVC中的Model / ModelView中。
答案 1 :(得分:1)
你很困惑强烈打字与紧密耦合。它们是两回事。
向视图强烈键入模型没有问题。这不像后面的代码,因为代码隐藏有事件,重载和其他类型的逻辑。模型通常是MVC中的严格数据。
视图显示了模型,以及它的模型。它必须知道模型是什么才能呈现它。
因为视图不依赖于特定实例,所以它没有紧密耦合。您可以传入任何实现强类型合同的对象。
答案 2 :(得分:0)
ASP.Net MVC可以像您(应用程序架构师)那样松散或紧密耦合。
如果您将视图键入具体的模型类,那么视图与模型的类型紧密耦合,但是如果您将视图键入接口,或者根本不键入它并使用动态类型然后它松散耦合。
控制器和模型也是如此,您可以在控制器中实例化具体的模型类(紧凑),或者您可以使用模型接口和可配置的模型工厂(松散)。
底线是ASP.Net MVC 框架不能解决耦合问题,它只是为使用MVC 模式的Web应用程序架构提供框架。模式本身是为了分离关注点和基于责任的架构而设计的,它与耦合无关。
答案 3 :(得分:0)
视图的强类型模型并不意味着视图与模型紧密耦合。您可以让多个视图使用相同的模型。如果您不喜欢强类型模型的概念,请使用动态模型。
使用webform aspx页面,您无法轻松地对后面的代码进行单元测试。与在MVC中一样,对控制器进行单元测试非常容易。