我去接受采访,并被要求出示我的业务层架构。我对3层架构有一些了解,但实际上不知道在面试官面前写什么。 因此,假设我的项目涉及组织的员工,那么我会在那里写什么。它是我应该制作的任何一种图表还是一些编码部分。我在C#framework 3.5工作。我真的不明白这个问题还有什么要提,所以如果需要的话请告诉我。谢谢。
修改 我在winforms工作。 我知道什么是业务层,但不知道该告诉面试官什么,因为业务层有代码,显然我的项目有点大,所以有大量的代码。那我应该写在那里??
答案 0 :(得分:19)
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
...需要知道的是,调用IService.ListAllProjects()
会得到正确的结果。
你开始划分提议,如果服务连接中出现问题,你知道这与表示层无关,它是服务层(在我的情况下),它很容易修复,可以很容易地部署一个新的{{ 1}}而是再次发布整个网站......
我还有一个帮助程序,其中包含我在所有项目中使用的所有 Business Objects 。
我希望它有所帮助。
答案 1 :(得分:3)
在这里查看我的答案以获取在许多项目中有效的示例,即使UI不是asp.net mvc ...
答案 2 :(得分:1)
3层如下,
Webforms将是表示层 因此,对于员工类在ASP.Net中执行任何操作后面的文件代码可以被视为业务层,因为您正在使用if / else等应用业务规则。 App_Code文件夹中的数据访问类将是数据层。
在桌面应用程序的情况下,表单设计将是表示层,表单代码将是业务层,与访问数据库相关的任何内容都将是数据层。
答案 3 :(得分:1)
业务逻辑定义为与应用程序数据的检索,处理,转换和管理有关的任何应用程序逻辑;业务规则和政策的应用;并确保数据的一致性和有效性。为了最大化重用机会,业务逻辑组件不应包含特定于用例或用户故事的任何行为或应用程序逻辑。业务逻辑可以进一步细分为以下两类:
答案 4 :(得分:0)
负责所有业务逻辑的业务层。例如 您有Organizarion所以组织和收集员工。 在员工对象中需要实施一些限制或一些规则。 该规则将在该层实施。
答案 5 :(得分:0)