Npgsql 2.1.1新版发布

简介: 在延续了许久的2.0.x系列之后,Npgsql社区终于在今年3月发布了Npgsql 2.1.1。这个版本有很多重大改进,一会我会列出来。如果你细心观察代码,你会惊讶的发现几乎一半的代码被修改了。

在延续了许久的2.0.x系列之后,Npgsql社区终于在今年3月发布了Npgsql 2.1.1。这个版本有很多重大改进,一会我会列出来。如果你细心观察代码,你会惊讶的发现几乎一半的代码被修改了。是的,最近一年左右的时间内,Npgsql社区的修正相当活跃,完全不是以前那种慢腾腾的状态。这一切可能得益于Francisco Figueiredo Jr.将代码托管到github之后提交Patch变得方便了,从而引爆了一部分hacker的热情。
下面来看看Npgsql 2.1有哪些主要的新功能吧!


1)Entity Framework 6.0的支持
提供对Entity Framework 6.0的初始支持,以后应该还会进一步加强。
Npgsql同时提供两个版本的Entity Framework支持dll。
Npgsql.LegacyEntityFramework.dll
  EF6.0以前的dll

Npgsql.EntityFramework.dll
  EF6.0及以前的dll


2)查询优化
这一版做了大量的客户端查询优化,我印象比较深的主要有下面两点
a)尽量使用Binary格式而不是Text格式发送数据。
b)可以要求Npgsql总是使用Prepare的方式发送查询。(需要设置AlwaysPrepare连接参数)

那么和以前的区别在什么地方呢?
举个例子,以前要把一个10字节的bytea参数传到服务端,要发类似这样的SQL语句。
insert into tbbytea values(1,((E'\\000\\001\\000\\000\\000\\000\\000\\000\\000\\000')))

每个字节编码成4个字符。.NET中每个字符占用系统字节数不止一个。 这样做无形中把本来只需10字节的数据的占用空间放大了很多倍,我们的实测表明在有1G内存的的系统里,最多只能插入30M大的bytea数据。响应的网络通信量也被放大了。
这只是一个方面,除了内存使用量的放大,Text格式也带来了很多不必要的数据转换上的时间消耗。
现在的版本更加倾向于使用Binary格式发送数据(对于上面的例子只需使用10个裸的字节);Text格式仍然支持,因为某些场合还离不开它。
需要说明的是,这个修正可不像表面看上去那么轻松。它涉及几十种数据类型,各种数据类型的转换以及处理流程上的各个函数。这大概也是Francisco Figueiredo Jr.在发布公告里把这些Patch的作者Glen Parker作为第一个感谢对象的原因。


3)使用.NET自带的SSLStream来支持SSL
以前Npgsql是通过Mono.Security.dll支持SSL的,现在由于使用.NET自带的SSLStream,用户可以扔掉恼人的Mono.Security.dll了。但出于兼容性的考虑,暂时现在同时提供两种方案,并且缺省还是使用Mono.Security.dll。
如果想使用新的SSLStream,需要设置下面的连接参数:
NpgsqlConnection.UseSslStream = true


4)项目重组
 调整了项目的目录布局和一些其它东西。现在的Npgsql更容易在不同环境下编译,测试和发布。

其它还有很多修正(包括我的2个微不足道的修正),详细请看这里
https://github.com/npgsql/Npgsql/releases/tag/v2.1.0

和v2.1.0相比,v2.1.1只多了一个小的Bug修正
https://github.com/npgsql/Npgsql/releases/tag/v2.1.1

相关文章
|
7月前
|
Kubernetes 虚拟化 异构计算
新版发布 | Cloudpods v3.10.5 和 v3.9.13 正式发布
Cloudpods v3.10.5 和 v3.9.13 正式发布,本期发布中,ocboot 部署脚本有较多变化,首先支持以非 root 用户执行安装流程,其次响应社区的呼吁做了一些优化。
|
7月前
|
Java 数据安全/隐私保护
[Recaf 3.x ] #1 新版工具功能介绍
recaf 3.0的ssvm功能的使用
155 0
|
8月前
|
监控 Cloud Native 机器人
新版发布 | Cloudpods v3.10.4 和 v3.9.12 正式发布
Cloudpods 是一个开源的 Golang 实现的云原生的多云和混合云融合平台。 Cloudpods 不仅可以管理本地的虚拟机和物理机资源,还可以管理其他公有云和私有云平台的资源。
新版发布 | Cloudpods v3.10.4 和 v3.9.12 正式发布
|
9月前
|
Kubernetes 监控 Ubuntu
新版发布 | Cloudpods v3.10.3 和 v3.9.11 正式发布
新版发布 | Cloudpods v3.10.3 和 v3.9.11 正式发布!其中v3.10.3增加了平台升级记录、巡检报告支持下载等企业版新功能。
新版发布 | Cloudpods v3.10.3 和 v3.9.11 正式发布
|
10月前
|
Kubernetes 负载均衡 NoSQL
新版发布 | Cloudpods v3.10.2 正式发布
距离 v3.10 大版本发布刚过去一个月, v3.10.2 也要正式 release 了,快来看看它新增了哪些新功能以及修复了哪些问题吧。
新版发布 | Cloudpods v3.10.2 正式发布
|
定位技术 ice
OSGeoLive 15.0 版本发布
OSGeoLive 15.0 版本发布
93 0
|
Cloud Native 分布式数据库
用户指南—实例管理—版本升级
您可以升级PolarDB-X实例到最新版本,快速体验实例新特性,本文将介绍如何在控制台上升级实例版本。
用户指南—实例管理—版本升级
|
开发框架 人工智能 JavaScript
阿里云HaaS发布2.0新版本:实现极简连云
今日,阿里云HaaS2.0新版本正式发布。作为IoT头号玩家的新宠,HaaS2.0是阿里云IoT团队最新研发的一套低代码编程框架,通过积木化的方式降低物联网设备云端一体开发门槛,加速物联网创新迭代,打通从硬件设备到云端服务的全链路数据闭环,让开发者更好地上云。
914 0
阿里云HaaS发布2.0新版本:实现极简连云
|
应用服务中间件
2.55.0 版本发布
信息摘要: 1. Dubbo 服务治理 公网体验 专业版试用 跨账号访问 EDAS 日志功能优化适用客户: EDAS 全体客户版本/规格功能: 1. Dubbo 服务治理。支持动态配置、权重调整、负载均衡、全局配置服务治理功能。
540 0
|
监控 Java Linux
【新功能邀请】Go版本云监控插件开始公测
云监控用Go语言重构了插件,且较目前的Java版本在资源消耗方面有很大节省。您可以根据需要,选择升级为Go版本插件。
18621 0