我去参加了一次面试,并被要求展示我的业务层架构。我对三层架构有一些概念,但真的不知道在面试官面前应该写什么。假设我的项目涉及组织中的员工,则我应该在那里写些什么。我使用的是C#框架3.5。我真的不明白这个问题还需要提到什么,所以如果需要其他信息,请告诉我。谢谢。
编辑 我使用的是winforms。 我知道业务层是什么,但不确定应该告诉面试官什么,因为业务层包含代码,而且我的项目比较大,所以有很多代码。那我应该在那里写些什么呢?
我去参加了一次面试,并被要求展示我的业务层架构。我对三层架构有一些概念,但真的不知道在面试官面前应该写什么。假设我的项目涉及组织中的员工,则我应该在那里写些什么。我使用的是C#框架3.5。我真的不明白这个问题还需要提到什么,所以如果需要其他信息,请告诉我。谢谢。
编辑 我使用的是winforms。 我知道业务层是什么,但不确定应该告诉面试官什么,因为业务层包含代码,而且我的项目比较大,所以有很多代码。那我应该在那里写些什么呢?
一个三层架构由三个主要层组成:
每个顶层仅向下一层提出请求,从不查看在其上方的任何内容。
当有人问你如何构建你的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 处理所有对数据库的访问,我有一个 Service Layer 来处理 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
... 它需要知道的是调用 IService.ListAllProjects()
将提供正确的结果。service.dll
而无需重新发布整个网站...业务逻辑被定义为与应用数据的检索、处理、转换和管理有关的任何应用程序逻辑;业务规则和政策的应用;以及确保数据一致性和有效性。为了最大化重用机会,业务逻辑组件不应包含任何特定于用例或用户故事的行为或应用程序逻辑。业务逻辑可以进一步细分为以下两个类别:
3层架构如下:
Webforms将成为表示层,因此对于员工类,在ASP.Net代码后台文件中执行任何操作都可以被视为业务层,因为您正在使用if / else等应用业务规则。 App_Code文件夹中的数据访问类将成为数据层。
对于桌面应用程序,表单设计将成为表示层,表单代码将成为业务层,与访问数据库相关的任何内容都将成为数据层。
业务层负责所有业务逻辑。例如,您有一个组织机构和员工集合。在员工对象中需要实现一些限制或规则。这些规则将在此层中实现。