Software_DOTNET0

DOTNET


☆概念


◆3階層アプリケーション
│ ①プレゼンテーション層
│ ②アプリケーション層(ビジネス層)
│ ③データ層


◆XML Webサービス
ソフトウエアの機能をインターネット上で提供するための技術。XMLとSOAPが通信に使われる。

_◇XML Webサービスのコーディング例

[WebMethod]
public int GetStringLength(string Text)
{
    return Text.Length;
}

_◇SOAP
│ XMLにエンベロープと呼ばれる付帯情報
│ HTTPなどのプロトコルで交換
│ クライアントとサーバの双方がSOAPの生成・解釈エンジンを持つ
│ ⇒異なる環境間でのオブジェクト呼び出しを可能にする。
│ ⇒下位プロトコルはHTTP,SMTP,FTPなど。
※SOAPプロキシ
│ SOAPメッセージの生成エンジン
※SOAPリスナ
│ 解釈エンジン
※Webサービス
│ SOAPによって外部から利用可能な、部品化されたWebベースのアプリケーションソフト
※UDDI
│ インターネット上で各社が提供しているWebサービスを集めて検索・照会できるようにしたWebサービス
※SOAPメッセージ
│ ヘッダ
│ SOAPエンベロープ
│  SOAPヘッダ
│  ヘッダ情報
│  SOAP本体
│  メッセージ名&データ
⇒SOAPエンベロープ以下がxml

※COM/DCOM 技術のような密結合でない
│ ラウンドトリップ(リクエストとレスポンスの1往復)の短い疎結合な分散システム

_◇多階層分散システム
Tiered Distribution
│ 三階層分散(Three-Tiered Distribution)
│ プレゼンテーション層-アプリケーション層間のデータ通信でXML Webサービス使用

①プレゼンテーション層
│ Presentation Tier
│ (あるいはClient Tier)
②アプリケーション層
│ Application Tier
③データ層
│ Data Tier


◆オブジェクト指向

_◇クラスとインスタンス

_◇インスタンスの作成と参照の解放
│ 作成 new
│ 解放 nullを代入
│ ※インスタンスが参照されなくなるとガベージとして扱われる
│ ⇒ガーベジコレクタがインスタンスを破棄、再利用する。
│ ※スコープの外部に出てもオブジェクトは解放される

_◇フィールド、プロパティ、メソッド、イベント

_◇コンスタラクタ、デストラクタ
│ インスタンスが生成されるときコンストラクタが呼ばれる
│ インスタンスが破棄されるときデストラクタが呼ばれる。
│ ※デストラクタ
│ ガベージコレクタによりインスタンスが回収されるときに実行される
│ ⇒null参照の状態になったときに実行されるわけではない。

_◇インタフェース
│ クラスのプロパティ、メソッド、イベントを定義
│ 共通したインタフェースであれば、違うクラスでも共通した方法で呼び出せる。

_◇継承
│ 基本クラス(基底クラス、スーパークラス)を派生クラス(サブクラス)が継承する。

_◇ポリモーフィズム
│ 継承したメソッドやプロパティを異なる機能になるよう派生クラスで再定義できる。(オーバーライド)

_◇カプセル化


◆プログラミング・モデル上の問題解決

_◇メモリリークの解決
│ ガベージコレクタによりメモリ領域の確保、解放を自動化

_◇DLLの互換性問題
│ プライベートDLLにより Side-By-Side配置できるようにした
│ グローバルアセンブリキャッシュ(GAC)により、Side-by-Side実行できるようにした
│ ⇒GACには、ファイル名が同じでバージョンの違うDLLを登録することができる


☆Framework
│ NET対応のアプリケーションの開発、実行環境


◆構造

C#他の.NET言語

CLS(共通言語仕様)
複数のプログラミング言語間でも互換性をとれる。データ型も共通。

ASP.NET(XML Webサービス, Webフォーム)
│ ASP.NET, AJAX
Windwosフォーム
│ LINQ

ADO.NET
│ DataとXML

基本クラスライブラリ
│ WPF
│ WCF
│ WF
│ WCS

CLR(共通言語ランタイム)

_◇CLR
Common Language Runtime
│ ①コンパイラで生成されるアセンブリは中間言語(MSIL)とメタデータ
│ ②プログラム実行時に呼び出された部分だけが順次ネイティブコードにコンパイルされる(JIT Compiler)
│ ⇒動作環境にあったネイティブコードにコンパイルされる(各種OSの違いが見えなくなる)

※Garbage Collector
│ アプリケーションのメモリの割り当ておよび解放を管理する。
│ ⇒GC.Collectメソッドにより強制的にガベージコレクションを行うこともできる

※Managed Code
│ CLRの管理下で動くプログラム

※Unmanaged Code
│ VB6.0以前などのCLRの管理下にないプログラム

_◇アセンブリ
│ .exe, .dllの論理的な単位
│ ※シングルファイルアセンブリ
│ ※マルチファイルアセンブリ
│ ※アセンブリには、バージョン、セキュリティ、参照情報などがメタデータとして格納されている


◆標準

_◇文字コード
│ Unicode


◆クラスライブラリ
│ クラス、インターフェイス、型
│ 各クラスのメンバとして、プロパティ、メソッド、イベント

_◇名前空間 Name Space
│ 同じ名前でも別な名前空間に属していれば識別できる。
①基本クラスライブラリ
│ 入出力
│ スレッディング
│ セキュリティ
│ デバッグ
②ADO.NET
│ データベース
│ XMLデータソース
│ ※DataReader 接続を維持してデータ処理を行う
│ ※DataAdapter レコードをメモリにキャッシュし、一旦接続をきる。
│ ⇒DataSetを使ってキャッシュ
③ASP.NET
│ Webアプリケーション、Webサービス用クラスライブラリ
④Windowsフォーム
│ Windowsアプリケーションを開発するための機能を提供するクラスライブラリ。
⑤WPF (Windows Presentation Foundation)
│ .NET Framework 3.0追加機能。
│ XAML(Extensibel Application Markup Language)
│ ⇒プログラミングコードと分離したインタフェースデザイン
⑥WCF (Windows Communication Foundation)
│ .NET Framework 3.0追加機能。
│ 分散処理を統一したプログラミングモデルを提供
⑦WF (Windows Workflow Foundation)
│ .NET Framework 3.0追加機能。
│ ワークフローの各プロセスに機能を実装するための技術。
⑧WCS (Windows CardSpace)
│ .NET Framework 3.0追加機能。
│ 認証技術。
│ 「カード」によりIDやパスワード入力の必要がない。
⑨LINQ (Language Integrated Query)
│ .NET Framework 3.5追加機能。
│ 言語埋め込みクエリ。
│ .NET開発言語でクエリ構文を記述できる。

※LINQ
│ →IEnumerable
│ →XML
│ →RDB

※OOPの作法でDBにアクセスする仕組
⇒O/Rインピーダンスミスマッチ
│ OOP=階層的データ
│ RDB=テーブル
の間の溝の「比喩」
⇒独立な場合には大差がないが、関係性を表そうとするとミスマッチが生じる

※O/Rマッパー
LINQ to SQL IQueryable 簡易実装
ADO.NET Entity Framework
⇒データベース上のテーブルに相当するクラスをエンティティ(本質)と呼ぶ

※LINQtoSQL
var query=。。。
クエリ式の結果(query)の型:IQueryableインタフェース
│ SQL文を生成しDBに問い合わせる
│ ToStringすると、生成されたSQLを確認できる

⑩ASP.NET AJAX (Asynchronous JavaScript and XML)
.NET Framework 3.5追加機能。非同期な一部の更新、ポストバック時にチラツキのないスムーズな表示。

※ポストバック
ASP.NETでは、ポストしたデータを処理するのも同じページ自身となる。しかし、インスタンスは異なり、IsPostBackプロパティにより判別され、処理される。