分享基於.NET MVC+EF CodeFirst+IOC+EasyUI的架構設計

來源:互聯網
上載者:User

標籤: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的架構設計

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.