「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>アーキテクチャ設計]]

* 目次 [#f841038f]
#contents

*主要アーキテクチャ [#f78c4378]
**C/S型システム [#l6fe078d]

-強み

--UIテクノロジとして[[Windows Forms]]や[[WPF]]などのリッチ・クライアントを採用するため、~
下記の非機能要件を満たす必要がある場合等は有用な選択肢となる。~

---エントリー系の業務等に要求される操作性や性能を実現できる

---複雑な業務の、複雑な画面遷移やUI制御を比較的容易に実現できる。

--UI制御はクライアント側ハードウェア・リソースをフル活用するので、
---サーバ側ハードウェア・リソースへの負荷の心配が少ない。
---クライアント側のデバイスなどを有効に活用できる。

--セキュリティ
---デフォルトでは、サンドボックス化などの、クライアント側リソースのアクセス制限など、~
セキュリティを考慮した機構は持っていないため、関連する制約について意識する必要が無い。

-弱み

--プラットフォーム依存のUIテクノロジ。

--クライアント側のCPU・メモリ等、マシン性能を必要とする。

--セキュリティ
---デフォルトでは、サンドボックス化などの、クライアント側リソースのアクセス制限など、~
セキュリティを考慮した機構は持っていないため、個別対応が必要(クライアントへのデータ保存など)。

--配布・設定の手間~
クライアント・プログラム、ランタイム、データ・プロバイダの

---配布・設定の手間がかかる。

---更新があった場合も、配布・設定の手間がかかる。

---詳しくは、こちら「[[プログラムの配付技術]]」を参照。

***物理2層C/S [#p97389b2]

-強み

--クライアント端末 + DBサーバと言う簡単な構成で構築可能。~
(シングル・ポイントが少なく、冗長化すべきサーバ台数も少ない)

--UAPはクライアント側ハードウェア・リソースをフル活用するので、
---物理3層C/Sと比べるとサーバ側のハードウェア・リソースへの負荷の心配が少ない。
---クライアント側のデバイスなどを有効に活用できる。

-弱み

--クライアント・プログラム、ランタイム、データ・プロバイダまでの配付・設定が必要。

--セキュリティ

---(認証方式によるが基本的に)~
DBに直接アクセス可能のためセキュリティに問題がある。

--ネットワーク境界がクライアントUP ⇔ DB間になるので、ココの~
回線品質に対する通信データ量、ラウンド・トリップが多いと性能的に問題になる。
---一般的にイントラ内部でのみ利用可能
---DB-AP間のラウンド・トリップ高
---DBMSトランザクションを使用する

--.NET以外では採用されないアーキテクチャ
(Delphi、PowerBuilderなどを除いて)

***物理3層C/S [#j40d12dc]

-強み

--データ・プロバイダの配付・設定は不要。

--UI層の処理はクライアント側ハードウェア・リソースをフル活用するので、
---Webアプリケーションと比べるとAPサーバ側のハードウェア・リソースへの負荷が少ない。
---クライアント側のデバイスなどを有効に活用できる。

--セキュリティ

---DBに直接アクセス不可能のためセキュリティに問題が少ない(サーバ信頼モデル)。~
イントラネット環境でベースクライアント・セキュリティモデルを採用する場合はこの限りでは無い。

-弱み

--クライアント・プログラム、ランタイムの配布が必要。

--ネットワーク境界がクライアントUP ⇔ AP ⇔ DB間になるので、ココの~
回線品質に対する通信データ量、ラウンド・トリップが多いと性能的に問題になる。

---特に、クライアントUP ⇔ AP間がインターネット等の場合は、~
ネットワーク・サービスのSLAに左右されるため注意が必要。

--構成が複雑になるため、シングル・ポイントや性能など、~
非機能要件に関する検討項目が増えてくる。

-UPの造りの範囲だけで言えば2層・3層C/Sの違いは~
大きく無いが、以下については考慮が必要になる。

--生産性を良くするためには、~
クライアント-サーバ間の通信部品の整備が必要になる。

--排他方式がDBMSトランザクションを用いた悲観排他方式では無く、~
タイムスタンプを持ちいた楽観排他方式となる。~
(悲観排他の実現には、ロック管理テーブルなどを用意する必要がある)

**Webアプリケーション [#y0c8e5af]
シン・クライアント(HTML)

-強み

--プラットフォーム非依存のUIテクノロジ。~
ただし、クロス・ブラウザ対応が必要となり、実現が困難なケースもある。

--クライアント・アプリケーション配布の問題がない。

--クライアント側のCPU・メモリ等、マシン性能を必要としない。

---HTMLはクライアントにダウンロードされた後に解析、レンダリングされるので、~
場合によってはクライアント側CPUリソースを大量に消費することもある。

--セキュリティ

---セキュリティを考慮した機構は持っているため個別対応が不要。~
(ActiveXやJava Appletなどを使用しない限りは)

---DBに直接アクセス不可能のためセキュリティに問題が少ない(サーバ信頼モデル)。~
>イントラネット環境で~
「ベースクライアント・セキュリティモデル」~
を採用する場合はこの限りでは無い。

-弱み

--操作性、複雑な画面遷移やUI制御、エントリー性能に難がある。

--JavaScriptを使用して複雑な画面遷移やUI制御を行った場合、~
生産性が落ちたり、マシンパワーを必要とするようになったりする。

--UI層

---HTMLの生成処理の分、物理3層C/SよりAPサーバ負荷が多くなる。

---HTMLを送受信するため、物理3層C/Sよりネットワーク・トラフィックが増える。

--UI層はサーバ側でHTML生成するため、~
物理3層C/Sよりと比べるとAPサーバ負荷が多い。

--DBMSトランザクションを用いた悲観排他方式では無く、~
タイムスタンプを持ちいた楽観排他方式を採用する必要がある。~
(悲観排他の実現には、ロック管理テーブルなどを用意する必要がある)

-Microsoft系技術では、~
● WWWサーバ(IIS)と~
● APサーバ(ASP.NET)を~
同じ筐体から分離できないという問題があるので、~
ビジネスロジックをDMZからイントラに引き込むためには、~
● プロキシサーバを経由させたり、~
● Web3層方式を採用したり~
する事で工夫が必要になる。

***物理2層Web [#r78228a3]
-一般的なWebアプリケーションのアーキテクチャ。

-注意点

--ネットワーク境界がWWWブラウザ ⇔ Web/AP ⇔ DB間になるので、ココの~
回線品質に対する通信データ量、ラウンド・トリップが多いと性能的に問題になる。

---WWWブラウザ ⇔ Web/AP間がインターネット等の場合は、~
ネットワーク・サービスのSLAに左右されるため注意が必要。

***物理3層Web [#a72885b5]
-Microsoft系技術では、IISとASP.NETを同じ筐体から分離できないため、~
ビジネス・ロジックを非武装セグメントからイントラ内に引き込む際などに利用される。

-一般的なWebアプリケーションからWebサービスを呼び出す際もこの方式と同じになる。

-注意点

--ネットワーク境界がWWWブラウザ ⇔ Web/AP1 ⇔ Web/AP2 ⇔ DB間になるので、~
ココの回線品質に対する通信データ量、ラウンド・トリップが多いと性能的に問題になる。

---WWWブラウザ ⇔ Web/AP1 ⇔ Web/AP2間がインターネット等の場合は、~
ネットワーク・サービスのSLAに左右されるため注意が必要。

-参考:[[Web/APの分離]]

**ターミナル・サービス [#n8973e6a]
通常、物理2層C/Sを3層化するために用いられる。~
[[デスクトップ仮想化のサーバサイド型>プラットフォーム・アーキテクチャ#qe8f8ed4]]に分類される。

-強み
--プログラム等の改修(ほぼ)なしで、物理2層C/Sを3層化可能。
--クライアント・アプリケーション配布の問題がない。
--操作性、複雑な画面遷移やUI制御、エントリー性能にも問題が無い。
--プリンタ・USBなど、クライアント側のデバイスのリダイレクトが可能。

-弱み
--画面を転送するので描画が多いと通信データ量、ラウンド・トリップが多くなる。
--ネットワーク境界がユーザ ⇔ クライアントUP ⇔ DB間になるので、ココの~
回線品質に対する通信データ量、ラウンド・トリップが多いと性能的に問題になる。

-トレードオフ~
以下の、2つのトレードオフがある。
--ユーザ ⇔ クライアントUP間の画面を転送するネットワーク・トラフィック
--クライアントUP ⇔ DBサーバ間のデータアクセスのネットワーク・トラフィック

***移行の考慮点 [#j34ee9fb]
-[[ターミナルサービス系への移行]]

***XenApp [#u3a4688f]

-概要
--サーバをマルチ ユーザし、サーバで動作している~
アプリケーションソフトの画面を端末にリアルタイムに配信するシステム。

--アプリケーションソフトの利用者は端末でソフトの操作が可能だが、~
端末ではソフトは動作しておらず、画面表示と入力の受付のみが行われる。

--アプリケーションを仮想化するCitrix XenApp  Think IT~
http://thinkit.co.jp/article/1006/1

-経緯
--ターミナル・サービスは、もともとマルチ ユーザ機能を持っていなかったWindowsを~
マルチ セッション環境下で利用できるようにしたCitrix製品のOEM供給であった。

--以降、Windowsにターミナル・サービスが標準搭載されたため、

---セキュリティー、パフォーマンス、拡張性、安定性、柔軟性などを強化した、~
ターミナル・サービスに高い付加価値を提供する製品として販売されている。

---例えばRDPプロトコルよりICAプロトコルのほうが性能的に優れており、~
---例えば[[RDP]]プロトコルよりICAプロトコルのほうが性能的に優れており、~
帯域やネットワーク品質の不足がある場合など、XenAppが導入されるケースがある。

--バージョンと製品名の変遷
---3:MetaFrame Presentation Server
---4:Citrix Presentation Server
---5:Citrix XenApp

-移行ツール
--シトリックス、アプリ移行支援ツール「AppDNA」を提供~
http://www.atmarkit.co.jp/news/201209/25/citrix.html

--Introducing the Application Compatibility Toolkit for XenApp~
http://blogs.citrix.com/2008/11/04/introducing-the-application-compatibility-toolkit-for-xenapp/

*UIテクノロジ [#p92e7854]

**リッチ・クライアント [#j37e0bab]

***[[Windows Forms]] [#meb6b7c8]

***[[WPF]] [#m56020b7]

***Java系 [#l368d0ac]
Javaのリッチクライアント技術は弱いので、~
Nexaweb、XPlatformを使用するケースが多い。

-UIサブシステム(GUIツールキット)

--AWT(Abstract Window Toolkit~
---OSのウィンドウシステムに準じたデザインになる。
---プラットフォーム固有のコードが開発者に透けて見えるため、~
異なるプラットフォーム間で移植性のあるアプリケーションを作成するには限界がある。

--Swing~
---100% Java であり、ネイティブコードは使っていない。
---OSのウィンドウシステムは使用せず、独自描画される。
---しかし、Swing内部から低レベルなOSルーチンを使用して描画している。

--SWT(Standard Widget Toolkit~
---AWT と Swing を代替するものとして開発された。
---100% Java であり、ネイティブコードは使っていない。~
---OSのウィンドウシステムは使用せず、独自描画される。~
---JNI経由でOSルーチンを使用して描画している。
---SWT を使うプログラムは移植性があるが、~
ツールキット自体の実装は、各プラットフォーム固有

--JavaFX~
FXMLというマークアップ言語に対応した新しいUIサブシステム(GUIツールキット)

-Java Applet~
Webブラウザ上で動作する。

-Javaアプリケーション~
デスクトップ上で動作する。

-Java Web Start~
ノータッチデプロイメント、[[ClickOnce]]が参考とした技術、~
自動ダウンロード、自動インストール、自動アップデートして、~
サンドボックス化された実行コンテキスト内で実行される。

***ActiveX [#c5725cd8]

***その他 [#lc827034]
-XMAP

**シン・クライアント(HTML) [#ffda6117]

***[[ASP.NET Web Forms]] [#k5a0fe65]

***[[ASP.NET MVC]] [#nebad554]

**RIA [#zc11ba0f]

-Webシステムの強みを残し、~
C/S型システムの以下の弱みを解決したテクノロジ~

--プラットフォーム依存
--配布・設定の手間
--クライアント側へデータ保管が可能であるなど、~
セキュリティを考慮した機構は持っていないため個別対応が必要。

-Flash・Flex、[[Silverlight]]~
Flashは、アニメーションなどを含む柔軟なUI作成に使用されるが、~
Flex、[[Silverlight]]はより業務アプリケーション開発に適した~
UIコンポーネントベースのプログラミング・モデルを採用している。~

-Ajax、HTML5~
Viewの構成をクライアントが担っているWebアプリケーション。

***Flash・Flex [#mff16fc4]
Flex 2.0でリッチなWebアプリを作ろう~
 - 第1回 Flexはエンジニア向けのFlash:ITpro~
http://itpro.nikkeibp.co.jp/article/COLUMN/20061012/250481/

***[[Silverlight]] [#r4dd0816]


***Ajax [#t9958b46]

***HTML5 [#s6bd905b]

HTML5 - Wikipedia~
http://ja.wikipedia.org/wiki/HTML5
>HTML5 は、プロプライエタリなプラグインとして提供されているリッチインターネットアプリケーションのプラットフォーム(JavaFX、Adobe Flash、Microsoft [[Silverlight]] 等)を置き換えることを標榜しており、ウェブアプリケーションのプラットフォームとしての機能やマルチメディア要素が実装されている。そのため HTML5 が普及すれば Adobe Flash などのプラグインは不要になるという意見がある。

リッチクライアント技術ではあるが、
-イベント・ドリブン
-UIコンポーネントベース

のプログラミング・モデルを直接サポートしておらず、~
現段階では、Flash・Flex、[[Silverlight]]のような~
業務アプリケーション開発向けの技術では無い。

***Single Page Application (SPA) [#cee97580]

Single Page Application (SPA) を使ってみよう MVC 4 新機能シリーズ~
 - THE TRUTH IS OUT THERE - Site Home - MSDN Blogs~
http://blogs.msdn.com/b/chack/archive/2012/02/28/single-page-application-spa-mvc-4.aspx~
 JavaScript と ASP.NET Web API をベースとした~
 クライアント サイド インタラクション中心の Web アプリケーション~
 を構築するのに適したフレームワークとテンプレート

**シン・クライアント [#m6f7f089]
[[ターミナル・サービス>#n8973e6a]]を指す。

**WWWブラウザ [#n66004f5]
-[[IE、WWWブラウザのいろいろ]]
-[[ウェブブラウザの利用シェア - Wikipedia>http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%AE%E5%88%A9%E7%94%A8%E3%82%B7%E3%82%A7%E3%82%A2]]

**Office [#z9639098]

*[[通信技術]] [#m56a4169]

*[[データアクセス>データアクセスのいろいろ]] [#z8197a20]

*[[VS系コンテンツ]] [#e3328772]

*その他 [#r3dfc37e]
**[[プログラムの配付技術]] [#ma988776]

*参考情報 [#kf09eced]

-アプリケーション アーキテクチャ ガイド 2.0 (AAG 2.0)~
http://msdn.microsoft.com/ja-jp/architecture/gg998968.aspx
--旧版「.NET のアプリケーション アーキテクチャ : アプリケーションとサービスの設計」(AAfN)~
http://msdn.microsoft.com/ja-jp/library/ms954595.aspx~
※注意: AAfN の全面改定版が AAG 2.0 である

-Windows フォームと Web フォーム間の選択~
http://msdn.microsoft.com/ja-jp/library/5t6z562c.aspx

----
Tags: [[:アーキテクチャ]], [[:.NET開発]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS