ZKWeb网页框架2.0正式发布

2.0.0更新的内容有

  • 更新框架要求
    • 框架要求从 netstandard 1.6 升到 netstandard 2.0
    • 框架要求从 netcoreapp1.1 升到 netcoreapp2.0
  • 更新引用类库
    • Microsoft.AspNetCore.Hosting.Abstractions 2.0.0
    • Microsoft.AspNetCore.Http.Abstractions 2.0.0
    • Microsoft.Extensions.DependencyInjection 2.0.0
    • Microsoft.Extensions.DependencyInjection.Abstractions 2.0.0
    • Microsoft.Extensions.DependencyModel 2.0.0
    • Microsoft.Data.Sqlite 2.0.0
    • Npgsql 3.2.5
    • Microsoft.EntityFrameworkCore 2.0.0
    • Microsoft.EntityFrameworkCore.Design 2.0.0
    • Microsoft.EntityFrameworkCore.InMemory 2.0.0
    • Microsoft.EntityFrameworkCore.Sqlite 2.0.0
    • Microsoft.EntityFrameworkCore.SqlServer 2.0.0
    • Npgsql.EntityFrameworkCore.PostgreSQL 2.0.0
    • Pomelo.EntityFrameworkCore.MySql 2.0.0
    • MongoDB.Driver 2.4.4
    • ZKWeb.Repack.SQLite 1.0.104
    • Microsoft.CSharp 4.4.0
    • Microsoft.CodeAnalysis.CSharp 2.3.0
    • Newtonsoft.Json 10.0.3
    • ZKWeb.Fork.DotLiquid 2.3.0
    • ZKWeb.Fork.FastReflection 2.3.0
    • Dommel 1.9.0
    • Dapper.FluentMap 1.6.0
    • Dapper.FluentMap.Dommel 1.5.0
    • 删除NSubstitute
  • 改进IoC容器
    • 支持区域(Scoped)重用
    • 支持注册开放泛型(注册Implement<>Service<>)
    • 支持从IServiceCollection注册服务
    • 提供IServiceProvider接口
    • 改变选择构造函数的规则
      • 首先, 使用标记了[Inject]的构造函数
      • 然后, 使用唯一的公开的构造函数
      • 最后, 使用IMultiConstructorResolver在运行时解决, 如果解决失败则抛出异常
    • 改变注入构造函数的规则
      • 支持注入Func<T>
      • 支持注入Lazy<T>
      • 支持注入List<T>, ICollection<T>, IEnumerable<T>
      • 支持注入Lazy<List<T>>, Func<List<T>> 等等
      • 如果参数有默认值, 则解决失败时使用默认值, 否则解决失败时抛出异常
  • 在Asp.Net Core项目中默认使用ZKWeb的IoC容器替换默认的IServiceProvider
    • 目前Asp.Net Core和ZKWeb注册的服务已可以共通互联
  • 改进控制器和路由
    • 遵从控制器注册时使用的重用规则, 在之前的版本控制器会是单例
    • 支持手动重载请求参数, 设置Request.CustomParameters可以影响获取当前请求参数的值
    • 支持Url参数, 例如[Action("get/{id}")]
  • 改进ORM
    • 支持在构建数据库上下文时手动传入实体类型列表, 在一个项目使用多个数据库上下文时可以用到
    • 添加EFCoreDatabaseContextPool, 改进EFCore数据库上下文的创建性能
    • 在NHibernate保存实体失败时取消对该实体的跟踪, 防止影响后面的保存

本次更新要求.Net Standard 2.0, 旧版本的项目需要先修改框架目标再使用nuget升级.
本次更新删除了NSubstitute的引用, 如果原有插件有使用NSubstitute请手动安装到web项目.

因为NHibernate官方尚未发布.Net Core版本, 这一个版本的NHibernate仍然只能用在.Net Framework上, 下个版本会争取让使用NHibernate的代码支持.Net Core.

此外, ZKWeb 2.0重写了文档, 新的文档可以在以下地址查看:

http://zkweb-framework.github.io

上一篇:windows环境下配置tornado


下一篇:根据数据库的表生成项目,项目变为hibernate项目(实际开发中常用)