[.net][MVC] AJAX Post 之後呢? 後端流程的想法

由於這一個CodeReview是一整個功能的Review,有時候被批評、指正的時候(尤其是在自己能力還不夠的時候)

都會懷疑自己是不是沒有天分 因為在看他們寫的東西地當下是覺得困難的,就像你看別人把拆解一個機械的過程Show給你看,通常會覺得還是有點困難,但當你真的融入那個拆解的過程,一步一步跟著做實際做之後就會發現,這一切是好的、完整的。

也因為這樣所以我才想把這些寫下來,警惕、期望自己更進步。

首先先說 我們MVC的分層 有拆成 Controller-Service-Dal 

簡單先列出,寫這個的要點是

  1. 在進入方法無論是讀取、寫入、修改,都需要有回傳boolean 去控制
  2. 需使用Debug.Assert 的檢查,讓程式在debug時能快速找出錯誤點
  3. Service層內如果在Dal內有誤,應對Log做寫入(NLog)
  4. Dal 吐出的資料,應要有準確性(前端只需要第一筆資料,不應再傳List 而是應該用FristDefault處理)
  5. 善用Ref , Out ...等 流程控制,使得程式達到上述要點

Controller

        [Authorize]
        [HttpPost]
        public JsonResult GetStepList(string prjIdEncode)
        {
            var result = new
            {
                IsSuccess = stepListService.GetStepList(out StepList stepList, prjIdEncode),
                Content = stepList
            };
            return Json(result);
        }

Service 

        public bool GetStepList(out StepList stepLists,string prjIdEncode)
        {           
            Debug.Assert(!string.IsNullOrWhiteSpace(prjIdEncode), "prjIdEncode不為空值");
            if (!stepListDal.GetPrjStepList(out stepLists, prjIdEncode))
            {
                LogSet.LogError(string.Format("Invoke GetPrjStepList() error. Input: [prjId={0}]", prjId));
                return false;
            }
            return true;
        }

Dal

        public bool GetPrjStepList(out StepList stepLists,string prjID)
        {

            //填入 sql command
            //填入 parameter
            
            stepLists = ExecuteQuery<StepList>(sqlCommand, objParam).FirstOrDefault();
            return stepLists != null ? true : false;
        }