我去面试了,被要求展示我的业务层架构。我对 3 层架构有一些想法,但真的不知道在面试官面前写什么。所以假设我的项目涉及一个组织的员工,那么我会在那里写什么。它会是我应该制作的任何类型的图表还是一些编码部分。我在 C# 框架 3.5 中工作。我真的不明白这个问题还有什么要说的,所以如果需要的话,请告诉我。谢谢。
编辑 我在winforms工作。我知道业务层是什么,但不知道该告诉面试官什么,因为业务层有代码,显然我的项目有点大,所以代码数量很大。那我应该在那里写什么?
我去面试了,被要求展示我的业务层架构。我对 3 层架构有一些想法,但真的不知道在面试官面前写什么。所以假设我的项目涉及一个组织的员工,那么我会在那里写什么。它会是我应该制作的任何类型的图表还是一些编码部分。我在 C# 框架 3.5 中工作。我真的不明白这个问题还有什么要说的,所以如果需要的话,请告诉我。谢谢。
编辑 我在winforms工作。我知道业务层是什么,但不知道该告诉面试官什么,因为业务层有代码,显然我的项目有点大,所以代码数量很大。那我应该在那里写什么?
3 层架构由 3 个主要层组成
每个顶层只询问下面的层,从不看到它上面的任何东西。
当他们问你如何构建你的 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
而不是发布整个网站再次...
我还有一个助手,它包含我在所有项目中使用的所有业务对象。
我希望它有所帮助。
3层如下,
Webforms 将是表示层因此,对于在 ASP.Net 文件后面代码中执行任何操作的员工类,根据我的理解,当您使用 if/else 等应用业务规则时,可以将其视为业务层。App_Code 文件夹中的数据访问类将是数据层。
在桌面应用程序的情况下,表单设计将是表示层,表单代码将是业务层,与访问数据库相关的任何内容都将是数据层。
业务逻辑被定义为与应用程序数据的检索、处理、转换和管理有关的任何应用程序逻辑;业务规则和政策的应用;并确保数据的一致性和有效性。为了最大化重用机会,业务逻辑组件不应包含特定于用例或用户故事的任何行为或应用程序逻辑。业务逻辑可以进一步细分为以下两类:
负责所有业务逻辑的业务层。例如,您有 Organizarion 以便组织和收集员工。在员工对象中需要实现一些限制或一些规则。该规则将在这一层实施。
三层架构是一种软件架构,由逻辑计算的三个“层”或“层”组成。它们通常在应用程序中用作特定类型的客户端-服务器系统。3 层架构通过模块化用户界面、业务逻辑和数据存储层为生产和开发环境提供了许多好处。
业务逻辑层:业务逻辑是管理最终用户界面和数据库之间通信的编程。业务逻辑的主要组件是业务规则和工作流。
一个业务逻辑层 (BLL),用作表示层和 DAL 之间数据交换的中介。在实际应用中,BLL 应该作为App_Code文件夹中的一个单独的类库项目来实现,以简化项目结构。下面说明了表示层、BLL 和 DAL 之间的架构关系。