【开源项目SugarSite】ASP.NET MVC+ Layui+ SqlSugar+RestSharp项目讲解
SugarSite一个前端支持移动端的企业网站,目前只支持了简单功能,后续还会加上论坛等。
源码GIT地址:
https://github.com/sunkaixuan/SugarSite
技术介绍
Layui
个人而言不喜欢引用一堆东西,越简洁越好,layui正好能够满足我的这种需求,它是一款轻量级UI,JS部分都是采用模块化设计(AMD) ,对移动端支持比较不错。
唯 一不足是目前支持的组件有些少,需要有一定前端扩展能力的人才可以顺心使用。
用法:
例如我想用form.js和uploda.js我只需要写use(form,upload)(如下例代码所示),而不是引用两个JS文件

/*
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 |
无 |
| 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的
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地址:
【开源项目SugarSite】ASP.NET MVC+ Layui+ SqlSugar+RestSharp项目讲解的更多相关文章
- Asp.net MVC + EF + Spring.Net 项目实践(目录)
用4篇博客来搭一个MVC的框架,可能对初学者会有一些帮助,大家共勉吧.我觉得对于中小型项目,这个框架可能还是有一定的用处的,希望能够帮助到一些人. Asp.net MVC + EF + Spring. ...
- ASP.NET MVC+LayUI视频上传
前言: 前段时间在使用APS.NET MVC+LayUI做视频上传功能的时,发现当上传一些内存比较大的视频就会提示上传失败,后来通过查阅相关资料发现.NET MVC框架为考虑安全问题,在运行时对请求的 ...
- Asp.net mvc web api 在项目中的实际应用
Asp.net mvc web api 在项目中的实际应用 前言:以下只是记录本人在项目中的应用,而web api在数据传输方面有多种实现方式,具体可根据实际情况而定! 1:数据传输前的加密,以下用到 ...
- Asp.net MVC + EF + Spring.Net 项目实践3
Asp.net MVC + EF + Spring.Net 项目实践 这一篇要整合Model层和Repository层,提供一个统一的操作entity的接口层,代码下载地址(博客园上传不了10M以上的 ...
- ASP.NET MVC开发:Web项目开发必备知识点
最近加班加点完成一个Web项目,使用Asp.net MVC开发.很久以前接触的Asp.net开发还是Aspx形式,什么Razor引擎,什么MVC还是这次开发才明白,可以算是新手. 对新手而言,那进行A ...
- ASP.NET MVC 入门2、项目的目录结构与核心的DLL
我们新建一个ASP.NET MVC的Web Application后,默认的情况下,项目的目录结构如下: App_Data :这个目录跟我们一般的ASP.NET website是一样的,用于存放数据. ...
- [转]ASP.NET MVC 入门2、项目的目录结构与核心的DLL
我们新建一个ASP.NET MVC的Web Application后,默认的情况下,项目的目录结构如下: App_Data :这个目录跟我们一般的ASP.NET website是一样的,用于存放数据. ...
- Asp.Net MVC安全更新MS14-059导致项目编译失败
微软最近一次安全更新MS14-059(链接:https://technet.microsoft.com/en-us/library/security/ms14-059)由于直接应用到了machine. ...
- Asp.net MVC + EF + Spring.Net 项目实践(一)
准备用几篇文章来做一个MVC的例子,为了给新同事做参考,也为自己做个知识储备. 首先,用VS2013创建一个空白解决方案StudentManageSystem,然后添加一个MVC应用程序(可参考ASP ...
随机推荐
- SQL常用语句(2)
//计算表tb_Blog的字段个数 select count(*) from syscolumns where id=object_id('tb_Blog') 获取指定表的所有字段和字段类型 SELE ...
- 理清那么多个OO(面向对象)
OOA - Object-Oriented Analysis(面向对象分析) OOT - Object-Oriented Testing (面向对象测试) OOP - Object-Oriented ...
- IOS中Json解析的四种方法
作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此“http://www.bejson.com/”网站来进行JSON格式化校验 ...
- .NET vs2010中使用IrisSkin2.dll轻松实现winForm窗体换肤功能
IrisSkin2.dll是一款很不错的免费皮肤控件,利用它可以轻松的实现winForm窗体换肤! 网上很多朋友说在VS2010中不能使用IrisSkin2.dll,我这里提供一个取巧的办法. Iri ...
- 第 22 章 CSS3 渐变效果
学习要点: 1.线性渐变 2.径向渐变 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS3 背景渐变功能,主要有两种渐变方式:线性渐变和径向(放射性)渐变. 一.线性渐变 CSS3 提供了 li ...
- 让我们来讲讲,SCRUM和AGILE(资料来源:https://www.youtube.com/ 文中有代理参数配置)
本期我们讨论的主题是项目管理 以前,一直以为“ Write the code, Change the world ”.但实质上,我们就一写代码的.如果我们能上升到项目管理的角度来实行Project M ...
- 用SQL语句添加删除修改字段_常用SQL
1.增加字段 alter table docdsp add dspcodechar(200)2.删除字段 ALTER TABLE table_NAME DROP COLUMNc ...
- 【背景建模】SACON
SACON(SAmple CONsensus)算法是基于样本一致性的运动目标检测算法.该算法通过对每个像素进行样本一致性判断来判定像素是否为背景. 算法框架图 由上图可知,该算法主要分为四个主要部分, ...
- Java中的GOF23(23中设计模式)--------- 单例模式(Singleton)
Java中的GOF23(23中设计模式)--------- 单例模式(Singleton) 在Java这这门语言里面,它的优点在于它本身的可移植性上面,而要做到可移植的话,本身就需要一个中介作为翻译工 ...
- Servlet生命周期及工作原理
1 Servlet生命周期Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方 ...