首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【类型转换】使用c#实现简易的类型转换(Emit,Expression,反射)

哈喽。大家好,好久不见,最近遇到了一个场景,就是在FrameWork的asp.net mvc中,有个系统里面使用的是EntityFramework的框架,在这个框架里,提供了一个SqlQuery的方法,这个方法很好用啊,以至于在EFCORE8里面又添加了回来,不过不知道性能怎么样,我遇到的场景是通过SqlQuery查询的时候,转换很慢,我估计那背后大概率是使用反射造成的, 因为我的查询可能有上十万,甚至更多,就导致了这个转换的过程及其耗时,以至于刚开始我是想通过Emit等方式去实现一个高性能转换,可是到最后没有去弄,因为我用了DataCommand去查询,最后循环DataReader来实现硬赋值,这样性能是最好,一下减少了好多秒,提升了80%,但也给了我一个灵感,一个实现简易的类型转换的灵感,所以在上周我就把代码写了出来,不过由于工作的忙碌,今天才开始写博客,接下来就呈上。

01

RPC 原理以及开源 RPC 协议 thrift 源码解析

无论是什么语言、什么规模的代码项目,总是需要进行代码间的相互调用,而在企业中,大型项目通常都是多人甚至多团队合作完成的,此时,项目会被拆分为多个内聚的模块独立进行开发,但模块间的项目调用是必不可少的。 那么,如何进行多个模块间的相互调用呢?最通用和简单的模式莫过于通过 http 协议来进行调用,接口提供者与接口调用者共同协商一套规范,然后双方按照预定规范来进行独立开发即可。 在上述交互模式的开发过程中,存在哪些问题呢? 本文我们就来详细介绍一下 http 协议在实际使用中存在的问题,从而说明 rpc 存在的必要性,主页君本文先来详细说明 rpc 的一般性设计思想与构建原理,接着以跨语言的开源 RPC 协议 thrift 来说明 RPC 构建的实例。

02

.NET Core MongoDB数据仓储和工作单元模式封装

上一章我们把系统所需要的MongoDB集合设计好了,这一章我们的主要任务是使用.NET Core应用程序连接MongoDB并且封装MongoDB数据仓储和工作单元模式,因为本章内容涵盖的有点多关于仓储和工作单元的使用就放到下一章节中讲解了。仓储模式(Repository )带来的好处是一套代码可以适用于多个类,把常用的CRUD通用方法抽象出来通过接口形式集中管理,从而解除业务逻辑层与数据访问层之间的耦合,使业务逻辑层在存储、访问数据库时无须关心数据的来源及存储方式。工作单元模式(UnitOfWork)它是用来维护一个由已经被业务修改(如增加、删除和更新等)的业务对象组成的列表,跨多个请求的业务,统一管理事务,统一提交从而保障事物一致性的作用。

01
领券