1

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

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

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

4

3 回答 3

2

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

您将不得不取消SqlDataSources,但我同意其他所有人的观点,即这些也是邪恶的。在我们的实现中,数据将从数据库中检索并包装在 POCO DTO 中,作为 IEnumerable 传递给视图,然后在页面的代码隐藏中进行数据绑定。

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

MVC 是新的热点,但同时使用 MVC 和 MVP,对于可维护性和可靠性是关键的大型企业 Web 应用程序,我建议使用 MVP。

于 2013-07-13T22:21:01.363 回答
2

我的建议是:

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

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

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

于 2013-07-13T18:03:03.267 回答