Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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_3 Tier - Fatal编程技术网

C# 使用ASP.NET Web窗体的三层体系结构

C# 使用ASP.NET Web窗体的三层体系结构,c#,asp.net,webforms,3-tier,C#,Asp.net,Webforms,3 Tier,我用C#开发了一个ASP.NET Web表单应用程序,包括: .aspx和.Master页,其中包含所有web表单UI控件 .aspx.cs页面,用于处理大部分业务逻辑。我还有一个实用程序类,我在其中定义了许多不同页面使用的方法 用于存储数据的SQL Server数据库 将应用程序发布到生产服务器时,.aspx.cs页面将被删除,只留下.aspx页面。所有逻辑都被编译到/bin文件夹中的[ProjectName].dll文件中 这是否符合三层体系结构的要求,还是仍然只有两层体系结构 我应该采取什

我用C#开发了一个ASP.NET Web表单应用程序,包括:

  • .aspx和.Master页,其中包含所有web表单UI控件
  • .aspx.cs页面,用于处理大部分业务逻辑。我还有一个实用程序类,我在其中定义了许多不同页面使用的方法
  • 用于存储数据的SQL Server数据库
  • 将应用程序发布到生产服务器时,.aspx.cs页面将被删除,只留下.aspx页面。所有逻辑都被编译到/bin文件夹中的[ProjectName].dll文件中

    这是否符合三层体系结构的要求,还是仍然只有两层体系结构


    我应该采取什么步骤将其转换为3层体系结构?如果我将.aspx.cs文件中的所有方法都移动到实用程序类中,这会实现业务逻辑与表示层的分离吗?

    三层体系结构通常由表示层、业务层和数据层组成

    代码隐藏文件(aspx.cs)位于表示层中。在.net中,您应该为每一层创建单独的项目


    查看本教程:

    三层体系结构通常由表示层、业务层和数据层组成

    代码隐藏文件(aspx.cs)位于表示层中。在.net中,您应该为每一层创建单独的项目


    查看本教程:

    各层应按其职责进行分组

    只要
    实用程序
    类包含与
    WebForms
    问题相关的代码,例如解析查询字符串、处理会话等,
    aspx
    文件和
    实用程序
    的项目就可以形成一个单层。隐藏的代码(
    aspx.cs
    aspx.designer.cs
    )在单个
    dll
    中编译。这通常被命名为
    Presentation
    Application

    没有为单个层提供单个dll的规则

    例如,您的数据库层可以有两个dll。这意味着您的解决方案中将包含两个包含与数据库通信相关的逻辑的项目。一个项目可能只使用ADO.Net,另一个项目可能使用EntityFramework从数据库中持久化和检索对象。您通常会发现这些项目被归类为
    DataAccessLayer

    在此之前,您有一个两层结构:表示层和数据访问层

    中间可以是
    业务
    层。这可以是另一个包含类的项目,这些类对来自
    表示
    的对象进行编排,并将它们传递到
    数据访问

    这些项目的耦合是用于对体系结构进行分类的另一个标准。在n层体系结构中,
    表示
    引用了
    业务
    业务
    引用了
    数据访问
    。这也被称为“千层面”,因为底层的变化会导致上层的变化。有些架构中,
    DataAccess
    引用了
    Business
    ,以实现与持久性相关的业务所需的接口


    但不要对这些信以为真,一切都取决于客户的需求。通常只需要一层体系结构。

    各层应按其职责进行分组

    只要
    实用程序
    类包含与
    WebForms
    问题相关的代码,例如解析查询字符串、处理会话等,
    aspx
    文件和
    实用程序
    的项目就可以形成一个单层。隐藏的代码(
    aspx.cs
    aspx.designer.cs
    )在单个
    dll
    中编译。这通常被命名为
    Presentation
    Application

    没有为单个层提供单个dll的规则

    例如,您的数据库层可以有两个dll。这意味着您的解决方案中将包含两个包含与数据库通信相关的逻辑的项目。一个项目可能只使用ADO.Net,另一个项目可能使用EntityFramework从数据库中持久化和检索对象。您通常会发现这些项目被归类为
    DataAccessLayer

    在此之前,您有一个两层结构:表示层和数据访问层

    中间可以是
    业务
    层。这可以是另一个包含类的项目,这些类对来自
    表示
    的对象进行编排,并将它们传递到
    数据访问

    这些项目的耦合是用于对体系结构进行分类的另一个标准。在n层体系结构中,
    表示
    引用了
    业务
    业务
    引用了
    数据访问
    。这也被称为“千层面”,因为底层的变化会导致上层的变化。有些架构中,
    DataAccess
    引用了
    Business
    ,以实现与持久性相关的业务所需的接口

    但不要对这些信以为真,一切都取决于客户的需求。通常只需要一层体系结构