.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. 漫谈JavaScript中的提升机制(Hoisting)

    前言 刚接触到JavaScript的时候,便知道JavaScript是按顺序执行的,是如浏览器的解析DOM树一样的流程,解析DOM结构的时候,如果遇到JS脚本或者外联脚本便会停止解析,继续下载脚本之后 ...

  2. c++拷贝构造函数引用传参

    看一道C++面试题: 给出下述代码,分析编译运行的结果,并提供3个选项: A.编译错误  B.编译成功,运行时程序崩溃  C.编译运行正常,输出10 class A { private: int va ...

  3. 题解 洛谷P1071【潜伏者】

    题目链接:https://www.luogu.org/problem/P1071 题意概括:给你一段原来截获的英文密码和与之对应的明文,如果密码表非F♂A法,输出"Failed"  ...

  4. 【LeetCode】78-子集

    题目描述 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [ ...

  5. Cloudera版本的hadoop环境准备

    对于普通学习用户而言,应该先下载一个虚拟机, 推荐vmware,因为是免费的. Hadoop环境有三个版本: Apache版本(Apache基金会) CDH(cloudera公司) hdp版本(Hor ...

  6. 玩转 SpringBoot 2 快速整合 | FreeMarker篇

    FreeMarker 介绍 Apache FreeMarker™是一个模板引擎:一个Java库,用于根据模板和更改数据生成文本输出(HTML网页,电子邮件,配置文件,源代码等).模板是用FreeMar ...

  7. FreeSql (十六)分页查询

    IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, "Data ...

  8. eclipse搭建springmvc

    https://www.cnblogs.com/qixing/p/qixing.html

  9. [大数据学习研究] 4. Zookeeper-分布式服务的协同管理神器

    本来这一节想写Hadoop的分布式高可用环境的搭建,写到一半,发现还是有必要先介绍一下ZooKeeper这个东西. ZooKeeper理念介绍 ZooKeeper是为分布式应用来提供协同服务的,而且Z ...

  10. ExpandableListView之BaseExpandableListAdapter

    之前使用的SimpleExpandableListAdapter有较大局限性,样式单一,修改难度大,这里不建议使用,而是利用BaseExpandableListAdapter,其实SimpleExpa ...