Contenu connexe
Similaire à Open棟梁機能紹介 v02-00 (20)
Plus de Daisuke Nishino (17)
Open棟梁機能紹介 v02-00
- 4. 3
1.1. 各レイヤの機能
層 機能
共
通
基本処理のフロー制御 (カスタマイズ可能)
開始終了処理、例外処理(ログ出力、性能測定.etc)
P
層
Visual Studioのデザイナの操作性をスポイルしない造り。
ユーザ操作の記録 (カスタマイズ可能)
サポート対象のコントロール・イベント単位で記録可能
画面遷移制御、セッション管理
不正操作防止、二重送信防止
カスタム・コントロール
WebFormとWindowsFormsに対応
入力チェック機能、文字列編集、Grid内表示
B
層
DBコネクション & トランザクション管理 (カスタマイズ可能)
ヒューマン・ワークフロー機能
D
層
MyBatisライクなデータアクセス・ライブラリ
動的パラメタライズド・クエリ
動的パラメタライズド・クエリ定義・検証ツール
バッチ処理用SQL生成部品.etc
- 5. 4
1.2. 部品、ツール
区分 機能
共
通
ラ
イ
ブ
ラ
リ
群
ログ出力、共有情報・メッセージ管理
文字列編集、入力チェック機能
非同期イベント制御、共有メモリ管理
国際化対応
ローカル時刻 ⇔ UTC変換、
各種メッセージリソースのCultureInfo対応
通信制御機能
各種プロトコルを用いたサーバ間のリモート処理機構を提供。
これによりオンプレやクラウドを含む多彩なシステム構成に対応可能。
自
動
生
成
ツ
ー
ル
テーブルCRUDのD層自動生成ツール
テーブル定義からテーブルCRUDのDao、SQLを自動生成する。
テーブル・メンテナンス画面の自動生成ツール
テーブル定義からテーブル・メンテナンス画面を自動生成する。
データ・メンテナンス画面の自動生成ツール
任意のSQLからデータ・メンテナンス画面を自動生成する。
See : 機能一覧 - Open 棟梁 Wiki
https://opentouryo.osscons.jp/index.php?%E6%A9%9F%E8%83%BD%E4%B8%80%E8%A6%A7
- 7. 6
2.1. 通信制御機能
• 通信処理を隠蔽、開発者は業務ロジックの実装に専念できる。
• 多様化著しい、Front-endにビジネス・ロジックを公開できる。
Open棟梁の通信制御機能により、
さまざまなアーキテクチャに、容易に対応できます。
.NET リッチクライアント
クライアント・プリンタ印刷
WWWブラウザ
PDFダウンロード + 印刷
HTML
WebAPI
(バイナリ転送)
WebAPI
(REST)
BusinessLogic層
ベースクラス1
サブクラス
DataAccess層
ベースクラス1
サブクラス
ベースクラス2
ベースクラス2
通信制御機能
.NET サービスインターフェイス
バイナリ・オブジェクト転送
汎用サービスインターフェイス
SOAP, REST (JSON, XML)
ASP.NET WS, WCF
バイナリ・オブジェクト転送
Presentation層 : ASP .NET
Web Form or MVC
様々なスマート・デバイス
ASP.NET WS, WCF, Web API
SOAP, REST (JSON, XML)
- 9. 8
クライアント アプリ サーバ アプリ
Webサービス
インプロセス
Webサービス
インプロセス
F/W超えも可能
Webサービス化
配置先の変更
サービス ゲートウェイ
/インターフェイス部品
インプロセス
B/D層
• 位置透過性
定義によるインプロセス
/NW経由呼出の切替、呼出
先WASの変更を実現
• 規模透過性
スケールアウト(垂直、水平
分散)を実現
• 異種透過性
.NET以外の異種開発技術
との連携も可能
2.3. 通信制御機能 - スケーラビリティに優れる
- 15. 14
'************************************************************************************
'* SQL文作成
'************************************************************************************
str_Sql = "SELECT COUNT(DISTINCT xxxxx) AS xxxxx FROM xxxxx"
If intXXXXX = 0 Then
str_Work = " WHERE xxxxx = " & strXXXXX & " AND xxxxx LIKE '" & strXXXXX & "%'"
ElseIf intXXXXX = 2 Then
str_Work = " WHERE xxxxx = " & strXXXXX & " AND xxxxx = '" & strXXXXX & "'"
ElseIf intXXXXX = 3 Then
str_Work = " WHERE xxxxx = " & strXXXXX & " AND xxxxx = '" & strXXXXX & "'" & _
" AND xxxxx IN (SELECT xxxxx FROM xxxxx WHERE xxxxx = " & strXXXXX & ")"
Else
str_Work = " WHERE xxxxx = " & strXXXXX & " AND xxxxx LIKE '" & strXXXXX & "%'" & _
" AND xxxxx IN (SELECT xxxxx FROM xxxxx WHERE xxxxx = " & strXXXXX & ")"
End If
プログラム
今までは、動的SQLを処理するプログラム中に文字列、
文字列連結、それに伴うIF文が散在していました。
文字列
このような処理が散在するのは、
動的SQLの処理の実装は、
・ WHERE、 JOIN句の付与・削除
・ AND、OR演算子の付与・削除
・ IN句のパラメタを条件数に合わせ用意
など、制御が複雑なためです。
また、変数値を直接SQLに組み込む方法は、
脆弱性の問題を潜在的に内包しています。
DBMS
4.1. 動的パラメタライズド・クエリ(AS-IS)
文字列連結IF文
- 18. 17
4.4. ヒューマン・ワークフロー機能
WF (Windows Workflow Foundation) を使用しない理由:
ヒューマン・ワークフローというカテゴリが無い(シーケンシャル・ワークフローとス
テートマシン・ワークフローのみ)。ステートマシン・ワークフローはステータス管理
のみで業務ワークフローに適用するには機能が乏しい。
DBMS(ステータス・履歴管理)
ワークフロー ワークフロー定義
ワークフロー・シミュレータ
• 複雑なヒューマン・ワークフローを定義 & 処理可能。
• ワークフロー定義をワークフロー・シミュレータでテスト可能。
• アプリケーションは、シミュレータと同じようにワークフローAPIを呼出せば良い。
• ステータス管理機能・履歴管理機能も持つ。
• 御中ユーザに対応(処理したユーザへの差戻し、返信も可能)。
本番環境
ワークフロー
専用API
- 19. 18
• business
logic
• data access
4.5. 非同期処理サービス
非同期処理サービスより、要件によく挙がる
(1) キューイング、(2) 流量制御、(3) リトライ、
(4) 停止・中断コマンド、(5) 進捗率等ステータス表示
に対応した、実装難易度の高い非同期処理を容易に実装可能。
ステータス管理テーブル
Windows Service
• OnStart
• OnPause
• OnShutdown
• OnStop
main thread
thread pool
worker thread 1
worker thread 2
worker thread N
・・・ ・・・
async task 1
async task 2
async task N非同期タスクの投入
非同期処理サービス
- 21. 20
リッチ クライアント用
P層フレームワーク
Windows Forms
ログ ファイル
ログ部品
5.1. リッチクライアント対応フレームワーク
同期呼出
非同期呼出
デリゲード
バック グラウンドからの
• 結果表示
• 進捗表示
• メッセージボックス表示
をサポートします。
トレースログを
随時書き込み
Webサービス
非同期呼出
結果表示
コールバック
進捗表示
コールバック
通
信
制
御
機
能
非
同
期
化
フ
レ
ー
ム
ワ
ー
ク
① ASP.NET用のP層フレームワークを
リッチクライアントに移植しました。
② 非同期フレームワークにより、非同期
要求、非同期ポーリングを実現します。
B層・D層
DBMS
- 22. 21
5.2. 組み込み系アーキテクチャのサポート
バックグラウンド プロセス
(デバイス類のI/Oを処理)
デバイス ドライバ
送信
受信
送信
受信
非同期イベント フレームワーク
(名前付きパイプにより実装)
送信
受信
プッシュ型 MSG交換
<非同期イベント機能の凡例>
・ ➜ : 非同期単方向MSG
・ ➜ : MSG受信&イベント通知
プル型 情報共有
<共有メモリ機能の凡例>
・ ➟ : 書き込み
・ ➟ : 読み込み
共有メモリ部品
1. 非同期呼出機能との併用が効果的
2. VC++とのメッセージ交換も可能
GUIプロセス GUIプロセス
デバイスからの通知を迅速かつ容易にUIに反映できます。
- 23. 22
5.3. リッチクライアントWebデプロイツール
配置マニュフェスト ファイルと
ZIPファイル × n (プログラム
一式を圧縮したZIPファイル群)
① ツール経由で
アプリ起動指示
デプロイ ツールは、ZIPファイル・配置マニュフェスト
生成、MD5ハッシュのチェック、サイレント モード実行
の各機能を実装しており、正確なデプロイを顧客要件
に合わせて適切に実行できます。
② 更新の確認
(新バージョンの公開を確認)
③ 新バージョンのZIPを取得
(差分ダウンロードに対応)
④ ダウンロードしたZIP
ファイルの解凍・配置・起動
- 25. 24
6.1. SQL Database - Elastic Database
DamのSQL Database - Elastic Database対応。
以下のデータアクセスが可能。
• Data Dependent Routing ( データ依存ルーティング )
• Multi-Shard Queries (マルチシャード クエリ 実行 )
シャード マップ マネージャー
シャード セット
DB
instance
DB
instance
DB
instance
DB
instance
DB
instance
DB
instance
DB
instance
DB
instance
DB
instance
DB
instance
プログラム
Data Dependent Routing
プログラム
Multi-Shard Queries
シャーディング キーの値に基づいて
適切なデータベースに接続
複数のシャードに
またがるクエリの実行
- 26. 25
認証基盤(汎用認証サイト)
ASP.NET MVC & Identity & Dapper
• IdP (Sign in/out, 2FA Auth, Ex Login)
• STS (OAuth2, OpenID Connect)
オンライン決済
• Stripe
• Pay.JP
Notification
• SMTP
• Twilio(SMS)
データ・ストア
SQL Server, Oracle, PostgreSQL
( … LDAP, KVSなどのサポートも可能)
外部ログイン
• Google
• Microsoft
• Facebook
• Twitter
6.2. 汎用認証サイト
インターネット環境下でシングルサインオン可能な認証基盤
• OAuth2.0 + JWT による認証・認可
• OpenID Connect のサポートを追加
• オンライン決済、Notification、外部ログイン等をサポート
- 27. 26
BusinessLogic層
ベースクラス1
サブクラス
ベースクラス2
通信制御機能
.NET サービスインターフェイス
バイナリ・オブジェクト転送
汎用サービスインターフェイス
SOAP, REST (JSON, XML)
バイナリ・オブジェクト転送
Presentation層:ASP.NET
Web Form or MVC
DataAccess層
ベースクラス1
サブクラス
ベースクラス2
SOAP, REST (JSON, XML)
認証・認可
(JWTアサーションの検証)
6.3. Microservices開発への対応
.NET リッチクライアント
WWWブラウザ
HTML
WebAPI
(バイナリ転送)
WebAPI
(REST)
様々なスマート・デバイス
(SPA, スマホネイティブ)
汎用認証 サイト
OAuth 2.0 拡張 or
OpenID Connectに対応
User
Store
認証・認可の要求 ( Token: JWTアサーションの発行 )
• Webアプリケーションからは、Authorization Code Flowを使用。
• Wep APIクライアントからは、Implicit Flowを使用する。