SugarSite一個前端支持移動端的企業網站,目前只支持了簡單功能,後續還會加上論壇等。前端
源碼GIT地址:git
https://github.com/sunkaixuan/SugarSitegithub
我的而言不喜歡引用一堆東西,越簡潔越好,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組件 //監聽提交按鈕 });
一款高性能輕量級而且功能強大的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
|
在我項目中做用與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:業務塊中的一些公用代碼,能夠是一個類也能夠是一個文件夾,根據項目複雜度而定
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地址: