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", ""); // 添加 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

开源网站.NETMVC+ Layui+SqlSugar+RestSharp的更多相关文章

  1. 【开源项目SugarSite】ASP.NET MVC+ Layui+ SqlSugar+RestSharp项目讲解

    SugarSite一个前端支持移动端的企业网站,目前只支持了简单功能,后续还会加上论坛等. 源码GIT地址: https://github.com/sunkaixuan/SugarSite 技术介绍 ...

  2. .Net开源SqlServer ORM框架SqlSugar整理

    一.链接整理 官方Git源代码地址: https://github.com/sunkaixuan/SqlSugar 最新发布版更新地址:当前版本Release 3.5.2.1 https://gith ...

  3. 开源网站流量统计系统Piwik源码分析——后台处理(二)

    在第一篇文章中,重点介绍了脚本需要搜集的数据,而本篇主要介绍的是服务器端如何处理客户端发送过来的请求和参数. 一.设备信息检测 通过分析User-Agent请求首部(如下图红线框出的部分),可以得到相 ...

  4. 开源网站流量统计系统Piwik源码分析——参数统计(一)

    Piwik现已改名为Matomo,这是一套国外著名的开源网站统计系统,类似于百度统计.Google Analytics等系统.最大的区别就是可以看到其中的源码,这正合我意.因为我一直对统计的系统很好奇 ...

  5. 开源网站访问统计系统Piwik

    http://www.piwik.cn/ http://www.piwik.org/ Piwik 是一套基于 Php+MySQL 技术构建,能够与 Google Analytics 相媲美的开源网站访 ...

  6. 常用开源网站:sourceforge,github,foss,launchpad,PortableApps,datamation,opensourcewindows,opensourceMac,apache.org,kde,

    常用开源网站:sourceforge,github,foss,launchpad,PortableApps,datamation,opensourcewindows,opensourceMac,apa ...

  7. 开源网站云查杀方案,搭建自己的云杀毒-搭建ClamAV服务器

    开源网站云查杀方案,搭建自己的云杀毒 搭建ClamAV服务器 1        前言: 在上一篇我们已经演示了整个方案,传送门<开源网站云查杀方案,搭建自己的云杀毒>:https://ww ...

  8. Jar包下载 开源网站 模板下载

    在日常的java学习和开发中,总是遇到各种jar包下载,但是CSDN这种坑爹网站,各位码农们都想挣点C币,一个开源的免费的东西就这么变了味,我这里收集 了一些好用的工具,日常开发中需要用的请自取,毕竟 ...

  9. 网站模板-Layui:Layui

    ylbtech-网站模板-Layui:百科 layui,是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的 ...

随机推荐

  1. js原生代码实现轮播图案例

    一.轮播图是现在网站网页上最常见的效果之一,对于轮播图的功能,要求不同,效果也不同! 我们见过很多通过不同的方式,实现这一效果,但是有很多比较麻烦,而且不容易理解,兼容性也不好. 在这里分享一下,用j ...

  2. js生成二维码 中间有logo

    描述: jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码.此插件是能够独立使用的,体积也比较         ...

  3. 剑指Offer面试题:6.用两个栈实现队列

    一.题目:用两个栈实现队列 题目:用两个栈实现一个队列.队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入结点和在队列头部删除结点的功能. 原文是使用 ...

  4. C++的性能C#的产能?! - .Net Native 系列向导

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  5. 安装 mysql-5.7.5-m15-winx64

    win7 64位下如何安装配置mysql-5.7.5-m15-winx64 距离上次安装MySQL已经过去好久了.步骤这些,有可能会忘记.简单记录一下吧.(参考了一些网络上的博客.) 1.mysql- ...

  6. Git Shell 基本命令(官网脱水版)

    用户信息 当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址. 这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改: $ git conf ...

  7. C语言 · 求矩阵各个元素的和

    问题描述 这里写问题描述. 输入格式 测试数据的输入一定会满足的格式. 例:输入的第一行包含两个整数n, m,分别表示矩阵的行数和列数.接下来n行,每行m个正整数,表示输入的矩阵. 输出格式 要求用户 ...

  8. java.io.IOException: invalid header field

    通过本文, 我们明白了什么是 jar的清单文件 MANIFEST.MF, 简单示例: E:\ws\Test\WEB-INF\classes>jar cvfm testCL.jar ListTes ...

  9. iOS-Runtime在开发中的使用及相关面试题

    OC语言中最为强大的莫过于OC的运行时机制-Runtime,但因其比较接近底层,一旦使用Runtime出现bug,将很难调试,所以Runtime在开发中能不用就不用.下面我将介绍一些Runtime在开 ...

  10. 谈谈关键字strictfp

     Java语言中的其中一个设计目标是可移植性.无论在哪个虚拟机上运行,同一个计算应该得到同样的结果.对于浮点数的算术运算,实现这样的可移植性是相当困难的.double 类型使用 64 位存储一个 do ...