Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET Web表单和关注点分离_C#_Asp.net_Webforms - Fatal编程技术网

C# ASP.NET Web表单和关注点分离

C# ASP.NET Web表单和关注点分离,c#,asp.net,webforms,C#,Asp.net,Webforms,不久,我将领导一个团队在ASP.NET web表单中创建一个复杂的制造web应用程序,以前我们的业务逻辑将在同一个项目中,甚至更糟的是,在页面的代码隐藏中 我理解分离关注点很重要,并且使测试更容易测试一直是我们的问题,所以这是我们想要走的方向 然而,对于如何实现这一点,我有点困惑——我们使用了大量绑定到SqlDataSources的RadGrid等。在另一个项目中,这些东西如何与所有业务逻辑一起工作 您可以使用ObjectDataSource而不是SqlDataSource来利用其他项目(即另一

不久,我将领导一个团队在ASP.NET web表单中创建一个复杂的制造web应用程序,以前我们的业务逻辑将在同一个项目中,甚至更糟的是,在页面的代码隐藏中

我理解分离关注点很重要,并且使测试更容易测试一直是我们的问题,所以这是我们想要走的方向


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

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


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

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

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

我的建议是:

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

如果可以的话,忘掉SqlDataSources吧。如果您使用的是SqlDataSources,您仍然可以使用一些业务规则隔离,但是对于以数据为中心的应用程序,大多数业务规则都与编辑和检索数据相关。最好的数据源是简单的IEnumerables。大多数网格控件都支持它。您的业务规则应该检索绑定到网格控件的简单C对象。ObjectDataSource也是一个不错的选择。 如果可以,请使用ASP.NET MVC而不是ASP.NET WebForms。在可测试性和关注点分离方面的优势是巨大的。这就是为什么创造了这项技术。由于您正在启动一个新项目,我强烈推荐您。事实上,ASP.NET MVC就是让控制器层将对象传递给视图,视图可以显示这些对象。
另一个选择是保留webforms,但使用MVP模式。我们发现,对于新开发人员或初级开发人员来说,它的入门门槛要低得多,因为它只是简单的c语言,不需要学习Razor或MVC的惯例,我们发现90%的开发可以由对web开发一无所知的开发人员完成。我们基本上抽象了与web相关的任何东西的使用,如用户或配置文件,使业务代码更加可重用

您必须废除SqlDataSources,但我同意其他人的看法,即它们也是邪恶的。在我们的实现中,数据将从数据库中检索并包装在POCO DTO中,作为IEnumerable传递到视图,然后在页面的代码中进行数据绑定

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


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

另一个选择是保留您的Web表单,但使用MVP模式。我们发现,对于新开发人员或初级开发人员来说,它的入门门槛要低得多,因为它只是简单的c语言,不需要学习Razor或MVC的惯例,我们发现90%的开发可以由对web开发一无所知的开发人员完成。我们基本上抽象了与web相关的任何东西的使用,如用户或配置文件,使业务代码更加可重用

您必须废除SqlDataSources,但我同意其他人的看法,即它们也是邪恶的。在我们的实现中,数据将从数据库中检索并包装在POCO DTO中,作为IEnumerable传递到视图,然后在页面的代码中进行数据绑定

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


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

SqlDataSources是业务逻辑隔离的主要敌人。你不能用任何一种基于对象的数据源来代替它吗?业务逻辑层应该负责检索这些对象。SqlDataSource非常糟糕。SqlDataSource是业务逻辑隔离的主要敌人。你不能用任何一种基于对象的数据源来代替它吗?业务逻辑层应该负责检索这些对象。SqlDataSource非常糟糕。我很想使用MVC,但我们的应用程序可能非常复杂,我们喜欢使用Telerik AJAX库,而相对稀疏的MVC第三方控件库是一个很好的选择problem@ChrisMVC的Telerik现在是很棒的剑道用户界面。测试一下。真正地我很想使用MVC,但我们的应用程序可能非常复杂,我们喜欢使用Telerik AJAX库,而MVC中相对稀疏的第三方控件库是一个很好的选择problem@ChrisMVC的Telerik现在是很棒的剑道用户界面。测试一下。真正地你会很感激的。