開源網站.NETMVC+ Layui+SqlSugar+RestSharp

SugarSite一個前端支持移動端的企業網站,目前只支持了簡單功能,後續還會加上論壇等。前端

源碼GIT地址:git

 https://github.com/sunkaixuan/SugarSitegithub

技術介紹

Layui

我的而言不喜歡引用一堆東西,越簡潔越好,layui正好可以知足個人這種需求,它是一款輕量級UI,JS部分都是採用模塊化設計(AMD) ,對移動端支持比較不錯。sql

惟 一不足是目前支持的組件有些少,須要有必定前端擴展能力的人才能夠順心使用。數據庫

用法:編程

例如我想用form.js和uploda.js我只須要寫use(form,upload)(以下例代碼所示),而不是引用兩個JS文件json

/*
  Demo1.js
  使用Layui的form和upload組件
*/
layui.use(['form', 'upload'], function(){  //若是隻加載一個組件,能夠不填數組。如:layui.use('form')
  var form = layui.form() //獲取form組件
  ,upload = layui.uplaod; //獲取upload組件
  
  //監聽提交按鈕
 
});
      

 

SqlSugar

一款高性能輕量級而且功能強大的ORM框架,支持多種數據庫,支持.NET CORE 。MySql版支持了讀寫分離,SQL版支持了並行計算。設計模式

Asp.net 4.+ Asp.net Core 說明 依賴
SqlSugar.dll SqlSugarCore.dll

SqlServer ORM  api

MysqlSugar.dll MysqlSugarCore.dll

MySql ORM  數組

MySql.Data.dll
SqliteSugar.dll SqliteSugarCore.dll

Sqlite ORM 

System.Data.SQLite.dll

SQLite.Interop.dll(Core版不須要)

OracleSugar.dll -

Oracle ORM

Oracle.ManagedDataAccess.dll
SqlSugarRepository.dll - SqlServer MySql Sqlite Oracle 四合一

MySql.Data.dll

System.Data.SQLite.dll

Oracle.ManagedDataAccess.dll

SQLite.Interop.dll

 

 

RestSharp

在我項目中做用與WCF相近,面向服務編程的一個核心要素,相比WCF更爲簡單更爲輕量,只支持HTTP協議

var client = new RestClient("http://localhost/home/getjson");
// client.Authenticator = new HttpBasicAuthenticator(username, password);

var request = new RestRequest("resource/{id}", Method.POST);
request.AddParameter("name", "value"); // 添加請求參數
request.AddUrlSegment("id", "123"); // 添加 token 

//添加HTTP頭
request.AddHeader("header", "value");

// 添加文件
request.AddFile(path);

// 執行請求
IRestResponse response = client.Execute(request);
var content = response.Content; // 返回請求對象

// or automatically deserialize result
// return content type is sniffed but can be explicitly set via RestClient.AddHandler();
RestResponse<Person> response2 = client.Execute<Person>(request);
var name = response2.Data.Name;

//異步支持
client.ExecuteAsync(request, response => {
    Console.WriteLine(response.Content);
});


var asyncHandle = client.ExecuteAsync<Person>(request, response => {
    Console.WriteLine(response.Data.Name);
});

asyncHandle.Abort();

 

採用的設計思想

從古至今設計模式都是越複雜的你們越喜歡學,哪怕是學了徹底都看不懂是個什麼東西,就認爲這技術高明,可能寫的人自個都沒明白,而相反代碼寫的越多的人越想寫的簡單。

模式這種東西就沒有好壞之分:

不一樣人用不一樣的模式發揮出來的水平也不同

 

個人領悟

嵌套邏輯不能超過3層,若是不符合這個約束在美的寫法都要讓步

1.冗餘代碼只要好維護也是能夠接受的,複製粘貼一把凌,由於簡單的邏輯而致使了代碼的冗餘,若是要作的不冗餘那寫法就要複雜的多,根據狀況不一樣利弊自已選擇,魚和熊掌不少時候是不能兼得的。

2.必定要以業務爲核心分層

3.易讀的代碼和改動少的寫法有衝突的時候我會採用易讀寫法(別人都看不懂,還談什麼可維護性,自已作那是無所謂)

 

代碼講解

代碼結構圖:

我稱這種模式爲:指揮官模式

 

稱詞解釋:

ViewAction :類型爲 ActionResult類型的Action

ApiAction: 類型爲JsonResult類型的Action,在這裏做爲一個業務接口使用

Pack: 爲一個業務塊,而且業務塊和業務塊之間是隔離的,每一個業務塊有多個 ApiAction 和多個ViewAction,

業務塊與業務塊之間的通訊用的是RestSharp調用其它Pack的ApiAction

Outsourcing:業務塊中的一些公用代碼,能夠是一個類也能夠是一個文件夾,根據項目複雜度而定

 

這種架構模式和傳統三層比起來有3大優點 

1.分層容易而且代碼更清晰

之前寫法是以數據表做爲服務,若是是SOA架構還要在抽象一層,固然一個複雜業務會有十張以上的表處理,便會出現這種垃機代碼有幾張表會出現幾個Service

        private x1 X1Service;
        private x2 X2Service;
        private X3 X3Service;
        public DocContentController(x1 X1Service, x3 X1Service, x4X1Service) {
            this.X1Service = X1Service;
            this.X2Service = X2Service;
            this.X3Service = X4Service;
        }

如今寫法,直接獲取一個處理完的業務接口即可以,而不是獲取每一個細的表服務。

_service.Command<HomeOutsourcing, ResultModel<DocResult>>((o, api) =>
{
                var DocLIST= api.Get(Url.Action("GetDoc"), new { typeId = typeId });
 });

 

2.能夠一套代碼多平臺使用

由於都是基於ApiAction若是權限合理徹底能夠當移動端接口,無形中已是SOA架構。

 

 3.層次簡單

 簡單到比三層更精簡

 

完成功能預覽

前端

前端完美支持了全部主流移動端

後臺

後臺簡單大方,沒有爲UI去設計,實用爲主,發佈IIS後可以驗出不錯的流暢感

 

目前只完成了基本的功能,後續會將這個開源項目一直寫下去

 

喜歡就推薦一下

 

源碼GIT地址:

 https://github.com/sunkaixuan/SugarSite

相關文章
相關標籤/搜索