15

我去面试了,被要求展示我的业务层架构。我对 3 层架构有一些想法,但真的不知道在面试官面前写什么。所以假设我的项目涉及一个组织的员工,那么我会在那里写什么。它会是我应该制作的任何类型的图表还是一些编码部分。我在 C# 框架 3.5 中工作。我真的不明白这个问题还有什么要说的,所以如果需要的话,请告诉我。谢谢。

编辑 我在winforms工作。我知道业务层是什么,但不知道该告诉面试官什么,因为业务层有代码,显然我的项目有点大,所以代码数量很大。那我应该在那里写什么?

4

5 回答 5

25

3 层架构由 3 个主要层组成

  • PL表示层
  • BLL业务逻辑层
  • DAL数据访问层

每个顶层只询问下面的层,从不看到它上面的任何东西。

当他们问你如何构建你的 BLL时,你可以这样写:

namespace Company.BLL
{
  // let's create an interface so it's easy to create other BLL's if needed
  public interface ICompanyBLL
  {
      public int Save(Order order, UserPermissions user);
  }

  public class Orders : ICompanyBLL
  {
    // Dependency Injection so you can use any kind of BLL 
    //   based in a workflow for example
    private Company.DAL db;
    public Orders(Company.DAL dalObject)
    {
      this.db = dalObject;
    }

    // As this is a Business Layer, here is where you check for user rights 
    //   to perform actions before you access the DAL
    public int Save(Order order, UserPermissions user)
    {
        if(user.HasPermissionSaveOrders)
            return db.Orders.Save(order);
        else
            return -1;
    }
  }
}

作为我正在创建的项目的一个实例:

在此处输入图像描述

PL都是公开的公开服务,我的DAL处理对数据库的所有访问,我有一个服务层处理 2 个版本的服务,一个旧的 ASMX 和新的 WCF 服务,它们是通过公开的,Interface所以对我来说很容易即时选择用户将使用的服务

public class MainController : Controller
{
    public IServiceRepository service;

    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        ...

        if (thisUser.currentConnection.ws_version == 6)
            // Use old ASMX Web Service
            service = new WebServiceRepository6(url, ws_usr, ws_pwd);

        else if (thisUser.currentConnection.ws_version == 7)
            // Use the brand new WCF Service
            service = new WebServiceRepository7(url, ws_usr, ws_pwd);

        ...

    }
}

在上面的代码中,我只是使用依赖注入来分离另一层的知识,因为在这一层(表示层,因为这是 MVC 项目中的控制器)它不应该关心如何调用服务以及用户使用ServiceA而不是ServiceB... 它需要知道的是调用 aIService.ListAllProjects()会给出正确的结果。

您开始划分提案,如果服务连接中出现问题,您知道这与表示层无关,它是服务层(在我的情况下),它很容易修复并且可以轻松部署一个新的service.dll而不是发布整个网站再次...

我还有一个助手,它包含我在所有项目中使用的所有业务对象。

我希望它有所帮助。

于 2011-09-22T06:33:51.810 回答
1

3层如下,

  1. 您的演示文稿在一层中。
  2. 您在其他层的应用程序逻辑 - 称为业务层。
  3. 您在第三层的数据访问类。——称为数据层。

Webforms 将是表示层因此,对于在 ASP.Net 文件后面代码中执行任何操作的员工类,根据我的理解,当您使用 if/else 等应用业务规则时,可以将其视为业务层。App_Code 文件夹中的数据访问类将是数据层。

在桌面应用程序的情况下,表单设计将是表示层,表单代码将是业务层,与访问数据库相关的任何内容都将是数据层。

于 2011-09-22T06:27:20.030 回答
1

业务逻辑被定义为与应用程序数据的检索、处理、转换和管理有关的任何应用程序逻辑;业务规则和政策的应用;并确保数据的一致性和有效性。为了最大化重用机会,业务逻辑组件不应包含特定于用例或用户故事的任何行为或应用程序逻辑。业务逻辑可以进一步细分为以下两类:

  • 业务工作流程。在 UI 组件从用户那里收集到所需的数据并将其传递给业务层之后,应用程序可以使用这些数据来执行业务流程。许多业务流程涉及必须以正确顺序执行的多个步骤,并且可能通过编排相互交互。业务工作流定义和协调长期运行、多步骤的业务流程,并且可以使用业务流程管理工具来实施。它们与业务流程组件一起工作,这些组件实例化并在工作流组件上执行操作。
  • 业务实体业务实体实体,或者——更一般地——业务对象,封装了在您的应用程序中表示真实世界元素(例如客户或订单)所需的业务逻辑和数据。它们存储数据值并通过属性公开它们;包含和管理应用程序使用的业务数据;并提供对业务数据和相关功能的有状态的编程访问。业务实体还验证实体中包含的数据并封装业务逻辑以确保一致性并实现业务规则和行为。
于 2017-11-16T10:11:21.920 回答
0

负责所有业务逻辑的业务层。例如,您有 Organizarion 以便组织和收集员工。在员工对象中需要实现一些限制或一些规则。该规则将在这一层实施。

于 2011-09-22T06:29:08.187 回答
0

三层架构是一种软件架构,由逻辑计算的三个“层”或“层”组成。它们通常在应用程序中用作特定类型的客户端-服务器系统。3 层架构通过模块化用户界面、业务逻辑和数据存储层为生产和开发环境提供了许多好处。

业务逻辑层:业务逻辑是管理最终用户界面和数据库之间通信的编程。业务逻辑的主要组件是业务规则和工作流。

一个业务逻辑层 (BLL),用作表示层和 DAL 之间数据交换的中介。在实际应用中,BLL 应该作为App_Code文件夹中的一个单独的类库项目来实现,以简化项目结构。下面说明了表示层、BLL 和 DAL 之间的架构关系。

BLL 将表示层与数据访问层分离并强加业务规则 BLL

于 2018-12-27T12:14:24.110 回答