【PaPaPa】集成B/S主流技术的MVC5项目 - 实干派:说做就做,我们已经起航

我们是谁

我们是C#爱好者,互相分享技术,一起学习一起成长一起做一个项目。

我们是开源爱好者,从我们手上出来的代码都会托管在源代码管理平台(oschina),到目前为止不收费,将来也不会出现任何收费情况。

我们是“大牛”,工作中、学习中遇到各种问题都在群里讨论的有声有色,或许某某只是初级程序员,但或许你不会的他就正好知道,而此时他就是你的“大牛”。

我们在干什么

一个叫【PaPaPa】的项目,类似伴游的b/s架构项目。

项目中用到的ASP.Net MVC5、Bootstrap 3、Metronic、Redis、EF、SignalR等。

系统架构简介

这是个PPT,这里几乎是所有内容了,毕竟我们目前只做了这些,将来做完以后当然就绝对不止这些了。

如果你想看完整版的PPT,可以戳我:http://files.cnblogs.com/files/doddgu/PaPaPa.pptx

这里是在网上找到PPT模版随便改了下,层级关系不要太纠结喔

大概的类库划分是这个样子的

我们尝试自己创造了一些东西

补一张解决方案的截图

我们已经完成了哪些

系统架构雏形已经搭建完成,上面PPT里提到的东西都完成了(当然目前有部分还只是雏形阶段,这需要一个不断完善的过程)。

而项目目前属于刚起步阶段,只完成了注册、登录、用户中心(修改用户资料)。

基础设施层已经完全与业务脱离,目的是打造一套可复用的底层类库,它的特点应该是:稳定、可扩展、易用。

核心层针对业务做了一些妥协的封装,这里在不同的业务中可能不是那么的适用,但也不是完全没借鉴性的。比如缓存决策,这在大多数项目中都是个很好用的功能。

不能太水了,本篇蜻蜓点水的说下缓存决策

其实技术不能太较真,听上去很高大上的词语实际背后是特别简单的方法调用集合。

毕竟本篇只是个序言,我不会写的太多,如果有兴趣可继续关注我的下一篇,这里讲一小段比较核心点的代码吧。

 1         public override async Task<int> SaveAsync()
 2         {
 3             var result = await base.SaveAsync();
 4
 5             SetRedis();
 6
 7             return result;
 8         }
 9
10         private void SetRedis()
11         {
12             try
13             {
14                 var type = typeof(T);
15                 var monitor = EqualsMonitorManager<string, RedisCacheMonitor>.Get(MonitorConstant.REDIS_KEY, x => x.TableName == type.Name);
16                 if (monitor != null)
17                 {
18                     foreach (var entity in base.DbSet.Local)
19                     {
20                         foreach (var field in monitor.Fields)
21                         {
22                             var pi = type.GetProperty(field);
23                             RedisSingleton.GetInstance.Client.HSet(type.Name, string.Format("{0}:{1}", pi.Name, pi.GetValue(entity, null).ToString()), entity);
24                         }
25                     }
26                 }
27             }
28             catch (Exception ex)
29             {
30                 Logger.Error(ex.ToString());
31             }
32         }

这段代码其实是缓存决策的上半部中的一段,调用缓存前需要填充缓存数据,而这里就是将插入、修改、删除(其实没删除,因为我设计的时候就只允许改成失效状态,不允许删除数据)3个会引发数据库修改的动作发生后同步动作到redis中。

有个很高大上的名词,你可以叫他“镜像”,也可以叫”XXX“,反正这只是某些大牛为了统一叫法起了个名字罢了。

SaveChangesAsync是EF的异步保存方法,我们要做的事情其实很简单,就是拦截保存方法,代码中是SaveAsync,这个是我们自己针对EF封装后的方法。

大概思路是这样的:

想要让 SaveAsync 听我们的话, override 就派上了用场,重写 SaveAsync。

调用基类的 SaveAsync 后,再加上保存到Redis的代码。

这样一个SaveAsync就变成了做2件事,先保存到数据库再保存到Redis,从而杜绝了代码中到处写保存到Redis的重复代码。

细心的朋友会发现,我们并不会把所有的数据保存到Redis中,所以必须要有个规则告诉我们哪些数据才需要保存到redis中。

而代码中 EqualMonitorManager 就是做这个保存规则的事情,因为这里需要搭配很多东西来说,所以如果你对这里感兴趣就敬请期待后面的博客吧。

当然如果你是个急性子也可以直接下载我们的代码,跟踪调试下瞬间了然。

感谢

最后感谢能有那么多人在这个项目启动过程中做出的贡献。

老虎:一个很牛x的PM级人物,需求文档写的很搞笑又很实际。其实叫他“色虎”,我觉得更好些。

贝勒:从不嫌弃任何活,边学边做,很好的小伙子。也可以叫他“十万个为什么”。

四哥:没事儿就蹦出来挑挑刺,提提意见,在这过程中我们确实也是收获良多。

零点:总是有各种各样的问题,活跃群里的气氛。

此处省略号该出现了,“……”

此时我不得不说我学坏了

是的,我发现我之前的开源项目是很多人去看过,下载过,甚至加群,但是很少有人点推荐、评论。

而偶然有一天发现某个博客采用了一个方法效果很好我就效仿一下。

想获得代码地址你得点下推荐,然后评论留下你的QQ邮箱,或者看右上角我的简介,加入我们的群也是一种捷径。

加了群的就不用留QQ邮箱哦,群里公告有git地址的。

最后祝大家工作愉快,事事顺心 ^_^

时间: 2024-10-06 18:11:42

【PaPaPa】集成B/S主流技术的MVC5项目 - 实干派:说做就做,我们已经起航的相关文章

框架基础:关于ajax设计方案(三)---集成ajax上传技术

之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的level2的改进就不介绍了,不清楚的可到前几篇博客去看看.我们直接切入主题. 概念介绍: 1. js的FormData:js中在新的版本中已经支持了FormData对象,可以初始化一个空的form,或者初始化已经存在的form,浏览器测试代码. 2. 浏览器的支持:浏览器已支持input=file的

框架基础:ajax设计方案(三)---集成ajax上传技术

之前发布了ajax的通用解决方案,核心的ajax发布请求,以及集成了轮询.这次去外国网站逛逛,然后发现了ajax level2的上传文件,所以就有了把ajax的上传文件集成进去的想法,ajax方案的level2的改进就不介绍了,不清楚的可到前几篇博客去看看.我们直接切入主题. 概念介绍: 1. js的FormData:js中在新的版本中已经支持了FormData对象,可以初始化一个空的form,或者初始化已经存在的form,浏览器测试代码. 2. 浏览器的支持:浏览器已支持input=file的

【收藏用】--切勿转载Java处理XML的三种主流技术及介绍

原帖地址 : http://www.ibm.com/developerworks/cn/xml/dm-1208gub/ XML (eXtensible Markup Language) 意为可扩展标记语言,它已经是软件开发行业中大多数程序员和厂商用以选择作为数据传输的载体.本文作者对于 Java 处理 XML 的几种主流技术进行一些总结和介绍,希望帮助那些有不同需求的开发人员对于 XML 处理技术的作出最优的选择. 最初,XML 语言仅仅是意图用来作为 HTML 语言的替代品而出现的,但是随着该

C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)

目       录 工业物联网和集成系统解决方案的技术路线... 1 前言... 1 第一章           系统架构... 3 1.1           硬件构架图... 3 1.2           组件构架图... 4 第二章           技术选型与介绍... 5 2.1           开发环境... 5 2.2           数据源... 5 2.3           数据采集... 5 2.4           数据上传服务... 6 2.5      

计算机技术领域当前的主流技术及其需求调查报告

移动互联网,就是将移动通信和互联网二者结合起来,成为一体.是指互联网的技术.平台.商业模式和应用与移动通信技术结合并实践的活动的总称.4G时代的开启以及移动终端设备的凸显必将为移动互联网的发展注入巨大的能量,2014年移动互联网产业必将带来前所未有的飞跃. 在我国互联网的发展过程中,PC互联网已日趋饱和,移动互联网却呈现井喷式发展.前瞻产业研究院发布的<中国移动互联网行业市场前瞻与投资战略规划分析报告前瞻>数据显示,截止2013年底,中国手机网民超过5亿,占比达81%.伴随着移动终端价格的下降

计算机技术领域当前的主流技术及其社会需求调查报告

移动互联网 移动互联网是移动和互联网融合的产物,继承了移动随时随地随身和互联网分享.开放.互动的优势,是整合二者优势的"升级版本",即运营商提供无线接入,互联网企业提供各种成熟的应用.移动互联网被称为下一代互联网web3.0.比如dropbox,uDrop这类应用就是典型的移动互联网应用.移动互联网业务和应用包括移动环境下的网页浏览.文件下载.位置服务.在线游戏.视频浏览和下载等业务.随着宽带无线移动通信技术的进一步发展,移动互联网业务的发展将成为继宽带技术后互联网发展的又一个推动力,

Java 处理 XML 的三种主流技术及介绍

简介: XML (eXtensible Markup Language) 意为可扩展标记语言,它已经是软件开发行业中大多数程序员和厂商用以选择作为数据传输的载体.本文作者对于 Java 处理 XML 的几种主流技术进行一些总结和介绍,希望帮助那些有不同需求的开发人员对于 XML 处理技术的作出最优的选择. 最初,XML 语言仅仅是意图用来作为 HTML 语言的替代品而出现的,但是随着该语言的不断发展和完善,人们越来越发现它所具有的优点:例如标记语言可扩展,严格的语法规定,可使用有意义的标记,内容

计算机技术领域当前的主流技术及社会需求调查报告

移动互联网,就是将移动通信和互联网二者结合起来,成为一体.是指互联网的技术.平台.商业模式和应用与移动通信技术结合并实践的活动的总称.4G时代的开启以及移动终端设备的凸显必将为移动互联网的发展注入巨大的能量,2014年移动互联网产业必将带来前所未有的飞跃. 在我国互联网的发展过程中,PC互联网已日趋饱和,移动互联网却呈现井喷式发展.前瞻产业研究院发布的<中国移动互联网行业市场前瞻与投资战略规划分析报告前瞻>数据显示,截止2013年底,中国手机网民超过5亿,占比达81%.伴随着移动终端价格的下降

Java处理XML的三种主流技术及介绍

Java处理XML的三种主流技术及介绍(1) 2012-08-15 10:44 顾彬/冯晨/乔彬 IBM developerWorks 我要评论(0) 字号:T | T XML (eXtensible Markup Language) 意为可扩展标记语言,它已经是软件开发行业中大多数程序员和厂商用以选择作为数据传输的载体.本文作者对于 Java 处理 XML 的几种主流技术进行一些总结和介绍,希望帮助那些有不同需求的开发人员对于 XML 处理技术的作出最优的选择. AD:51CTO 网+首届AP