WindowsクライアントとWebAPIサーバーの簡易フレームワーク
- StarterKitをコピーする
- フォルダ名をStarterKitから任意のフォルダ名にリネームする
Tools/テーブルDTO生成ツール.bat
でDB(SQLServer/PostgeSQL/SQLite)からTableDTO・WebAPI用テストデータ作成クラスを自動生成するToolsソースコード生成ツール.bat
で画面IDを指定し、下記のファイルを自動生成する- クライアント
- フォームクラス(Designerファイル含む)
- Bussinessクラス(コンストラクタ)
- WebAPI
- Contorllerクラス(コンストラクタ)
- Transactionクラス(コンストラクタ)
- Repositoryクラス(コンストラクタ)
- WebAPITest
- Testクラス(コンストラクタ)
- クライアント
Toolsソースコード生成ツール.bat
で画面ID、機能ID(処理名)を指定し、下記のファイルを自動生成する- クライアント
- Bussinessクラス(機能IDメソッド)
- WebAPI
- Contorllerクラス(機能IDメソッド)
- Transactionクラス(機能IDメソッド)
- Repositoryクラス(機能IDメソッド)
- WebAPITest
- Testクラス(機能IDメソッド)
- DataTransferObjects
- Requestクラス(機能ID専用)
- Responseクラス(機能ID専用)
- クライアント
- TODOコメント部分の実装を行う
- フォームのイベントメソッドでBussinessインスタンス生成とメソッド呼び出しを実装する
※クライアントはダミーフォームSample
が設定されているため、初期表示したいフォームに切り替えること
- ダミーフォーム
Sample
を削除 Client/Program.cs
の初期化フォームの変更Application.Run(new Sample()); ↓ Application.Run(new 初期表示フォーム名());
- WindowForms
WindowsクライアントのUI部分
主な機能- 画面表示
- 入力受付・値の検証
- Bussinessのデータ問合せ処理・更新処理呼び出し
- Bussiness
Windowsクライアントのビジネスロジック部分
主な機能- WebAPIのデータ問合せ処理・更新処理呼び出し
- Controller
Windowsクライアントと通信するWebAPIのエンドポイント
主な機能- リクエストデータの検証
- Transaction生成
- 対象処理の呼び出し
- 呼び出し結果をWindowsクライアントに返す
- Transaction
DBトランザクション管理とRepositoryの処理呼び出し
主な機能- トランザクション管理
- Repositoryの処理呼び出し(複数呼び出し可)
- 結果をControllerに返す
- Repository
DB問合せ
主な機能- SQL実行
- 実行結果をTransactionに返す
WindowsクライアントとWebAPIサーバー両方で利用するデータ連携用。
- RequestDTO
リクエストデータ用
主な機能- 必須属性(RequiredAttribute)付きプロパティの必須入力検証
- ResponseDTO
レスポンスデータ用
主な機能- なし
- TableDTO
Transaction・Repository間のデータ連携用
1テーブル・1クラス
※TableDTOGeneratertツールにて自動生成 主な機能- なし
ROOT
│
├─Example
│
├─Source
│ │ Framework.sln
│ │
│ ├─Client
│ │ │ FrameworkClient.csproj
│ │ │
│ │ ├─BaseClasses
│ │ │ BussinessBase.cs
│ │ │
│ │ ├─ConnectLib
│ │ │ │ HttpConnectLib.cs
│ │ │ │
│ │ │ └─lib
│ │ │ Newtonsoft.Json.Compact.dll
│ │ │
│ │ └─Properties
│ │ AssemblyInfo.cs
│ │
│ ├─DataTransferObject
│ │ │ FrameworkDataTransferObject.csproj
│ │ │
│ │ └─BaseClasses
│ │ RequestBase.cs
│ │ ResponseBase.cs
│ │ TableBase.cs
│ ├─DataTransferObjectClient
│ │ FrameworkDataTransferObjectClient.csproj
│ │
│ └─WebAPI
│ │ FrameworkWebAPI.csproj
│ │
│ ├─BaseClasses
│ │ ControllerWithRepositoryBase.cs
│ │ RepositoryBase.cs
│ │ TransactionBase.cs
│ │
│ ├─ConfigModel
│ │ DatabaseConfigModel.cs
│ │
│ ├─DB
│ │ DatabaseFactory.cs
│ │ PostgeSQLDB.cs
│ │ SQLiteDB.cs
│ │ SQLServerDB.cs
│ │
│ └─Interfaces
│ IDatabase.cs
│ IRepositoryBase.cs
│
├─StarterKit
│ │ Client.sln
│ │ WebAPI.sln
│ │
│ ├─Client
│ │ │ App.config
│ │ │ Client.csproj
│ │ │ packages.config
│ │ │ Program.cs
│ │ │ Statics.cs
│ │ │
│ │ ├─BaseClasses
│ │ │ FormBase.cs
│ │ │ FormBase.Designer.cs
│ │ │
│ │ ├─Business
│ │ │
│ │ ├─Forms
│ │ │ Sample.cs
│ │ │ Sample.Designer.cs
│ │ │ Sample.resx
│ │ │
│ │ ├─Properties
│ │ │
│ │ └─UserControls
│ │
│ ├─DataTransferObjects
│ │ │ DataTransferObjects.csproj
│ │ │
│ │ ├─CustomTables
│ │ │
│ │ ├─Request
│ │ │
│ │ ├─Response
│ │ │
│ │ └─Tables
│ │ DummyTable.cs
│ │
│ ├─DataTransferObjectsClient
│ │ DataTransferObjectsClient.csproj
│ │
│ ├─FrameworkDlls
│ │ FrameworkClient.dll
│ │ FrameworkDataTransferObject.dll
│ │ FrameworkDataTransferObjectClient.dll
│ │ FrameworkWebAPI.dll
│ │ Newtonsoft.Json.Compact.dll
│ │
│ ├─Tools
│ │ │ .gitignore
│ │ │ ソースコード生成ツール.bat
│ │ │ テーブルDTO生成ツール.bat
│ │ │
│ │ └─bin
│ │ Npgsql.dll
│ │ SourceGenerater.exe
│ │ SQLite.Interop.dll
│ │ System.Data.SQLite.dll
│ │ System.Runtime.CompilerServices.Unsafe.dll
│ │ System.Threading.Tasks.Extensions.dll
│ │ System.ValueTuple.dll
│ │ TableDTOGenerater.exe
│ │
│ ├─WebAPI
│ │ │ appsettings.Development.json
│ │ │ appsettings.json
│ │ │ Program.cs
│ │ │ Startup.cs
│ │ │ swaggerIndex.html
│ │ │ WebAPI.csproj
│ │ │
│ │ ├─Controllers
│ │ │
│ │ ├─Repositories
│ │ │
│ │ ├─Resource
│ │ │
│ │ ├─Transactions
│ │ │
│ │ └─wwwroot
│ │ index.html
│ │
│ └─WebAPITest
│ │ WebAPITest.csproj
│ │
│ └─TestBase
│ TestSQLiteDB.cs
│
└─Tools
├─SourceGenerater
│ │ SourceGenerater.sln
│ │
│ └─SourceGenerater
│ │ App.config
│ │ MainForm.cs
│ │ MainForm.Designer.cs
│ │ MainForm.resx
│ │ Program.cs
│ │ RootFolder.txt
│ │ SourceGenerater.csproj
│ │
│ ├─GeneraterEngine
│ │ │ GenerateClient.cs
│ │ │
│ │ ├─Interfaces
│ │ │ IForm.cs
│ │ │ IMethod.cs
│ │ │ ITransformText.cs
│ │ │
│ │ └─Templates
│ │
│ └─Properties
│
└─TableDTOGenerater
│ TableDTOGenerater.sln
│
└─TableDTOGenerater
│ App.config
│ Form1.cs
│ Form1.Designer.cs
│ Form1.resx
│ packages.config
│ Program.cs
│ RootFolder.txt
│ TableDTOGenerater.csproj
│
├─Common
│ │ DatabaseData.cs
│ │
│ ├─ConfigModel
│ │ DatabaseConfigModel.cs
│ │
│ ├─DB
│ │ DatabaseFactory.cs
│ │ PostgeSQLDB.cs
│ │ SQLiteDB.cs
│ │ SQLServerDB.cs
│ │
│ └─Interfaces
│ IDatabase.cs
│ ITransformText.cs
│
├─Properties
│ AssemblyInfo.cs
│ Resources.Designer.cs
│ Resources.resx
│ Settings.Designer.cs
│ Settings.settings
│
└─Templates
ソリューション:Framework.sln
- Client
Windowsクライアント用フレームワークプロジェクト - DataTransferObject
DTO(Windowsクライアント・WebAPIサーバー共有)用フレームワークプロジェクト
WebAPI用 - DataTransferObjectClient
DTO(Windowsクライアント・WebAPIサーバー共有)用フレームワークプロジェクト
Windowsクライアント用(WebAPI用DTOのリンク設定) - WebAPI
WebAPIサーバー用フレームワークプロジェクト
本フレームワークを利用するためのテンプレート
- Client.sln
- WebAPI.sln
- BaseClassesフォルダ
- Formスーパークラス
フォーム全体のデザインを実装するためのスーパークラス
- Formスーパークラス
- Businessフォルダ
- ビジネスロジッククラス
- Formsフォルダ
- Formクラス
- UserControlsフォルダ
- ユーザーコントロール
- DataTransferObjectsプロジェクト
- CustomTablesフォルダ
- テーブル用DTO拡張クラス
※選択クエリの結果取得用
複数テーブルのJOINを表現
- テーブル用DTO拡張クラス
- Requestフォルダ
- Request用DTO
- Responseフォルダ
- Responset用DTO
- Tablesフォルダ
- テーブル用DTO
- CustomTablesフォルダ
- DataTransferObjectsClientプロジェクト
※DataTransferObjectsのファイル参照のみ
フレームワークのDLLファイル
開発支援ツール
- ソースコード生成ツール.bat
画面ID・機能IDからWindowsクライアント・DTO・WebAPIサーバーのスケルトンコードを自動生成するツール - テーブルDTO生成ツール.bat
データベースからDTO、WebAPIテスト用データ作成クラスを自動生成するツール
- Controllersフォルダ
- バージョン(例:v1)フォルダ
- コントローラークラス
- Transactionsフォルダ
- トランザクションクラス
- Repositoriesフォルダ
- リポジトリクラス
- TestBaseフォルダ
- TestSQLiteDB.cs
テスト時にメモリ上に展開するテスト用DBクラス
- TestSQLiteDB.cs
ソリューション:SourceGenerater.sln
- SourceGenerater/SourceGenerater
T4テンプレートで各クラスのスケルトンコードを生成
ソリューション:TableDTOGenerater.sln
- TableDTOGenerater/TableDTOGenerater
T4テンプレートでテーブルDTOクラス、WebAPI用テストのテストデータ作成クラスを生成