asp.net core learn

4748 ワード

.NET Core WebApi


RESTful仕様

  • RESTful APIベストプラクティス
  • 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

  • .NetCore WebApi-Swaggerバージョン管理
  • .NetCore WebApi-Swagger単純構成
  • ドメイン間ポリシー


    依存注入

  • ASP.NET Core依存注入持参のIOC容器
  • を使用
  • ASP.NET CoreはAutofacを用いてIOC注入
  • を実現
  • ASP.NET CoreはAutofacを使用してAOPブロック
  • を実現

    データベース#データベース#

  • MySQL InnoDBロックメカニズム全面解析共有
  • トランザクションのプロパティ
  • 永続性:トランザクションがコミットされると、データは必ずデータベースに書き込まれ、永続的に保存されます.
  • 原子性:各トランザクションは複数のオペレーションで構成される可能性がありますが、トランザクション自体をオペレーションの最小単位と見なし、1つのトランザクションのオペレーションに成功と失敗の2つのステータスが同時に存在する可能性はありません.または、すべて成功します.そうしないと、トランザクションが実行される前のステータスに戻ります.
  • Activeトランザクションの初期状態は、実行中であることを示します.
  • Partially Commitedセクション、または最後の文の実行後.
  • Failedは操作異常を発見し、トランザクションが実行できなくなった後.
  • Commitedはトランザクション全体を正常に実行しました.
  • Abortedトランザクションはロールバックされ、データベースは実行前の状態に戻ります.

  • コンシステンシ:トランザクションの実行前後のデータは、プライマリ・キー制約、外部キー制約、ユーザー定義制約を含むデータ整合性制約を満たします.トランザクションの内部操作の実行中に整合性制約が満たされない場合がありますが、一貫性はトランザクションの実行前後が満たされているかどうかを強調し、中間プロセスを無視します.
  • 独立性:ある事務所が行った修正は他の事務には表示されません.

  • トランザクション独立性レベル
  • 未コミットREAD UNCOMMITTEDトランザクションのデータ変更未コミットも他のトランザクションに表示されます.
  • 汚読
  • 再読不可
  • 幻読
  • 更新損失
  • は、コミットされたREAD COMMITTEDトランザクションのデータ変更がコミットされたことを読み取り、他のトランザクションに表示されます.
  • 再読不可
  • 幻読
  • 更新損失
  • は、実行中のトランザクションに対して送信されたデータの変更を、REPEATABLE READトランザクションで繰り返し読むことができます.
  • 幻読
  • 更新損失
  • シリアル化SERIALIZABLEは、すべてのトランザクションのシリアル実行を強制します.読み取りコミットと繰返し可能の違い:実行中のトランザクションに他のトランザクションがコミットしたデータの変更が表示されているかどうか、読み取りコミットが表示されているかどうか、読み取り不可が表示されます.SqlServerのデフォルトのトランザクション独立性レベルは です.MySqlのデフォルトのトランザクション独立性レベルは です.

  • 分離特性が問題を引き起こす
  • ダーティ・リード:現在のトランザクションで他のトランザクションがコミットされていないデータが変更され、独立性に違反しています.
  • 繰り返し不可:現在のトランザクションから他のトランザクションに読み込まれ、コミットされたデータが変更され、コンシステンシに違反します.
  • 幻読み:データ挿入により、トランザクション内の読み込みクエリの取得結果が一致しない現象.
  • MVCC
  • Next-Key Lock

  • 更新が失われました:同時トランザクションは同じレコードを更新し、前回の変更を上書きした後の変更が発生しました.
  • MVCC
  • Record Lock


  • ロックメカニズム


    二段ロックプロトコル(2 PL)
  • は、任意のデータを読み取り、書き込みする前に、まず、データのブラックアウトを申請し、取得する.
  • ブラックアウトが解放された後、トランザクションは他のブラックアウトを申請し、取得しません.

  • 悲観ロックメカニズム
  • 共有ロック(Share Locks,Sロック):1つのスレッドがデータに共有ロックを加えた後、他のスレッドはデータを読み取るしかなく、変更できません.
  • 排他ロック(eXclusive Locks,Xロック):1つのスレッドがデータに排他ロックを加えた後、他のスレッドは読み取りも修正もできません.
  • 意向ロック(Intent Locks):指定されたリソースでロックを取得する場合は、まず前の階層で意向ロックを取得します.主な役割は、表ロックまたはページロックを取得する必要がある場合、表意方向ロックまたはページ意向ロックがあるかどうかを判断するだけで迅速です.互換性ルールは、共有ロックと共有ロックが互換性があり、排他的なロックと他のロックが反発します.

  • 楽観的ロックメカニズム
  • は、複数の同時トランザクションが互いに影響を及ぼさないと仮定し、各トランザクションは、ロックを生成せずにそれぞれの影響を及ぼすデータの一部を処理することができる.
  • データ更新をコミットする前に、各トランザクションは、トランザクションがデータを読み出した後、他のトランザクションがデータを変更したかどうかを確認します.他のトランザクションが更新された場合、コミット中のトランザクションはロールバックされます.

  • 索引


    クラスタインデックスと非クラスタインデックス(二次インデックスとも呼ばれる)
    インデックス分類
  • ストレージ構造区分
  • 集計インデックス
  • 非集約インデックス
  • データ一意性区分
  • ユニークインデックス
  • プライマリ・キー・インデックス

  • コーディングフォーマットおよびタイプ


    char、varchar、text、nchar、nvarchar、ntextの違いは?
  • char(n):定長;インデックス効率が高い;nは、nバイトのサイズを格納する1〜8000の数値でなければならない.
  • varchar(n):長くなる;インデックス効率はchar(n)より低く、柔軟である.nは、入力データのバイトの実際の長さを格納する1〜8000の数値でなければならない.varcharタイプの実際の長さは、その値の実際の長さ+1です.なぜ「+1」なのか.このバイトは、実際に使用された長さを保存するために使用されます.
  • text(n):長くなる;非Unicodeデータ;長さを指定する必要はありません.最大長さは2^31-1(2147483647)文字です.
  • nchar(n):定長;unicodeデータ型の処理;nの値は1〜4000でなければならない.ストレージサイズはnバイトの2倍です.
  • nvarchar(n):長くなる;unicodeデータ型の処理;nの値は1〜4000でなければならない.バイトのストレージサイズは、入力した文字数の2倍です.入力されたデータ文字の長さはゼロでもよい.
  • ntext(n):長くなる;unicodeデータ型の処理;長さを指定する必要はありません.一般的に、中国語の文字が含まれている場合はnchar/nvarchar、純粋な英語と数字であればchar/varcharを使います.