.NetCoreORM选择之路,哪个才适合你通用查询类封装之Mongodb篇Snowflake(雪花算法)的JavaScript实现开发记录如何在B/S项目中使用中国天气的实时天气功能开发记录微信小游戏开发入门——俄罗斯方块~雨落忧伤~

因为老板的一句话公司项目需要迁移到.NetCore,但是以前同事用的ORM不支持.NetCore开发过程也遇到了各种坑,插入条数多了也特别的慢,导致系统体验比较差好多都改写Sql实现。

所以我打算找一款

性能比较好

功能比较完善

方便以后可以切换数据库(经过我对老板的了解这个功能非常重要)

并且要有一定用户基础的ORM

参赛ORM

能够参赛的ORM必须要有以下个条件

第一、功能方面要比较完善

第二、Github需要有一定人气并且最近有更新

第三、支持多种数据库少写Sql,方便以后

筛选结果:

1、EFCore

2、Dapper+扩展

3、SqlSugarCore

4、NhibernateCore

5、PetaPoco

第一轮淘汰赛我们比人气&功能

经过对这几个ORM的初步了解,对功能方面和人气方面进行了初步评分

1、EFCore人气10,功能10

2、Dapper+扩展人气10,功能9

3、SqlSugarCore人气7,功能10

4、NhibernateCore人气7,功能10

5、PetaPoco人气6,功能6

经过第一轮帅选,我淘淘汰了PetaPocoORM

最重要的是这个ORM定位比较尴尬,功能一般并且扩展插件也比较稀少。现有功能以拼Sql为主满足不了我以后切换数据库的需求,第一轮淘态。

第一轮得分排名

1、EFCore胜出

2、Dapper+扩展胜出

3、SqlSugarCore,NhibernateCore胜出

4、PetaPoco淘汰

第二轮淘汰赛我们比易用性

写太牛逼的功能并不是我们所考虑的,需要上手快好用,于是我针对项目中几个需求点进行了上手测试,并给出了评分

1、EFCore10轻松满足

3、SqlSugarCore10轻松满足

4、NhibernateCore1完全不会用

第二轮得分排名

1、EFCore,SqlSugarCore胜出

3、NhibernateCore淘汰

能够通过精心挑选并且进入前3名,相信这3个ORM都有他们独自的魅力

第三轮淘汰赛我们比性能

经过对批量插入、单条插入、批量更新、单条更新、条件查询、多选删除等几种常用场景的并发测试

我意外的发现SqlSugar性能比Dapper更加的优秀,EFCore垫底

第三轮得分排名

1、SqlSugarCore胜出

3、EFCore淘汰

通过上面各种环节我们可以发现,我都会淘汰每场比赛表现最差者,因为我想找一个比较平衡的ORM用于项目,不想有短腿。

决赛我们比大家的建议

目前Dapper+扩展和SqlSugarCore这2个ORM是最适合我们的团队的,同事之间也各有说词,暂且平手吧。明天我们公司会在进行讨论。写个博文让大家给给建议,进行最终定夺。

下面是这2款ORM地址:

Dapper

SqlSugar

查询在应用程序中很重要,花样也特别多,不同得业务需求需要不同的查询条件,还要支持and、or……事实上也确实如此,程序中有N多个查询类,并且很可能其中有多个类查询同一张表,所以特别想弄一个通用的查询类。

前几天也是因为讨论有关查询的问题,想到了一个点子觉得可行,最近就抓紧实现了一下来验证想法的可行性……

思路:其实查询类很简单,无非就是你要查询哪个字段—字段名称(Key)、你想搜索的值—字段值(Value)、以及如何进行比较—查询类型(QueryType),这是单个查询条件(之后都叫做查询因子,不知道合适不合适,也是突然间想起来的),如果是多个条件,弄了一个集合就是好了,问题就在于这些查询因子之间的关系(and、or)……既然叫做查询因子,这个集合我们不管他们之间的关系,只是简单的查询因子的集合,我们在弄一个字段来存储他们之间的关系,这里暂时叫做逻辑表达式,例如:((a|b)&c)|((a&b&d)|e),最后我就解析这个表达式就可以了,a、b、c、d、e只要在集合中找到具体的哪个查询因子就可以了,就是这样了。说通用查询类有点惭愧,目前只是在Mongodb下弄了一个简单的实现(重点是思路了,嘿嘿),因为项目上用的是Mongodb所以先实现的肯定是他了,其他的数据库同理……

1、找到最后一个“(”,之后寻找与之匹配的“)”,处理这对圆括号中的简单表达式,这里是a&b&d,处理完之后将结果放在一个字典之中,记作<1,filter1>,之后字符串变为((a|b)&c)|(1|e)

2、参照1的顺序再次处理表达式((a|b)&c)|(1|e),这次处理1|e,字典中添加一项<2,filter2>,字符串变为((a|b)&c)|2

3、处理a|b,字典中添加一项<3,filter3>,字符串变为(3&c)|2

4、处理3&c,字典中添加一项<4,filter4>,字符串变为4|2

5、至此,圆括号已不再,只是简单的表达式,这就简单了

记录一下代码

类库方式实现:

这个功能需求比较简单,就是想在网页端显示实时天气数据。

解决方案:

第二种:既然方便的方式用不了,那么只能自己去寻找另一种的解决方案了;获取实时天气的步骤我给分了两步,第一步先获取用户的所在地,第二步根据所在地获取实时天气数据。

跨域的问题:

先在这里把跨域的问题提一下吧,js的ajax功能为了安全性考虑,只允许ajax访问相同域名下的接口,其他网站是不允许访问的;虽说ajax有jsonp的跨域请求,但是也得要求被访问的接口支持jsonp的数据格式返回(jsonp也是有一定的数据解析格式的),然而本文提到的接口基本上都是返回html或者字符串,是不符合jsonp数据解析的,因此这里需要后台来进行代理请求(就是js访问自己的后台,然后后台进行一次web请求而已)。

第一种:

第二种:

varreturnCitySN={"cip":"","cid":"370100","cname":"山东省济南市"};调用方式是在html页里面引用就好,也不必再考虑跨域的问题,而且在js里面也可以直接使用returnCitySN这个对象(object)。

使用的是后台来进行代理请求

这样就能根据上面获取对应的城市代码了,以济南(101120101)为例

后台代码如下:

到此为止我们终于获取到了用户所在地的实时天气数据了,返回前台js(同样使用eval(result)函数处理下返回的字符串就可以了)后怎么展示就不是本章的重点了,可以随便前端折腾。

总的来说就是适用后台来进行代理请求

特别注意,上述接口可能会过期失效,到时留言,我若看到会进行更新

在任何开发前都需要对要开发的东西有一定的了解、准备;

环境搭建:

1、新建项目,这里我们选择2d项目与TypeScript项目,由于小程序的游戏包的大小限制,在我掌握控制资源大小能力的时候,我选择了较为简单的2d项目

2、项目结构:1为项目的入口文件,相当于Main文件,至于为什么是入口文件,下面会提到;2为引用的代码资源,里面封装了2d项目必要的封装类;3为项目的场景资源文件,包括音频、视频、图片等游戏需要的资源;

3、bin文件夹:此文件夹是编译之后运行的文件夹,比较重要,下面来做详细介绍;

事实上,虽然我们在使用TypeScript开发小游戏,但是最后还是会编译为JavaScript文件,通过执行JavaScript文件来运行小游戏,只是使用TypeScript会比JavaScript开发的更加严谨一些,若你的JavaScript很强,那么也可尝试使用JavaScript来编写;

4、项目编写:项目的大体结构与编译了解的差不多之后,便开始编写我们自己的小程序——俄罗斯方块了,开发过程略,反正就是api的使用,这个在官网有这不少的案例与代码;

首先将以前的代码、资源文件删除掉,然后建立自己的工程,在发布之前,我将index.html文件中没有使用的js引用注释掉

5、发布,选择发布平台,先来个简单的发布吧,不包含版本控制之类的;发布之后,我们会得到一些文件,其实libs这个文件夹并没有多少用的,虽说里面有编译之后的封装文件,但是项目实际运行的所有代码都被LayaIDE自动压缩到code.js文件中,因此,libs文件夹可以删掉,为了减少游戏包体积嘛;还有一个不怎么好的消息,那就是,上面我说的资源文件夹assets是没有被发布出来的,我也没弄清楚怎么回事,只能手动拷贝出来,并且找到code.js文件中的引用路径并修改正确;

下一步目标:

1、学会使用分包加载游戏,更大的游戏包带来更好的游戏(虽说最多8M);

THE END
1.PETA:专怼游戏公司比大妈更会碰瓷的动物保护组织他们还跟游戏公司接下了不解之缘,育碧任天堂等世界知名游戏商都被它“钓鱼”过。他们势力庞大,全球有650万之众,真是惹不起。 这就是PETA——“善待动物组织”。对,这就是他们的名字。只不过除了“善待”动物以外,他们还顺带仇恨人类罢了。 这可不是危言耸听,他们的宗旨是:动物不是供我们实验、食用、穿戴、娱乐...https://www.gamersky.com/zl/201901/1149508.shtml
2.游戏库游戏公司:PETACOMPANY: PETA 按最近更新排列按发行时间排列按媒体评分排列按会员评分排列 Monkey Fright Whole Lotta Lies 猫咪小队Kitten Squad 宝可梦:红、白和蓝Pokémon Red, White, and Blue Cage Fight 宝可梦:黑与蓝PETA's Pokémon Black & Blue https://www.indienova.com/gamedb/company/peta/s/release/p/1
3.极端动保入侵游戏!FF15不让钓鱼,战地3不让杀老鼠,玩家:碰瓷呢?就比如《模拟农场17》之前这游戏加了养猪元素, 但是!人畜无害,只有养殖环节,没有其他内容。 PETA居然又来:你这游戏只能养猪,却不能杀猪,一点都不真实! 必须加入屠宰系统,让大家看看猪有多惨,人类才会在现实中关爱动物。 诶等一下!怎么跟之前说的不一样? https://news.17173.com/content/07202019/100040639.shtml
4.日版周边NULL&PETAPC游戏ぬるぺた骏河屋购入特典B2挂画阿零...(1) 销售价 ¥0.00-55.00 品相 S+ S A B C 商品数量 商品详情http://www.koikoi.com.cn/index.php?s=/index/goods/index/id/6890.html
5.蛋仔恐怖保姆级恐怖攻略PETAPETA蛋仔派对S20新赛季晴天的游戏日记2023-12-30 10:32发布于 江苏 一分不见十分想念 大家好 今天给大家带来最近超火的恐怖追逐地图【PETAPETA】 本地图一共有六个按钮,按完按钮后便可以通关本地图,地图一共有两层,按钮一楼三个,二楼三个 地图名字:【PETAPETA】 地图作者:【小晓选】 ...https://a.4399.cn/gl/42723743_183610.html
1.“Null&Peta”官方网站游戏和动漫媒体组合项目游戏和动漫联动的原创媒体组合项目“Null&Peta”,开始了!我们将向全球传递由天才发明家的小学生“NULL”和NULL开发的“机器人姐姐”“Peta”之间展开的姐妹打闹喜剧。动画片“Null&Peta”将于今年秋季上映!https://cn.nullpeta.com/
2.无限旅馆(PETAPETA)游戏官方版下载无限旅馆(PETAPETA)游戏官方版下载一款画风暗黑玩法惊悚的密室解谜逃脱游戏。玩家进入游戏后将置身在一座废弃的旅馆中,在这个旅馆里有一个非常恐怖的怪物,它回荡在旅馆的每一个角落为了驱赶所有进入旅馆的人类,你需要在旅馆中搜索能够离开的方法,在你搜索的过程中听到petapeta的声音,那就代表怪物距离你越来越近,你需要...https://shouyou.3dmgame.com/android/387316.html
3.pdta游戏攻略,punipeta游戏攻略pdta游戏攻略,punipeta游戏攻略 一、前言 Pda(全称“Paper, Dice, ad he Uexpeced Twis”),是一款策略角色扮演游戏,以其独特的游戏机制和深度的角色扮演体验而备受玩家喜爱。本文旨在为玩家提供一份详尽的Pda游戏攻略,帮助玩家更好地理解游戏机制,掌握游戏技巧,以及充分发挥个人策略,以取得更好的游戏体验。https://m.duoduowan.com/newsxz02/75251.html
4.PetaRush动物赛车游戏为NFT收藏家开启了新的实用程序虽然经济环境可能不利,但加密冬天的结束可能来自 Web3 项目的兴起,这些项目为主流用户和其他加密爱好者带来了很多实用性。 任何有兴趣了解有关 PetaRush 的更多信息的人都可以在网站. 该游戏现已进入第二轮 Beta 测试,并免费向所有人开放。https://www.moonstats.com/zh-CN/news/petarush-animal-racing-game-opens-new-utility-for-nft-collectors/
5.PlayPETA'sOriginalandParodyGamesHerePETAPeople for the Ethical Treatment of Animals 501 Front St., Norfolk, VA 23510 757-622-PETA (7382) 757-622-0457 (fax) PETA is a nonprofit, tax-exempt 501(c)(3) corporation (tax ID number 52-1218336). CFC #11651About PETA Our Story Careers Why Animal Rights? Victories Volunteer PETA ...https://www.peta.org/features/games/
6....&PetaInvasionoftheQueenBug游戏介绍 《阿零和拍塔:女皇BUG的袭来》是由TOKYOTOON制作发行的一款日系风格的横版动作游戏。游戏由动漫《Null & Peta》为基础制作,根据游戏中的设定,网络中的各种bug都被具象化,成为了危害网络世界的怪物,而你们的任务就是消灭所有的bug,维护网络的稳定安全。 游戏视频 游戏截图 中文设置 OPTIONS-LANGUAGE-简体中文...https://truckgame.cn/?p=7129
7.善待动物组织PETA推出VR游戏《WhenTheyCameForUs》善待动物组织(PETA)与科技机构Demodern合作开发了一款名为《When They Came For Us》的新VR游戏,旨在通过让人们站在动物的角度来提高人们对动物权益的认识。 这款沉浸式角色扮演游戏专为Quest 3和Quest 2设计,玩家将身处一艘外星飞船,并说服强大的外星人释放自己。对话完全语音控制,并由基于ChatGPT-4的人工智能生成...https://www.87870.com/informationDetail?officialArticleId=50276
8.AppStore上的“PETAPETAWARSLordof200m"PETAPETA" : Move all party members. "WAIT" : Move King only. *** Collect achievements! *** There are achievements for many style of players. Stronger player, faster player, and so on. Which style do you choose? 更多 新内容 版本记录 版本1.3 Removed Ads SDK.App...https://apps.apple.com/cn/app/petapeta-wars-lord-of-200m/id1043635959
9.《孤岛惊魂6》的斗鸡小游戏遭动物保护组织PETA抗议曾因《孤岛惊魂5》的钓鱼系统而向育碧提出抗议的动物保护组织PETA,再次提出了《孤岛惊魂6》中的“问题”场景。 根据同团体成员Alicia Aguayo的介绍,在《孤岛惊魂6》中有像是格斗游戏一样的,玩家控制鸡和对手的鸡战斗的迷你游戏。将斗鸡这样的恐怖暴力活动改成格斗游戏的做法并不是真正的创新。现代社会正在禁止让动物...http://m.news.dmzj.com/article/72427.html
10.best365官方网站登录入口免费游戏2024-11-22 03:30:11 「百科/秒懂百科」【 best365官方网站登录入口 】支持:32/64bi系统类型:(官方)官方网站IOS/Android通用版/手机APP(2024APP下载)《best365官方网站登录入口》PETAPETA2D版(无限旅馆联机)游戏是一款十分刺激的冒险解谜逃脱游戏,在无限旅馆的迷宫般布局中找到出路,避免陷入死胡同。http://42100.cn/olc/detail/9w3yp.html
11....娱乐》官方中文版下载宝宝集团九游娱乐官方网站-APP下载(蜘蛛口 @seobd666)系统类型:九游娱乐(官方)官方网站-IOS/安卓通用版/手机app天天大惊喜礼包,领不完的红包雨!现在下载,新用户还送新人礼包送新人礼包。《九游娱乐》九游娱乐游戏介绍2024-11-19 13:36「宝宝推荐」【 九游娱乐】...http://mobile.exportnow.cn/bym/detail/oxalwwp.html