我去面试,并被要求展示我的业务层架构。我对三层架构有一些想法,但真的不知道在面试官面前写些什么。因此,假设我的项目涉及一个组织的员工,那么我会在那里写些什么。是我应该制作的任何图表还是编码部分。我在C#框架3.5中工作。我真的不明白这个问题中还有什么要提的,所以如果有什么是required.Thanks,请告诉我。
编辑我在winforms工作。我知道什么是业务层,但不知道如何告诉面试官,因为业务层有代码,显然我的项目有点大,所以有大量的代码。我应该在那里写些什么??
发布于 2011-09-22 06:33:51
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处理对数据库的所有访问,我有一个服务层处理服务的两个版本,一个旧的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项目中的Controller ),它不应该关心如何调用服务,用户使用ServiceA
而不是ServiceB
.它需要知道的是,调用IService.ListAllProjects()
将给出正确的结果。
您开始划分建议,如果服务连接中出现问题,您知道这与表示层无关,它是服务层(在我的例子中),它很容易修复,可以轻松地部署一个新的service.dll
,而不是再次发布整个网站……
我还有一个助手,它保存我在所有项目中使用的所有业务对象。
希望能帮上忙。
发布于 2017-11-16 10:11:21
业务逻辑是指涉及应用程序数据的检索、处理、转换和管理;业务规则和策略的应用;以及确保数据的一致性和有效性的任何应用程序逻辑。为了最大化重用机会,业务逻辑组件不应该包含任何特定于用例或用户案例的行为或应用程序逻辑。业务逻辑可以进一步细分为以下两类:
发布于 2011-09-22 06:27:20
3层如下,
Webforms将是表示层,因此对于employee类来说,在执行ASP.Net代码后的任何操作时,根据我的理解,可以将业务层视为业务层,因为您正在使用if/else等应用业务规则。App_Code文件夹中的数据访问类将是数据层。
在桌面应用程序中,表单设计将是表示层,表单代码将是业务层,任何与访问数据库相关的内容都将是数据层。
https://stackoverflow.com/questions/7510396
复制相似问题