.NET Core WebApi

RESTful规范

接口版本控制

  • Support multiple versions of ASP.NET Core Web API
  • ASP.NET Core API 版本控制
  • 配置使用流程
    • 使用方法

      • Startup类ConfigureServices方法中加入services.AddApiVersioning()
      • Startup类Configure方法中加入app.UseApiVersioning()
      • 控制器或接口上面应用添加ApiVersion("1.0")特性。
    • 访问形式
      • 通过查询字符串方式实现访问,具体格式:api/values?api-version=1.0
      • 通过重写接口路由方式实现访问,路由修改为:[Route("api/v{version:apiVersion}/[controller]")];具体格式:api/v1/values
      • 通过Header指定字段实现访问。

Swagger

跨域策略

依赖注入

数据库

事务特性
  • 持久性:事务一旦被提交,那么数据一定会被写入到数据库中并持久储存起来。
  • 原子性:每个事务可能由多个操作构成,但把事务本身看作操作的最小单位,一个事务中的操作不可能同时存在成功和失败两种状态,要么全部成功,否则恢复到事务执行之前状态。
    • Active 事务的初始状态,表示正在执行。
    • Partially Commited 部分执行,或者说在最后一条语句执行后。
    • Failed 发现操作异常,事务无法继续执行后。
    • Commited 成功执行整个事务。
    • Aborted 事务被回滚,数据库恢复到执行前状态后。
  • 一致性:事务执行前后数据都满足数据完整性约束,完整性约束可能包括主键约束、外键约束、用户自定义约束。事务内部操作执行过程中可能不满足完整性约束,但一致性强调事务执行前后是否满足,忽略中间过程。
  • 隔离性:一个事务所做的修改对其他事务不可见。
事务隔离级别
  • 读未提交READ UNCOMMITTED 事务中数据更改未提交也对其他事务可见。

    • 脏读
    • 不可重复读
    • 幻读
    • 更新丢失
  • 读已提交READ COMMITTED 事务中数据更改已提交对其他事务可见。
    • 不可重复读
    • 幻读
    • 更新丢失
  • 可重复读REPEATABLE READ 事务中数据更改已提交对正在执行的事务不可见。
    • 幻读
    • 更新丢失
  • 串行化SERIALIZABLE 强制所有事务串行执行。
    读已提交与可重复读区别:正在执行的事务是否可见其他事务提交的数据更改,读已提交可见,可重复读不可见。
    SqlServer默认事务隔离级别为读已提交;MySql默认事务隔离级别为可重复读
隔离特性导致问题
  • 脏读:当前事务中读取到其他事务已修改未提交的数据,违反隔离性。
  • 不可重复读:当前事务中读取到其他事务已修改已提交的数据,违反一致性。
  • 幻读:因数据插入导致一个事务中读取查询获取结果不一致现象。
    • MVCC
    • Next-Key Lock
  • 更新丢失:并发事务对同一条记录进行更新,出现后一次修改覆盖前一次修改情况。
    • MVCC
    • Record Lock

锁机制

两段锁协议(2PL)
  • 在对任何数据进行读、写操作之前,首先要申请并获得对该数据的封锁。
  • 在释放一个封锁之后,事务不再申请和获得其它任何封锁。
悲观锁机制

先取锁再访问

  • 共享锁(Share Locks,S锁):一个线程给数据加上共享锁后,其他线程只能读取数据,不能修改。
  • 排它锁(eXclusive Locks,X锁):一个线程给数据加上排它锁后,其他线程不能读取也不能修改。
  • 意向锁 (Intent Locks):在指定资源上获取锁时,先在上一层次结构上获取意向锁。主要作用是:当需要获取表锁或者页锁时,只需要判断是否存在表意向锁或者页意向锁就可以快速。
    兼容性规则为:共享锁和共享锁兼容,排它锁和其他的锁都排斥。
乐观锁机制
  • 假设多并发的事务不会互相影响,各事务能够在不产生锁的情况下处理各自影响的那部分数据。
  • 在提交数据更新之前,每个事务会先检查在该事务读取数据后,有没有其他事务又修改了该数据。如果其他事务有更新的话,正在提交的事务会进行回滚。

索引

聚簇索引与非聚簇索引(也叫二级索引)

索引分类
  • 存储结构区分

    • 聚集索引
    • 非聚集索引
  • 数据唯一性区分
    • 唯一索引
    • 主键索引

编码格式及类型

char、varchar、text、nchar、nvarchar、ntext的区别?
  • char(n):定长;索引效率高;n 必须是一个介于 1 和 8,000 之间的数值,存储大小为 n 个字节。
  • varchar(n): 变长;索引效率低于char(n),灵活;n 必须是一个介于 1 和 8,000 之间的数值,存储大小为输入数据的字节的实际长度。varchar类型的实际长度是它的值的实际长度+1。为什么“+1”呢?这一个字节用于保存实际使用了多大的长度。
  • text(n):变长;非Unicode数据;不用指定长度。最大长度为2^31-1(2,147,483,647)个字符。
  • nchar(n):定长;处理unicode数据类型;n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。
  • nvarchar(n):变长;处理unicode数据类型;n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。
  • ntext(n):变长;处理unicode数据类型;不用指定长度。
    一般来说,如果含有中文字符,用nchar/nvarchar,如果纯英文和数字,用char/varchar。

asp.net core learn的更多相关文章

  1. [转]An introduction to OAuth 2.0 using Facebook in ASP.NET Core

    本文转自:http://andrewlock.net/an-introduction-to-oauth-2-using-facebook-in-asp-net-core/ This is the ne ...

  2. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 读取关系数据

    Reading related data¶ 9 of 9 people found this helpful The Contoso University sample web application ...

  3. ASP.NET Core身份识别

    Introduction to Identity 66 of 93 people found this helpful By Pranav Rastogi, Rick Anderson, Tom Dy ...

  4. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 创建复杂数据模型

    Creating a complex data model 创建复杂数据模型 8 of 9 people found this helpful The Contoso University sampl ...

  5. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 排序、筛选、分页以及分组

    Sorting, filtering, paging, and grouping 7 of 8 people found this helpful By Tom Dykstra The Contoso ...

  6. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 增、查、改、删操作

    Create, Read, Update, and Delete operations¶ 5 of 5 people found this helpful By Tom Dykstra The Con ...

  7. Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程

    原文地址:https://docs.asp.net/en/latest/data/ef-mvc/intro.html The Contoso University sample web applica ...

  8. [转]Publishing and Running ASP.NET Core Applications with IIS

    本文转自:https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications- ...

  9. 【翻译】使用Visual Studio创建Asp.Net Core MVC (一)

    This tutorial will teach you the basics of building an ASP.NET Core MVC web app using Visual Studio ...

随机推荐

  1. VS2017 之 MYSQL实体数据模

    Photon Server 和 Unity3D 数据交互: Photon Server 服务端编程 Unity3D 客户端编程 VS2017 之 MYSQL实体数据模 一.新建数据库连接后,点击下一步 ...

  2. 2015 JSOI冬令营训练 彩色格子 题解

    解析 棋盘上黑白格染色.曼哈顿距离偶数:奇偶性相同. 枚举有几种颜色分到白格,组合数计算即可. 注意预处理,时间还是比较宽裕的. 为了不重复计数,考虑枚举严格用了i种颜色,我们再枚举分配j种给白集合. ...

  3. 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(3)-项目依赖注入

    简介 依赖注入主要是一种结构性的模式,注重的是类与类之间的结构,它要达到的目的就是设计原则中最少知道和合成复用的原则,减少内部依赖,履行单一职责,最终就是强解耦.依赖注入目前最好的实现就是依赖注入容器 ...

  4. 【Ehcache】基础知识学习

    一.Ehcache概述 1.1 简介 1.2 Ehcache的主要特性 二.Ehcache使用介绍 2.1 Ehcache缓存过期策略 2.2 如何解决缓存与db不同步的问题. 三.Ehcache 基 ...

  5. MongoDB的入门使用以及遇到的坑

    一:MonoDB的简单介绍 MongoDB是一个介于关系型数据库与非关系型数据库中间的数据库,是使用C++进行编写的,他的优点是在支持的查询格式特别的强大,可以进行存储比较复杂的数据类型,支持建立索引 ...

  6. SpannableString设置文本背景色

    参考内容: http://blog.csdn.net/harvic880925/article/details/38984705 http://blog.it985.com/14433.html 1. ...

  7. mapper 传多个参数

    Mybatis的Mapper接口的参数,一般是一个对象,但如果不是对象,并且有多个参数的时候呢?我们第一个的想法是把参数封装成一个java.util.Map类型,然后在方法的注释上面写上map的key ...

  8. 【PTA】浙江大学数据结构慕课 课后编程作业 03-树1 树的同构

    题目内容 给定两棵树T1和T2.如果T1可以通过若干次左右孩子互换就变成T2,则我们称两棵树是"同构"的.例如图1给出的两棵树就是同构的,因为我们把其中一棵树的结点A.B.G的左右 ...

  9. Pytorch的基础数据类型

    引言 本篇介绍Pytorch的基础数据类型,判断方式以及常用向量 基础数据类型 torch.Tensor是一种包含单一数据类型元素的多维矩阵. 目前在1.2版本中有9种类型. 同python相比,py ...

  10. 品Spring:实现bean定义时采用的“先进生产力”

    前景回顾 当我们把写好的业务代码交给Spring之后,Spring都会做些什么呢? 仔细想象一下,再稍微抽象一下,Spring所做的几乎全部都是: “bean的实例化,bean的依赖装配,bean的初 ...