项目作者: jkazama

项目描述 :
ASP.NET Core + EF
高级语言: C#
项目地址: git://github.com/jkazama/sample-aspnet-api.git
创建时间: 2015-12-04T09:15:23Z
项目社区:https://github.com/jkazama/sample-aspnet-api

开源协议:

下载


sample-aspnet-api

はじめに

ASP.NET Core を元にしたアプリケーション開発サンプルです。

本サンプルは開発フレームワークというよりも、開発時の初期テンプレート的扱いで利用可能です。

本サンプルはAPI機能のみ有しています。
UI側の実装サンプルについてはsample-ui-vue / sample-ui-reactを参照してください。

レイヤリングの考え方

オーソドックスな三層モデルですが、横断的な解釈としてインフラ層を考えています。

レイヤ 特徴
UI ユースケース処理を公開(必要に応じてリモーティングや外部サイトを連携)
アプリケーション ユースケース処理を集約(外部リソースアクセスも含む)
ドメイン 純粋なドメイン処理(外部リソースに依存しない)
インフラ DI コンテナや ORM 、各種ライブラリ、メッセージリソースの提供

UI 層の公開処理は通常 Razor を用いて行いますが、本サンプルでは異なる種類のクライアント利用を想定して RESTfulAPI での API 提供のみをおこないます。(利用クライアントは別途用意する必要があります)

ASP.NET Core の利用方針

ASP.NET Core は様々な利用方法が可能ですが、本サンプルでは以下のポリシーで利用します。

  • 例外処理は基本上位委譲で終端 ( RestErrorFilter ) で捕捉定義
  • ORM 実装として EntityFramework を利用
  • 認証 / 認可は Identity を想定 (現在は未使用)

TBD

C#コーディング方針

TBD

パッケージ構成

パッケージ/リソース構成については以下を参照してください。

  1. Sample
  2. Context インフラ層
  3. Controllers UI
  4. Models ドメイン層
  5. Usecases アプリケーション層
  6. Utils 汎用ユーティリティ
  7. - config.json プロジェクト設定情報
  8. - project.json プロジェクト構成定義
  9. - DependencyInjection.cs DI定義
  10. - Program.cs 実行可能な起動クラス
  11. - Startup.cs 起動構成定義クラス
  12. Sample.Tests テストプロジェクト

サンプルユースケース

サンプルユースケースとしては以下のようなシンプルな流れを想定します。

  • 口座残高100万円を持つ顧客が出金依頼(発生 T, 受渡 T + 3)をする。
  • システムが営業日を進める。
  • システムが出金依頼を確定する。(確定させるまでは依頼取消行為を許容)
  • システムが受渡日を迎えた入出金キャッシュフローを口座残高へ反映する。

環境構築手順

サンプルなので、DB は SQLite を利用したファイルベースにしています。実際の開発用途では SQLServer などに変更してください。

Windows での環境構築手順

開発時は最新の Visual Studio を入れてしまうのが簡単でオススメです。過去バージョン等でインポートが難しいようであれば Visual Studio Code を利用してください。

https://www.microsoft.com/net/core#windows

環境構築後に sample-aspnet-api.sln をダブルクリックで Visual Studio からアプリケーションを実行できます。

Mac での環境構築手順

開発時は Visual Studio Code を入れてしまうのが良いですが、Mac 上での実行確認だけならコンソールベースで十分です。

https://www.microsoft.com/net/core#macos

動作確認手順は以下を参考にしてください。

  • 環境構築後に Sample 直下へ移動する
  • export ASPNETCORE_ENVIRONMENT=Development で起動変数を開発モードに
    • Startup.cs を見れば分かるようにファイル DB 構築と CORS 設定を有効にしています
  • dotnet run を実行してアプリケーションを起動

※テスト確認したいなら Sample.Test 直下へ移動して、 dotnet test を実行してください。

補足解説(インフラ層)

認証 / 認可

ASP.NET Core ベースの Identity 実装がまだ完全に消化できていないので一旦コメントアウト

国際化

Resources 配下のクラスを利用。

残作業

  • Identity を利用した認証/認可のサポート
  • Repository絡みで起こるであろうリソースリークを想定してライフサイクルでの正確な挙動を調べる
  • 非同期系の考慮 (async / await 適用すべき箇所をまだあまり調べられてない)
  • キャッシングの追加
  • ロギング周りの最適化