今天这篇博文是介绍海棠读社小程序开发的技术博文,由于博主是技术出身,开发过小程序和公众号,所以从决定做海棠读社开始就写代码了。因为只有技术和文化相结合,更能使传统文化大放异彩,更好地传播、讲好中国故事。
漓江山水
千淘万漉虽辛苦。海棠读社公众号、视频号、小程序致力于传播优秀的中华文化,但中华文化包罗万象,在目下泛娱乐时代传统文化更显式微,但这不能成为放弃的理由,因为中华的诗词歌赋、琴棋书画、亭台楼阁、美食美景……中至今依然有很多值得学习、借鉴的东西。只是上面被当下的浮躁、焦虑等蒙上了一层时代的尘埃,没有静下心来细细的品味,这就是海棠读社的使命,让传统优秀文化更接地气、更加深入人心,不再曲高和寡,让成为每个人身边的良师益友。
恽寿平《牡丹图》
吹尽黄沙始到金。正如《我的中国心》里面的歌词:“流在心里的血,澎湃着中华的声音……”,海棠读社始终相信中华几千年文化的积淀是深深刻在每个中国人的心中,无论身处何地只要看到熟悉的汉字、听到亲切的汉语都会让人倍感亲切。海棠读社收集了近30万+的诗词。博彩众家之长、集古今名言佳句。
文章合为时而著,歌诗合为事而作。诗词歌赋中往往包含中作者更深的寓意和当时的社会背景,会在不经意间触摸到厚重的历史,例如杜甫的三吏三别,其中《石壕吏》中“吏呼一何怒,妇啼一何苦”就反映了安史之乱给老百姓带来的深切苦难,更有“烽火连三月,家书抵万金”的期盼。经历过几千年千淘万漉的筛选流传下来的大部分诗歌、文章中往往包含了诗人忧国忧民的情怀,是丰富的精神食粮。
历史人物从不是单一的,是丰富的比如前段时间热播的电视剧《大明风华》里面的明宣宗朱瞻基,相信大家都被里面文韬武略俱全的朱瞻基圈粉,其中有一段是朱瞻基对孙若微说自己以前想成为一个画家,现在海棠读社就收录了明宣宗朱瞻基的《猎犬图》,打开小程序即可查看。
工欲善其事,必先利其器。海棠读社的开发使用了.Net Core3.1Webapi的方式,其中数据库访问层用到了圈内比较有名的开源项目FreeSql,微信小程序和公众号部分用到了Senparc提供的微信SDK、监控用到了HttpReports,帮助我仅仅在一周时间内独立开发完成了一套前后端分离的小程序。
项目名称 | 地址 |
FreeSql | https://github.com/dotnetcore/FreeSql |
Senparc | https://github.com/JeffreySu/WeiXinMPSDK |
HttpReports | https://github.com/dotnetcore/HttpReports |
FreeSql---淡妆浓抹总相宜,FreeSql作为.Net Core生态里一款非常好用并且功能强大的数据库ORM工具。
支持 CodeFirst 迁移,哪怕使用 Access 数据库也支持;
支持 DbFirst 从数据库导入实体类,安装实体类生成工具;
支持 深入的类型映射,比如pgsql的数组类型;
支持 丰富的表达式函数,以及灵活的自定义解析;
支持 导航属性一对多、多对多贪婪加载,以及延时加载;
支持 读写分离、分表分库、过滤器、乐观锁、悲观锁;
支持 MySql/SqlServer/PostgreSQL/Oracle/Sqlite/Firebird/达梦/人大金仓/神舟通用/Access;
之所以淡妆浓抹总相宜是因为,无论采用传统的EF写法还是仓储+工作单元以及纯使用原始用法,FreeSql都能完美胜任,并且性能非常不错。简单到只需要定义好模型层,其他的功能都可以一气呵成,具体用法可以查看文档。
public class BaseEntity<TKey>where TKey:IEquatable<TKey>{ [Column(IsPrimary = true, IsIdentity = true)]public TKey Id { get; set; }[Column(ServerTime = DateTimeKind.Utc, CanUpdate = false)]public DateTime CreateTime { get; set; }[Column(ServerTime = DateTimeKind.Utc)]public DateTime UpdateTime { get; set; }public string OperatorId { get; set; }public bool IsDelete { get; set; }public bool Status { get; set; }}
Senparc---一日看尽长安花。Senparc作为.Net生态一款微信开发的SDK,可以说是非常详尽的集合了所有功能,并且有非常详细的开发文档以及很全的Sample,真正的开箱即用。功能上的说明如下:
已经支持大部分微信 7.x API,包括微信支付、自定义菜单/个性化菜单、模板信息接口、素材上传接口、群发接口、多客服接口、支付接口、微小店接口、卡券接口、发票接口等等。
已支持微信公众号、小程序、企业号、开放平台等各个模块。
已经支持用户会话上下文(解决服务器无法使用 Session 处理用户信息的问题)。
已经全面支持微信公众号、小程序、企业号(企业微信)、微信支付、开放平台的最新 API。
已经支持分布式缓存及缓存策略扩展(默认支持:本地缓存、Redis、Memcached,可自由扩展)。
目前官方的 API 都已完美集成,除非有特殊说明,所有升级都会尽量确保向下兼容,所以已经发布的版本请放心使用或直接升级(覆盖)最新的 dll,Release生成目录,建议使用 Nuget 进行更新。
需要注意的是如果你使用了Autofac,那么在CreateHostBuilder方法中需要注意一点顺序,先Use盛派SDK,之后在UseAutofac:
public static IHostBuilder CreateHostBuilder(string[] args) =>Host.CreateDefaultBuilder(args).UseServiceProviderFactory(new SenparcServiceProviderFactory()).UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureWebHostDefaults(webBuilder =>{webBuilder.UseStartup<Startup>().UseSerilog();});
HttpReports---桐花万里丹山路,雏凤清于老凤声。HttpReports是在我即将完善监控功能的时候偶然间发现的一款工具,因为简单易用易操作,所以一起集成起来,目前在线上正常运行。虽然是一款刚刚开源的项目,但使用以及配置起来也非常方便,看好这款框架。
这里有个小提示,大家在使用的时候可以只在线上跑,在开发环境建议屏蔽转发,例如:
if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseHttpReports();}
正如“海内存知己,天涯若比邻”,希望有更多的伙伴加入我们一起来完善系统,一起来弘扬中华优秀文化,讲好中国故事,欢迎各位文化和技术方面的伙伴一起成为知己~