我是一家公司唯一的.Net开发人员,我的任务是一个非常大而复杂的项目,一个用于库存和时间跟踪的内部intranet站点。我已经构建了一个包含3个应用程序的项目,WebUI、数据访问层和Core。
WebUI是我通常使用的MVC组件,DAL包含实体框架为models使用的模型,而目前持有我开发的所有帮助类。到目前为止,这对我来说很好,但是现在我遇到了一个问题,我无法找到一个很好的解决方案,我认为它来自于我的系统的基本设计。
在我的时间表控制器中,我有一个名为GetTimesheetData的私有方法,它将一个数据和一个employeeID作为输入参数,对ACL执行一些逻辑操作,并对DB进行一些查询,然后返回一个包含所有数据的ViewModel实例。此代码现在需要由此控制器之外的其他类访问。这给我带来了一个问题:在哪里移动这段代码,或者它是否需要被分解并移动到多个地方(我不知道什么地方)。
我正在考虑分割它,并将查询移到我的助手类中,这些类可以从DB获取基本数据(雇员is、员工信息等),也可以是一些基本的业务逻辑,比如查找给定日期的薪资期,或者一个人是否是经理,并且可以批准时间表。
如何改进应用程序的设计,以避免将整个GetTimesheetData方法重新编码到多个地方,如果需要更改,就会引起头痛?
编辑:在继续阅读我可以在谷歌上找到的东西时,我开始认为我可能需要为“业务逻辑”添加一个新的应用程序,该应用程序将包含模型和更复杂的查询,然后是我的助手所拥有的,或者扩展我的Core应用程序以包括这一点。
发布于 2016-05-26 15:03:15
如果我正确理解,您的web层引用核心,核心引用DAL。
在核心层中,创建一个服务类,该类公开GetTimesheetData方法,如
public class TimesheetService
{
public List<TimesheetDataModel> GetTimesheetData()
{
// call DAL to get data
}
}然后在您的控制器和其他地方,使用此服务。
public class TimesheetController : Controller
{
private readonly TimesheetService _timesheetService = new TimesheetService();
[HttpGet]
public ActionResult Get()
{
var data = _timesheetService.GetTimesheetData();
return Json(data, JsonRequestBehavior.AllowGet);
}
}https://softwareengineering.stackexchange.com/questions/319536
复制相似问题