首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >三层体系结构中的业务层

三层体系结构中的业务层
EN

Stack Overflow用户
提问于 2011-09-22 06:21:25
回答 5查看 37.7K关注 0票数 16

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

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-22 06:33:51

3层体系结构由3个主要层组成

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

每个顶层只询问下面的一层,没有在上面看到任何东西。

当他们问您关于的问题时,您将如何构建您的BLL,您可以这样写:

代码语言:javascript
运行
复制
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处理对数据库的所有访问,我有一个服务层处理服务的两个版本,一个旧的ASMX和新的WCF服务,它们是通过Interface公开的,所以我很容易选择用户将使用的服务。

代码语言:javascript
运行
复制
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项目中的Controller ),它不应该关心如何调用服务,用户使用ServiceA而不是ServiceB.它需要知道的是,调用IService.ListAllProjects()将给出正确的结果。

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

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

希望能帮上忙。

票数 25
EN

Stack Overflow用户

发布于 2017-11-16 10:11:21

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

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

Stack Overflow用户

发布于 2011-09-22 06:27:20

3层如下,

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7510396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档