海棠读社小程序研发(.Net Core版)

今天这篇博文是介绍海棠读社小程序开发的技术博文,由于博主是技术出身,开发过小程序和公众号,所以从决定做海棠读社开始就写代码了。因为只有技术和文化相结合,更能使传统文化大放异彩,更好地传播、讲好中国故事。

漓江山水

千淘万漉虽辛苦。海棠读社公众号、视频号、小程序致力于传播优秀的中华文化,但中华文化包罗万象,在目下泛娱乐时代传统文化更显式微,但这不能成为放弃的理由,因为中华的诗词歌赋、琴棋书画、亭台楼阁、美食美景……中至今依然有很多值得学习、借鉴的东西。只是上面被当下的浮躁、焦虑等蒙上了一层时代的尘埃,没有静下心来细细的品味,这就是海棠读社的使命,让传统优秀文化更接地气、更加深入人心,不再曲高和寡,让成为每个人身边的良师益友。

恽寿平《牡丹图》

吹尽黄沙始到金。正如《我的中国心》里面的歌词:“流在心里的血,澎湃着中华的声音……”,海棠读社始终相信中华几千年文化的积淀是深深刻在每个中国人的心中,无论身处何地只要看到熟悉的汉字、听到亲切的汉语都会让人倍感亲切。海棠读社收集了近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();}

正如“海内存知己,天涯若比邻”,希望有更多的伙伴加入我们一起来完善系统,一起来弘扬中华优秀文化,讲好中国故事,欢迎各位文化和技术方面的伙伴一起成为知己~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307229.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件构造学习笔记-第七周

本周只有一节课&#xff0c;内容较少。对于不可变类型的相等比较&#xff0c;需要重写equals和hashCode方法&#xff0c;实现观察等价性。对于可变类型&#xff0c;不建议重写以上两方法&#xff0c;按照默认比较方式&#xff08;比较内存地址&#xff09;即可。 可变类型的相…

asp.net core监控—引入Prometheus(五)

上一篇博文中说到Prometheus有四种指标类型&#xff1a;Counter&#xff08;计数器&#xff09;、Gauge&#xff08;仪表盘&#xff09;、Histogram&#xff08;直方图&#xff09;、Summary&#xff08;摘要&#xff09;&#xff0c;并且我们做了一个Counter的Demo&#xff0c…

软件构造学习笔记-第八周

本周重点是Liskov可替换原则。它要求父类和子类的行为一致性&#xff0c;子类要有更强的不变量、更弱的前置条件、更强的后置条件。在该原则的要求下&#xff0c;每个子类都可以对父类进行替换。这在开发过程中会带来极大的便利&#xff0c;在实验3中学习并运用该原则。 有关复…

C# 中的只读结构体(readonly struct)

翻译自 John Demetriou 2018年4月8日 的文章 《C# 7.2 – Let’s Talk About Readonly Structs》[1]在本文中&#xff0c;我们来聊一聊从 C# 7.2 开始出现的一个特性 readonly struct。任一结构体都可以有公共属性、私有属性访问器等等。我们从以下结构体示例来开始讨论&#x…

软件构造学习笔记-第九周、第十周

因为本周五开始五一假期&#xff0c;所以只有一节软件构造课。因为内容还属于创建模式、结构模式、行为模式。将该堂课的内容整合到本博客中。本周的重点是程序开发模式&#xff0c;在写代码之前首先充分考虑采用哪种模式更有利于开发、维护。采用合适的设计模式帮助理清思路&a…

回顾 | 使用Visual Studio Code进行端到端应用程序开发

点击蓝字关注我们&#xff0c;获得更多课程吧~微软Reactor 为帮助广开发者&#xff0c;技术爱好者&#xff0c;更好的学习 Python&#xff0c;数据科学&#xff0c;机器学习&#xff0c;AI&#xff0c;区块链等技术&#xff0c;将每周三到周六&#xff0c;组织 3~5 场线上分享活…

软件构造学习笔记-第十一周

本周的内容是&#xff0c;比较各个设计模式的区别和联系&#xff0c;并介绍了状态模式和备忘录模式&#xff0c;以及正则表达式。正则表达式用于对文本文件的处理。在实验3中有一项要求是对输入文本进行解析&#xff0c;构造航班。要求表达式不仅要读入合法数据&#xff0c;还要…

实现 OutOfMemory​

通过代码实现 OutOfMemoryIntro来尝试写一个发生 OutOfMemoryException 的代码吧&#xff0c;开启煞笔代码第三篇 —— OutofMemoryOutOfMemoryOutOfMemory 顾名思义就是内存不足&#xff0c;在 .NET 中当内存不足的时候就会抛出 OutOfMemoryException 的异常。想要触发 OutOfM…

软件构造学习笔记-实验3

本次实验要求从五项要求&#xff08;航班管理、高铁车次管理、操作系统进程管理、大学课表管理、学习日程管理&#xff09;里完成三项要求&#xff0c;并且尽量实现复用。 面向可复用性和可维护性的设计&#xff1a;PlanningEntry 1.首先设计一个类CommonPlanningEntry来实现…

用 Span 对 C# 进程中三大内存区域进行统一访问 ,太厉害了!

一&#xff1a;背景 1. 讲故事前段时间写了几篇 C# 漫文&#xff0c;评论留言中有很多朋友多次提到 Span&#xff0c;周末抽空看了下&#xff0c;确实是一个非常????????的新结构&#xff0c;让我想到了当年的WCF&#xff0c;它统一了.NET下各种零散的分布式技术&#…

福利 | 全网疯传免费领,一整套算法课程,拿走不谢!

算法对于程序员而言&#xff0c;到底有多重要&#xff0c;这已经是一个老生常谈的话题了。我看过很多有潜力且非常努力的程序员&#xff0c;在进阶高级工程师或架构师的路上&#xff0c;栽在了“算法”上&#xff0c;说实话&#xff0c;我并不意外。如果说得功利和实际一些&…

软件构造学习笔记-第十二周

本周介绍了异常以及异常的处理。Java的异常机制将处理异常的代码整合到一个代码块中&#xff0c;而不是通过if-else进行处理&#xff0c;提高了代码整体的简洁性。同时&#xff0c;异常机制可以更加详细地说明错误类型、引起错误的位置、错误信息&#xff0c;对程序健壮性十分有…

C#中LINQ与数据管道

假如有一个集合&#xff0c;里面有数字1-10&#xff0c;现在想实现从这10个数字中取出偶数数字&#xff0c;然后将得到的偶数乘以10&#xff0c;最后输出前三个。代码如下&#xff1a;代码非常的简单&#xff0c;最后会得到20、40、60这三个数字&#xff0c;但结果并不是我们今…

软件构造学习笔记-实验4

磕磕绊绊也算是完成了最后一个实验。记录一下实验中遇到的问题。 IDEA中SpotBugs的安装和使用 从网上找教程&#xff0c;都说IDEA没有使用版权。结果我直接在插件中就找到了。点击安装并重启即可。 使用时&#xff0c;选择需要操作的项目/包/类点击右键&#xff0c;就能看到S…

使用ML.NET模型生成器来完成图片性别识别

什么是ML.NET&#xff1f;ML.NET 使你能够在联机或脱机场景中将机器学习添加到 .NET 应用程序中。借助此功能&#xff0c;可以使用应用程序的可用数据进行自动预测。机器学习应用程序利用数据中的模式来进行预测&#xff0c;而不需要进行显式编程。ML.NET 的核心是机器学习模型…

软件构造学习笔记-第十四周、十五周

课程进入了尾声。本周内容主要是线程安全相关。线程错误比一般的错误更加难以发现和修改&#xff0c;甚至加入一条print语句就能改变时间分片&#xff0c;从而导致错误消失。重点介绍了“锁”的机制&#xff0c;在使用时避免对整个方法进行lock&#xff0c;而是对可能发生线程不…

打爆你的 CPU

通过一段代码打爆你的 CPUIntro这是这个煞笔代码系列的最后一篇——Full CPU&#xff0c;相对来说也比前面三个简单一些&#xff0c;没有那么多的知识点。今天来尝试写一段代码&#xff0c;把 CPU 打满&#xff0c;让所有处理器的 CPU 使用率达到 100%&#xff0c;Lets do it.如…

吴恩达DeepLearningCourse1-神经网络和深度学习

计划在9月4日&#xff08;截止日期&#xff09;之前完成DeepLearning的所有课程学习。每个课程对应一篇博客&#xff0c;根据学习进度随时更新。 参考课程文章目录&#xff08;一&#xff09;深度学习概论结构化数据和非结构化数据提高效果的方法&#xff08;二&#xff09;神经…

吴恩达DeepLearningCourse2-改善深层神经网络:超参数调试、正则化以及优化

文章目录第一周&#xff1a;深度学习的实用层面训练、开发、测试集偏差、方差机器学习基本步骤L2正则化Dropout&#xff08;随机失活&#xff09;正则化其它正则化方法正则化输入神经网络的权重初始化梯度检验第二周&#xff1a;优化算法Mini-Batch梯度下降法指数加权平均指数加…

面向监狱编程:一伙人植入木马程序至 559 万部手机,盈利 33 万!

2018 年下半年以来&#xff0c;孙某&#xff08;上海宏路数据技术股份有限公司副总经理&#xff09;与苏某&#xff08;北京亿量科技有限公司法定代表人&#xff09;商议合作开展锁屏拉起广告业务&#xff08;通过在用户手机上植入带有木马程序的 SDK&#xff0c;可控制手机在锁…