首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助找出我的应用程序布局的更好方法,请

需要帮助找出我的应用程序布局的更好方法,请
EN

Software Engineering用户
提问于 2016-05-26 14:26:49
回答 1查看 99关注 0票数 0

我是一家公司唯一的.Net开发人员,我的任务是一个非常大而复杂的项目,一个用于库存和时间跟踪的内部intranet站点。我已经构建了一个包含3个应用程序的项目,WebUI、数据访问层和Core。

WebUI是我通常使用的MVC组件,DAL包含实体框架为models使用的模型,而目前持有我开发的所有帮助类。到目前为止,这对我来说很好,但是现在我遇到了一个问题,我无法找到一个很好的解决方案,我认为它来自于我的系统的基本设计。

在我的时间表控制器中,我有一个名为GetTimesheetData的私有方法,它将一个数据和一个employeeID作为输入参数,对ACL执行一些逻辑操作,并对DB进行一些查询,然后返回一个包含所有数据的ViewModel实例。此代码现在需要由此控制器之外的其他类访问。这给我带来了一个问题:在哪里移动这段代码,或者它是否需要被分解并移动到多个地方(我不知道什么地方)。

我正在考虑分割它,并将查询移到我的助手类中,这些类可以从DB获取基本数据(雇员is、员工信息等),也可以是一些基本的业务逻辑,比如查找给定日期的薪资期,或者一个人是否是经理,并且可以批准时间表。

如何改进应用程序的设计,以避免将整个GetTimesheetData方法重新编码到多个地方,如果需要更改,就会引起头痛?

编辑:在继续阅读我可以在谷歌上找到的东西时,我开始认为我可能需要为“业务逻辑”添加一个新的应用程序,该应用程序将包含模型和更复杂的查询,然后是我的助手所拥有的,或者扩展我的Core应用程序以包括这一点。

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2016-05-26 15:03:15

如果我正确理解,您的web层引用核心,核心引用DAL。

在核心层中,创建一个服务类,该类公开GetTimesheetData方法,如

代码语言:javascript
复制
public class TimesheetService
{
    public List<TimesheetDataModel> GetTimesheetData()
    { 
        // call DAL to get data
    }
}

然后在您的控制器和其他地方,使用此服务。

代码语言:javascript
复制
public class TimesheetController : Controller
{
    private readonly TimesheetService _timesheetService = new TimesheetService();

    [HttpGet]
    public ActionResult Get()
    {
        var data = _timesheetService.GetTimesheetData();
        return Json(data, JsonRequestBehavior.AllowGet);   
    }

}
票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/319536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档