.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. springboot统一ajax返回数据格式,并且jquery ajax success函数修改

    服务端代码: package com.zhqn.sc.cfg; import org.springframework.core.MethodParameter; import org.springfr ...

  2. C语言实现二级指针表示字符串数组

    头文件: #include<stdlib.h> #include<stdio.h> #include<string.h> 函数原型: char ** createB ...

  3. Spring源码分析之-加载IOC容器

    本文接上一篇文章 SpringIOC 源码,控制反转前的处理(https://mp.weixin.qq.com/s/9RbVP2ZQVx9-vKngqndW1w) 继续进行下面的分析 首先贴出 Spr ...

  4. spring cloud config使用mysql存储配置文件

    spring cloud config使用mysql存储配置文件 1.结构图 2.pom.xml: <?xml version="1.0" encoding="UT ...

  5. webview与webApp页面交互传参

    参考网址:https://blog.csdn.net/books1958/article/details/44747045 上一篇说了Android集成极光推送获取了RegistrationId推送标 ...

  6. Java 创建/识别条形码、二维码

    条形码(Barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.常用于标示物品的生产国.制造厂家.商品名称.生产日期.图书分类号.邮件起止地点.类别.日期等 ...

  7. Linux下Mysql启动异常排查方案

    遇到Mysql启动异常问题,可以从以下几个方面依次进行问题排查: (1)如果遇到“Can't connect to local MySQL server through socket '/tmp/my ...

  8. 玩转 SpringBoot 2 快速整合 | Thymeleaf 篇

    前言 Thymeleaf是一个适用于Web和独立环境的现代服务器端Java模板引擎. Thymeleaf的主要目标是为您的开发工作流程带来优雅的自然模板 - 可以在浏览器中正确显示的HTML,也可以用 ...

  9. android 和h5互调步骤

    1. Android 中调用JS 假如:H5页面中有一段如下JS代码 function h5Test(str){ xxxx... xxxx... } Android中调用方式如下: 步骤一: 启动支持 ...

  10. apache ignite系列(五):分布式计算

    ignite分布式计算 在ignite中,有传统的MapReduce模型的分布式计算,也有基于分布式存储的并置计算,当数据分散到不同的节点上时,根据提供的并置键,计算会传播到数据所在的节点进行计算,再 ...