Skip to content

Maris OSS版のアプリケーションアーキテクチャCSR編(フロントエンドアーキテクチャ本編)を作成する #7

@tsuna-can-se

Description

@tsuna-can-se

目次案

Maris OSS版のアプリケーションアーキテクチャ クライアントサイドレンダリング編

  • アプリケーションスタック

    - 概要編で挙げた図を詳細化して解説。
    - .NET系ライブラリ、Web系ライブラリ、という書き方ではなく、実際にサンプルAPに組み込むものを具体的に書く。
      - 設定だけでは使えない物は詳しく説明が欲しい。
    - Vue.js側も対象に含める。
    - この図が欲しい。 <https://terasolunaorg.github.io/guideline/5.7.0.RELEASE/ja/Overview/FrameworkStack.html#software-framework>
    
  • アプリケーション論理構成

    • アプリケーションアーキテクチャ
      - クリーンアーキテクチャ、レイヤードアーキテクチャ、DDDの知識は前提にしてよい(リンク先だけ提示)
      
    • レイヤー構造
    • コンポーネント構造(このへんは前段の節でまとめてかけそうなら無理に分割しなくて良い)
  • 推奨ディレクトリ/パッケージ構成

    - Maris OSS版の推奨構成(Mono-repo版)として、当部の研究結果をここに書き表す
    - Multi-repoとする場合はどこをどう分けると良いか示す。詳しい解説はしない。
    
  • 機能詳細 サーバーサイド

    • 各層で実装する機能の詳細
      流れと該当クラス群をこんな感じに明示する
      http://terasolunaorg.github.io/guideline/current/ja/ArchitectureInDetail/WebServiceDetail/REST.html
      各層の定義に沿って実装寄りの決まり事を書く
      - ドメイン層(アプリケーションコア層)
        - DomainObject 
        - ApplicationServiceクラス
        - IRepositoryクラス
      - プレゼンテーション層
        - Dto (Requestクラス&Responceクラス)
        - Controllerクラス
        - Mapperクラス (DomainObject⇔Dtoを行う)
      - インフラストラクチャ層
        - O/R Mapper (Entity Framework)
        - Repositoryクラス
      
  • 機能詳細 クライアントサイド

    • クライアントサイドの概要編があったほうがいいのではないか(Maiaと共通な部分として)MVVMアーキテクチャの説明はここ?

    • アプリケーション方式設計書を基に作成する。下のようなアーキテクチャ図とそれぞれに利用するライブラリ等の説明
      image

      - View層 
        - ブラウザのレンダリング
        - イベントの待ち受け
      - ViewModel層
        - 入力チェックやデータ取得
        - モデルの呼び出し
      - Model層
      - router
      - 共通部品
      
  • Web API設計

    • ボディはJSON形式にすること
    • RESTアーキテクチャスタイルにできる限り準拠する
    • レスポンス形式(正常、エラー)、HTTPステータスコードなどの最低限の標準化
  • テスト方式

    • (自動化を前提として)何を使うか
    • どうやってテストするか
    • 具体的な技術の話に踏み込む
    • 「アプリケーションテスト」としてまとめるテストの全体像に関する部分や概念的な話はあまり踏み込まない
    • 初版は機能系のテストと、コード分析系の静的テストに関するところを重点的に書きたい

    以下議論中に出てきた内容。

    - APのどの部分を対象にどうやってテストするか
    - テストレベルをどう定義するか
    - ある程度一般的な内容で
    - 基本方針として、機能面のテストは可能な限りxUnitに寄せる。
    - Moqを活用してxUnit上でできる限りテストを行う。
    - Seleniumなどを使った打鍵テストは負荷テストなどの非機能要件に絞る。
    - 非機能テストのノウハウを可能な限り盛り込む。
    - Vue.js側のテストも盛り込む。ベストプラクティスがありそうだし。Jestとか使うのだろう。
    

Metadata

Metadata

Assignees

Labels

target: アーキテクチャ/CSRドキュメントのアプリケーションアーキテクチャ/クライアントサイドレンダリングに関係がある

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions