Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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
Asp.net 三层架构问题_Asp.net_Ado.net_Data Access Layer_N Tier Architecture - Fatal编程技术网

Asp.net 三层架构问题

Asp.net 三层架构问题,asp.net,ado.net,data-access-layer,n-tier-architecture,Asp.net,Ado.net,Data Access Layer,N Tier Architecture,现在,我已经开始研究三层体系结构,但我有一些疑问 通常,我们将数据控件绑定到objectdatasource,并调用业务对象的函数来执行选择、插入、更新或删除操作。我对这种方式没有任何问题 但是,,我的问题是,我有一个只包含2个文本框和1个按钮的登录部分,我创建了一个业务对象,其属性表示用户名和密码,然后我调用了业务对象的函数,该函数又称为数据访问层的函数,如果用户名和密码为对 因此,我认为,当您不使用数据控件时,这不是使用3层的正确方式…因为在这里,我们不合理地调用函数和函数,而我们甚至可以在

现在,我已经开始研究三层体系结构,但我有一些疑问

通常,我们将数据控件绑定到objectdatasource,并调用业务对象的函数来执行选择、插入、更新或删除操作。我对这种方式没有任何问题

但是,,我的问题是,我有一个只包含2个文本框和1个按钮的登录部分,我创建了一个业务对象,其属性表示用户名和密码,然后我调用了业务对象的函数,该函数又称为数据访问层的函数,如果用户名和密码为对


因此,我认为,当您不使用数据控件时,这不是使用3层的正确方式…因为在这里,我们不合理地调用函数和函数,而我们甚至可以在代码隐藏中访问数据…所以请告诉我,我是否正确工作?。。。或者有没有更好的方法来执行类似的操作。

ASP.NET在数据和业务逻辑分离方面很奇怪。MVC使它更简单,但您不指定是否正在使用它。我们围绕这一问题开展了以下工作:

我们构建了一个静态序列化类,该类只负责与数据库交互。它单独负责调用存储过程。它返回POCOs纯旧C对象的实例,序列化程序知道如何实例化这些对象并使用数据库中的数据进行填充

现在,POCO提供了将调用转发给序列化程序的facade方法。例如:

public static Employee Load(int id)
将调用EmployeeSerializer类上的Load方法。它不会做任何其他事情。但它允许页面以自然的方式处理雇员对象

也许不对,但比以前好多了。类似地,调用Employee.Save,调用被转发到EmployeeSerializer

这会将所有存储过程调用封装在一个类中。业务逻辑封装在Employee类中。页面可以与员工一起使用


请注意,业务对象可以与数据库对象位于单独的DLL中,但这往往会导致循环依赖的问题。将它们保存在同一个DLL中,并将它们放在不同的名称空间中。但是一定要将它们与ASP.NET页面分开,方法是将它们放在一个单独的DLL中。

这就是你所说的懒惰的程序员

三层是绝对的。你不可能有三层。这不是三层的

三层结构是为了使代码在长期内更易于维护,而不是在短期内减少开发时间。使用这个按钮