標籤:admin 建倉 建構函式 res sof 函數 rar attr 對象
**註:要做工,沒什麼時間,等有空時會上傳到GIT,項目結構如上,簡單的說一下:
**支援IOC及多資料庫等,各項目由MVC地區隔離;
主要使用基於介面與抽象類別進行高度的抽象與介面隔離,與其它架構比較優點如下:
1,抽象度非常高,介面隔離,項目清晰完整,任何一部分均可且容易替換;一開始就非常注重非陷入複雜化;
2,架構非常易用,且易於擴充;編程新手也可立即上手使用;
3,設計目標為:輕量化、高抽象度、可擴充性、模組任意替換、清晰簡潔易用(易懂、代碼量要少[沒必要碼農]);
**NetDevelop架構使用說明:
1,設計圖為Doc檔案夾下;
2,使用說明(支援多資料庫,這裡以MES為例):
2.1 在Mes.Container項目下:
Entitys檔案夾下:建立實體類(用動軟等和模組產生)
EntitysMapping檔案夾下:建立映射類
MesDbContext.cs檔案中:添加DbSet
2.2 在Mes.IRepository項目下:
建立倉儲介面
2.3 在Mes.Repository項目下:
建立倉儲介面實作類別
2.4 在NetDevelop.DbFactory項目下:
Interfaces/IDbSessionMes:添加介面
MesDbSession:添加介面實現
2.5 在Mes.IService項目下:
建立介面;
2.6 在Mes.Service項目下:
建立介面實作類別;
2.7 在MvcApplication項目下(或其它類型應用程式中):
如已建立以下建立工廠,則直用添加註冊;
MvcApplication/Common/NinjectControllerFactory中:建立註冊映射
**以上已進行了高度的抽象與介面隔離,實測並效能有所提升,已經非常的簡化了操作,線程級隔離;
平均上述的每個新加類檔案,除了實體類,其代碼量平均都在5行以下。後續還可以用產生器全部產生;
2.8 如何使用(只用聲明屬性,並在建構函式中載入要手工釋放回收的對象資源):
NetDevelop_20161209.rar
1,實現:Mvc+EasyUI+Ninject,產生實體類可用動軟代碼產生器,只產生簡單實體即可。
2,用這個時,多條件查詢用
IQueryable<User> q = _userService.Find(t => t.Id != 0);
q = q.Where(t=>t....)
q = q.Where(t=>t....)
單條件用 List<User> list=_userService.Find(t => t.Id != 0).ToList();
3,用了IOC後,要簡單很多;
原:IUserService bll=new UserService();
User model=bll.Find(t=>t.Id!=0).First();
現:
每個頁面CS只用一個IUserService _userService{get;set;}
調用:User model=_userService.Find(t=>t.Id!=0).First();
基本上少寫很多的IUserService bll=new UserService();
4,User的使用者帳號表,記得給K3留個欄位,防止後面連不上。
樣本:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Linq.Expressions;
using NetDevelop.Data;
using NetDevelop.Utility;
using Framework.Container.Entitys;//多資料庫支援
using Framework.Container.View;
using Framework.IService;
//using Framework.Service;
using Mes.Container.Entitys;//多資料庫支援
using Mes.Container.View;
using Mes.IService;
//using Mes.Service;
using Newtonsoft.Json;
using MvcApplication.Common;
using Ninject;
namespace MvcApplication.Areas.Admin.Controllers
{
[AuthorizationAuthentication]
public class UserController : BaseController
{
#region Attribute
[Inject]
public IUserService _userService { get; set; }
public UserController()
{
this.AddDisposableObject(_userService);
}
#endregion
//
// GET: /Admin/User/
/// <summary>
/// 使用者表首頁
/// </summary>
/// <returns></returns>
public ActionResult Index()
{
ViewBag.theme = "default";
return View();
}
/// <summary>
/// 擷取所有的使用者檔案
/// </summary>
/// <returns></returns>
public ActionResult GetUserListAll()
{
//查詢樣本:
IQueryable<User> q = _userService.Find(t => t.Id != 0);//惰性載入
或
List<User> list=_userService.Find(t => t.Id != 0).ToList();//立即載入
...其它處理
return Content(Json...);//返回處理後的視圖;
}
}
}
註:在類特性[AuthorizationAuthentication]中,使用了反射,這裡也可另用動態編譯取代(只支援.net4.0以上);
NetDevelop20161217.rar
1,已將服務類的基礎的公用方法單獨提取出來,簡化程式;
2,生產制令單(顯示,增改);多條件查詢與刪除等未處理;
分享基於.NET MVC+EF CodeFirst+IOC+EasyUI的架構設計