ASP.NET Web窗体和关注点分离

本文关键字:关注点 分离 窗体 NET Web ASP | 更新日期: 2023-09-27 18:22:08

我将很快带领一个团队在ASP.NET(web表单)中创建一个复杂的制造web应用程序,而以前我们的业务逻辑将在同一项目中,甚至更糟的是,在页面后面的代码中。

我知道关注点的分离很重要,它使测试变得更容易(测试一直是我们的问题),所以这是我们想要的方向。

然而,我对如何实现这一点有点困惑——我们使用了大量的RadGrid等,这些都绑定到了SqlDataSources。在另一个项目中,这样的事情如何与所有业务逻辑一起工作?

ASP.NET Web窗体和关注点分离

我的建议是:

  • 如果可以的话,忘记SqlDataSources。如果您使用的是SqlDataSources,您仍然可以进行一些业务规则隔离,但对于以数据为中心的应用程序,大多数业务规则都与编辑和检索数据有关。最好的数据源是简单的IEnumerables。大多数网格控件都支持它。您的业务规则应该检索绑定到网格控件的简单C#对象。ObjectDataSource也是一个不错的选择
  • 如果可以的话,请使用ASP.NET MVC而不是ASP.NET WebForms。在可测试性和关注点分离方面的优势是巨大的。这就是为什么创造了这项技术。当你开始一个新项目时,我强烈建议你这样做。事实上,ASP.NET MVC就是让控制器层将对象传递到视图,视图可以显示它们

另一种选择是保留您的网络表单,但使用MVP模式。我们发现,对于新开发人员或初级开发人员来说,它的入门门槛要低得多,因为它只是简单的c#(不需要学习Razor或MVC的约定),并且我们发现90%的开发可以由对web开发一无所知的开发人员完成(我们基本上抽象了任何与web相关的东西的使用,比如用户或Profile,以使业务代码更可重用)。

你必须废除SqlDataSource,但我同意其他人的观点,即这些也是邪恶的。在我们的实现中,数据将从数据库中检索并封装在POCO DTO中,作为IEnumerable传递给视图,然后数据绑定在页面的代码后面。

MVP在企业界的另一个好处是它对变化的弹性。由于视图尽可能地是哑的,所以切换它非常简单。您可以使用相同的模型和演示者,并同时在Winforms、Silverlight、Webforms和控制台应用程序中拥有视图。视图的实现与Presenter或Model无关。

MVC是新的热点,但在使用了MVC和MVP之后,对于可维护性和可靠性至关重要的大型企业Web应用程序,我推荐MVP。

您可以使用ObjectDataSource而不是SqlDataSource来利用其他项目(即另一层)中的类,但使用Web窗体仍将是一场艰苦的战斗。

如果关注点的分离和可测试性是重要的关注点,我强烈建议使用ASP.NET MVC。