【问题标题】:3-tier architecture with ASP.NET Web Forms具有 ASP.NET Web 窗体的 3 层体系结构
【发布时间】:2017-10-10 04:38:39
【问题描述】:

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

  1. .aspx 和 .Master 页面包含所有 Web 表单 UI 控件
  2. .aspx.cs 页面用于处理大部分业务逻辑。我还有一个 Utility 类,我在其中定义了许多不同页面使用的方法。
  3. 用于存储数据的 SQL Server 数据库。

当我将应用程序发布到生产服务器时,.aspx.cs 页面被删除,只留下 .aspx 页面。所有逻辑都编译到 /bin 文件夹中的 [ProjectName].dll 文件中。

这是否属于 3 层架构,还是仍然只有 2 层?

我应该采取哪些步骤将其转换为 3 层架构?如果我将 .aspx.cs 文件中的所有方法移至 Utility 类,是否可以实现业务逻辑与表示层的分离?

【问题讨论】:

    标签: c# asp.net webforms 3-tier


    【解决方案1】:

    3 层架构通常由表示层、业务层和数据层组成。

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

    查看本教程:http://www.c-sharpcorner.com/UploadFile/4d9083/create-and-implement-3-tier-architecture-in-Asp-Net/

    【讨论】:

      【解决方案2】:

      层应按其职责分组。

      只要Utility 类包含与WebForms 问题相关的代码,如解析查询字符串、使用会话,则具有aspx 文件和Utility 的项目可以形成单层。后面的代码(aspx.csaspx.designer.cs)编译在单个 dll 中。这通常命名为PresentationApplication

      没有规定单层只有一个 dll。

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

      到此为止,您有一个两层结构:Presentation 层和DataAccess 层。

      中间可以是Business层。这可以是另一个项目,其中包含编排来自Presentation 的对象并将它们传递给DataAccess 层的类。

      这些项目的耦合是用于对架构进行分类的另一个标准。在 n 层架构中,Presentation 引用 BusinessBusiness 引用 DataAccess。这也被命名为lasagna 架构,因为底层的变化会导致上层的变化。在某些架构中,DataAccess 引用 Business 以实现业务所需的与持久性问题相关的接口。

      但不要对这些过于执着,这一切都取决于客户的需求。通常只需要一层架构即可。

      【讨论】:

        猜你喜欢
        • 2011-05-16
        • 2018-09-15
        • 1970-01-01
        • 1970-01-01
        • 2015-01-30
        • 1970-01-01
        • 2017-05-02
        • 2011-02-22
        • 2012-01-23
        相关资源
        最近更新 更多