ASP.NET Web Forms和关注点分离

时间:2013-07-13 17:56:39

标签: c# asp.net webforms

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

我理解分离问题很重要,使测试更容易(测试一直是我们的问题),所以这就是我们想要的方向。

我对如何实现这一点感到有点困惑 - 我们使用了大量的RadGrid等我们绑定到SqlDataSources。这些东西如何与另一个项目中的所有业务逻辑一起工作?

3 个答案:

答案 0 :(得分:2)

我的建议是:

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

答案 1 :(得分:2)

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

你必须取消SqlDataSource,但我同意其他所有人的观点。在我们的实现中,数据将从数据库中检索并包装在POCO DTO中,作为IEnumerable传递给视图,然后在页面的代码隐藏中进行数据绑定。

MVP在企业界的另一个好处是它对变革的适应能力。由于视图尽可能愚蠢,因此将其切换出来非常简单。您可以使用相同的模型和演示者,同时在Winforms,Silverlight,Webforms和控制台应用程序中拥有视图。视图的实现与Presenter或Model无关。

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

答案 2 :(得分:1)

你可以使用ObjectDataSource而不是SqlDataSource来利用其他项目中的类(即另一层),但你仍然会使用Web Forms进行艰苦的战斗。

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