[コース: B3] .NET Framework 2.0 分散アプリケーション開発 11/29/2018 9:29 PM Microsoft ON ― 出張ワークショップ ― [コース: B3] .NET Framework 2.0 分散アプリケーション開発 (参加者向け) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
11/29/2018 9:29 PM 第1章 理想の分散アーキテクチャ © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
“強いシステム” とはどのようなシステムか ソフトウェア品質の全体像 (ISO 9126) 11/29/2018 9:29 PM “強いシステム” とはどのようなシステムか ソフトウェア品質の全体像 (ISO 9126) ソフトウェアでは、目に見えづらい非機能要件が多数潜在しています これら非機能要件のすべてを都度要件定義で決めることは事実上困難です 要件の定義 (都度実施) 機能性 合目的性 正確性 相互運用性 セキュリティ 標準適合性 機能的要件 使用性 理解性 習得性 方法の規定 運用性 アーキテクチャの規定 信頼性 成熟性 障害許容性 資源再配置 負荷分散 回復性 二重化 アプリケーション配布 非同期処理 効率性 時間効率性 トランザクション管理 認証 資源効率性 XX メッセージング 保守性 解析性 より見えづらい より定義しづらい より実装が難しい よりトラブルを起こしやすい 、、、、、、 セキュリティ データ移行 非機能的要件 変更性 安定性 相互接続 試験性 移植性 環境適応性 設置(配置)性 置換性 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
運用と拡張性を考慮した ”強い” 実装の探求 Windows DNA (1997年~) 11/29/2018 9:29 PM 運用と拡張性を考慮した ”強い” 実装の探求 Windows DNA (1997年~) アプリケーション同士が密接に連携し、変更・再配置などにも考慮した分散 Web アプリケーション構築のためのアーキテクチャを提唱 (その後のMicrosoftの分散アプリケーションの考え方のベース) データなどの内部実装(例:ファイルからデータベースへの変更、など)に非依存 サービスのプラグイン、拡張が可能な、成長型のアーキテクチャ © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
運用と拡張性を考慮した ”強い” 実装の探求 より “接続性” を重視した .NET Framework 11/29/2018 9:29 PM 運用と拡張性を考慮した ”強い” 実装の探求 より “接続性” を重視した .NET Framework 次世代システム クライアント/サーバー VB、第 4 世代言語 分散システム レガシー システム連携 サービス間連携(商用Web サービス、など) マルチ デバイス対応 Capabilities Web アプリケーション CGI, Java, ASP 3 階層分散システム システム間連携 ダム端末 COBOL 集中管理 PC CUI C スタンドアロン Time © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
運用と拡張性を考慮した ”強い” 実装の探求 分散アーキテクチャ(DNA思想) + .NET Framework 11/29/2018 9:29 PM 運用と拡張性を考慮した ”強い” 実装の探求 分散アーキテクチャ(DNA思想) + .NET Framework スケーラブルな再利用シナリオ(例:全社規模の共有、社外サービスの接続、等) オープンで標準化された接続(SOAPなど)、さまざまなデバイスに対応、オフラインシナリオへの対応、、、 など プレゼンテーション (第3章) ビジネスロジック (第3章) データ (第2章) ユーザデバイス UIP Biz ロジック DB アクセス サービス Agent DB クラスタ 外部サービス Webファーム アプリケーションファーム © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
第2章 データ層とデータアクセス実装 11/29/2018 9:29 PM © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
データアクセスの2つのモデル なぜ、非接続型なのか(その背景) 11/29/2018 9:29 PM データアクセスの2つのモデル なぜ、非接続型なのか(その背景) 時代に適した新しいデータアクセスの必要性 ホスト/バッチ クライアント - サーバ Web 接続 接続 接続 接続 接続/切断 接続 接続/切断 データ取得後の柔軟な活用 (DBと切り離しポータブルに扱える) 挿入 変更 抽出 コピー バインド データベース非依存コードと依存コードの明確な分離 (SQL 89/92/99, 独自関数, etc) 例: update test set col1 = nvl(val, ‘no item’); © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ADO.NET の接続型と非接続型 方法の相違 11/29/2018 9:29 PM ADO.NET の接続型と非接続型 方法の相違 接続型データアクセス 非接続型データアクセス データ操作 読み込み データ更新 (追加 変更 削除) プロバイダに依存しない 処理 コピーされたインメモリデータベース (DataSet, DataTable) DataAdapter プロバイダに依存した 処理 (SQL Server, Oracle, OLE DB, など) データ操作 接続 データ検索 切断 接続 データ検索 Fill Update 切断 読み込み データ更新 (追加 変更 削除) データソース (SQL Server, Oracle, など) データソース (SQL Server, Oracle, など) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ADO.NET の接続型と非接続型 使用するクラスの相違 11/29/2018 9:29 PM ADO.NET の接続型と非接続型 使用するクラスの相違 接続型データアクセス 非接続型データアクセス DataSet DataTable DataView プロバイダに依存しない 処理 DataRelation DataRow, DataColumn ..... コピーされたインメモリデータベース (DataSet, DataTable) サードベンダなどで 独自に拡張可能 OLE DB 用 Oracle 用 プロバイダに依存した 処理 (SQL Server, Oracle, OLE DB, など) SQL Server 用 SqlConnection SqlCommand SqlDataReader SqlDataAdapter ..... SqlCommandBuilder ..... データソース (SQL Server, Oracle, など) データソース (SQL Server, Oracle, など) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ADO.NET 非接続型の実装概念 Fill メソッド 11/29/2018 9:29 PM ADO.NET 非接続型の実装概念 Fill メソッド DataAdapter/TableAdapter オブジェクトにSQLクエリ(またはストアドプロシージャ)の Command を設定 ① コマンド設定 DataSet ② Fill メソッド実行 SelectCommand DataBase InsertCommand Update メソッド UpdateCommand DeleteCommand DataAdapter TableAdapter © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ADO.NET 非接続型の実装概念 Update メソッド 11/29/2018 9:29 PM ADO.NET 非接続型の実装概念 Update メソッド DataAdapter/TableAdapter オブジェクト の更新コマンドを設定(更新コマンドの設定詳細は後述) DataSet Fill メソッド実行 SelectCommand DataBase InsertCommand ②Update メソッド UpdateCommand DeleteCommand DataAdapter TableAdapter ① コマンド設定 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ADO.NET 非接続型の実装概念 RowState による状態管理 11/29/2018 9:29 PM ADO.NET 非接続型の実装概念 RowState による状態管理 Fill 直後の DataTable RowState Column1 Column2 Unchanged 1 Dog 2 Cat 3 Snake 関連 Method CancelEdit 直前の行の更新を キャンセル RejectChange 一連の更新処理を 元に戻す AcceptChange 確定する 更新 更新後の DataTable RowState Column1 Column2 Unchanged 1 Dog Modified 2 Lion Deleted 3 Snake Added 4 Cow © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ADO.NET その他の実装 パラメータの使用 11/29/2018 9:29 PM ADO.NET その他の実装 パラメータの使用 Parameterオブジェクトを使用することで、単なる文字列置換でない、意味的な引数管理をおこなう CommandText のSQL文中で、パラメタ位置を指定 SqlClient では @xxxx で指定、OleDb では ? で指定 Parameterオブジェクトを使ってパラメータをアタッチ Parameter object をAdd Value プロパティにパラメータの内容(入力引数)を設定 ‘SQL Server Client Dim cmd As New SqlCommand( “select * from authors where au_id = @au_id”, conn ) cmd.Parameters.Add(“@au_id”, SqlDbType.VarChar, 11) cmd.Parameters(“@au_id”).Value = “172-32-1176” : ‘ OLE DB Client Dim cmd As New OleDbCommand( “select * from authors where au_id = ?”, conn ) cmd.Parameters.Add(“au_id”, OleDbType.VarChar, 11 ) cmd.Parameters(0).Value = “172-32-1176” : © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ADO.NET その他の実装 ストアドプロシージャの使用 11/29/2018 9:29 PM ADO.NET その他の実装 ストアドプロシージャの使用 非接続型においても、コマンドに “ロジック” を実装 できるため有用 パラメータのない簡単なストアドプロシージャの実装方法 CommandText プロパティ、CommandType プロパティを設定 Dim cmd As New SqlCommand(conn) cmd.CommandText = “MyProcedure” cmd.CommandType = CommandType.StoredProcedure conn.Open() SqlDataReader dr = cmd.ExecuteReader() : パラメータを持つストアドプロシージャの実装方法 Direction プロパティ (Output / Input / ReturnValue) でさまざまな引数を指定 Dim cmd As New SqlCommand(conn) Dim param As New SqlClient.SqlParameter cmd.CommandText = “MyProcedure” cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Add(“@Param1”, SqlDbType.Int).Value = 3 param.Direction = ParameterDirection.ReturnValue param.ParameterName = “@ReturnValue” param.SqlDbType = SqlDbType.Int cmd.Parameters.Add(param) : 入力パラメータの場合 返り値の場合 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
マネージコードの SQL Server ストアド実装 SQL CLR の利用 11/29/2018 9:29 PM マネージコードの SQL Server ストアド実装 SQL CLR の利用 優位点 ストアドプロシージャから、通常のマネージ実装同等のコードを実装可能 ADO.NET から都度接続する方法と比べ、DB接続などのオーバーヘッドを軽減 (また、 SQL Server と同一のプロセス内で実行) 留意点 但し、CLR上で実行されるため、極端にレスポンスにクリティカルな繰り返し処理などでは、T-SQL が優位 (CLR 上の型変換などのオーバーヘッドが若干有) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
データアクセスにおける実装上の留意点 接続プールへの配慮 11/29/2018 9:29 PM データアクセスにおける実装上の留意点 接続プールへの配慮 Connection オブジェクトの接続文字列ごとに接続プールがキャッシュされる 例:“Server=(local);DataBase=Pubs;…” Max値、Min値などを指定可能。ログインのトレースなどで最適化する 接続プールの動きを理解することが重要 Connection String が完全に一致している場合のみ、Connection がプールされる 但し、SQL Server の Windows 統合認証では、接続文字列が同じでもユーザごとにプールが作成されるので注意する ADO.NET 2.0 では、接続プールの実行時の制御が可能 (ClearAllPoolsメソッド、など) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
データアクセスにおける実装上の留意点 オプティミスティックな同時実行の制御 11/29/2018 9:29 PM データアクセスにおける実装上の留意点 オプティミスティックな同時実行の制御 “非接続” モデル固有の設計上の課題 一般的解決策として、複数名での更新排他の制御を更新コマンド(Insert/Update/Delete)として実装 更新 (ID = 5) UpdateCommand の実装例 Update Seat Set State = “occupied” where Id = @ID 更新 (ID = 5) 遅い者勝ち! Update Seat Set State = “occupied” where (Id = @ID) and (State = “empty”) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
データアクセスにおける実装上の留意点 移植性への配慮(プロバイダ非依存な実装) 11/29/2018 9:29 PM データアクセスにおける実装上の留意点 移植性への配慮(プロバイダ非依存な実装) 方法1: System.Data.Common 名前空間とDbProviderFactory を使用 (ADO.NET 2.0の新機能) ‘ プロバイダ依存な記載 Dim dataFactory As DbProviderFactory = DbProviderFactories.GetFactory("System.Data.SqlClient") ‘ 以降、プロバイダ非依存な記載 Dim cmd As DbCommand = conn.CreateCommand() cmd.CommandText = "SELECT Name FROM Sales.Store WHERE CustomerID = @CustomerID" Dim param As DbParameter = dataFactory.CreateParameter() param.ParameterName = "@CustomerID" param.Value = txtCustomerID.Text cmd.Parameters.Add(param) Dim customerName As String = cmd.ExecuteScalar() 方法2: インタフェースへのキャストを使用 ‘ プロバイダ依存な記載 IDbConnection con = new SqlConnection(“Server=(local);Integrated Security=SSPI;Database=northwind”); ‘ 以降、プロバイダ非依存な記載 string sqlStr = "SELECT id, name FROM TestTable"; IDbCommand cmd = con.CreateCommand(); cmd.CommandText = sqlStr; con.Open(); IDataReader dr = cmd.ExecuteReader(); © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
このような場合、アプリケーションの再稼動時に 11/29/2018 9:29 PM メッセージキュー メッセージキューの役割 信頼性の確保 ネットワークや送信先のアプリケーションの状態にかかわらず、メッセージ配信が保証される 応答性の確保 メッセージキューの非同期メッセージングを活用することで、複数のアプリケーションを非同期に動作可能。 またネットワークトラフィックなどを考慮し、転送時間などをアプリケーション側で制御可能 (夜間のバッチ転送など) 処理A 処理A DB 注文処理 処理B 処理B DB このような場合、アプリケーションの再稼動時に メッセージを送信する必要がある © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
メッセージキュー メッセージキューの利用手順 11/29/2018 9:29 PM メッセージキュー メッセージキューの利用手順 キューを作成する(静的 or 動的) パブリックキュー : ネットワーク全体に発行 プライベートキュー : ローカルコンピュータのみ キューへのプロパティ設定 メッセージを送信するアプリケーションと受信するアプリケーションを作成する 特別な処理を必要とする場合はシステムキューを利用する 配信不能キュー、ジャーナルキュー等 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
トランザクションの管理 2.0 で追加された System.Transaction 11/29/2018 9:29 PM トランザクションの管理 2.0 で追加された System.Transaction System.Transaction を使用すると、 TransactionScope を使用したプログラミングモデルを使用可能 SQL Server 2005 では、状況に応じ、LTM から DTC (OleTx) に自動的に昇格 ネイティブ トランザクション System.EnterpriseServices (OleTx ,DTC) System.Transaction VS スケーラブルでない! 分散環境に未対応 マルチリソースに未対応 オーバーヘッド大 (遅い!) Using tx As New TransactionScope() Dim MyCon As SqlConnection = New SqlConnection("server=MyServer; " & _ "database=AdventureWorks;user id=MyUser; password=MyPassword") MyCon.Open() : Dim RecNum As Integer = MyCommand.ExecuteNonQuery() MyCon.Close() tx.Complete() End Using © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
第3章 ビジネスロジックの分離と XML Web サービスの活用 11/29/2018 9:29 PM 第3章 ビジネスロジックの分離と XML Web サービスの活用 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
XML Web サービスの利用 型指定された DataSet を使用する 11/29/2018 9:29 PM XML Web サービスの利用 型指定された DataSet を使用する “型指定された DataSet” とは? テーブル名等を事前に取り込んで作成されたDataSet DataSet クラスの派生クラスとして独自に生成したクラス WebMethod は標準的なDataSetを使用可能であるが、“型指定されたDataSet” を使うと、、、 曖昧さを排除できる スキーマ定義を通し、他環境との相互運用が可能となる (型指定していない DataSet は Microsoft 独自) ソースの可読性が向上する 型指定されていない場合: ds.Tables[“customer”].Rows[5][“name”] 型指定されている場合: ds.customer[5].name その他: IntelliSense が利用可能、コンパイル時のチェックによるエラー発生率が低下、パフォーマンスの向上、など © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
XML Web サービスの利用 XML Web サービスによる検索・更新の実装 11/29/2018 9:29 PM XML Web サービスの利用 XML Web サービスによる検索・更新の実装 WebMethod の返り値/引数の双方に、型付データセットを使用可能 更新頻度によっては、通信データ量を考慮し、データセットの GetChanges メソッドなどを使用 (但し型付データセットへのキャストが必要なので注意) Web サービスの実行OSユーザは、アプリケーションプールのアイデンティティユーザで実行 (Windows 統合認証によるDB接続の際は、コネクションプール管理、権限等に注意する) 管理と安定性に配慮して、アプリケーションプールを構成 ワーカープロセスを分離 (個別のリソースプランを指定可) システム規模に応じ Web ガーデンを構成可 例外は、SoapException に変換され、XML にシリアル化される(開発者は .NET Framework の通常の例外処理でハンドリングできる) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
セキュリティの実装 XML Web サービスにおける認証と暗号化(1) 11/29/2018 9:29 PM セキュリティの実装 XML Web サービスにおける認証と暗号化(1) スケーラブルな実装シナリオ(例:社外からの接続、一般消費者向けサービス、など)では特に配慮が必要 XML Web サービスでは、フォーム認証は使用不可 基本認証 ダイジェスト認証 統合 Windows 認証 クライアント証明書を利用した認証 認証機構の実装には、XML Web サービス側は構成を変更し(実装コードの変更は不要)、クライアント側はコードを記述 Dim ws As New localhost.Service() ws.Credentials = New System.Net.NetworkCredential(TextBox1.Text, TextBox2.Text) 認証をカスタムコードで構築することも可能 (但し、カスタム Http Module を作成する必要があり非常に面倒) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
セキュリティの実装 XML Web サービスにおける認証と暗号化(2) 11/29/2018 9:29 PM セキュリティの実装 XML Web サービスにおける認証と暗号化(2) SSL (Secure Socket Layer) による暗号化機構の実装 セッション層で処理される公開鍵/秘密鍵方式による暗号化方式 (HTTPS プロトコルを使用) 暗号化で使用する公開鍵はブラウザ側で保持。 また、複合化で使用する秘密鍵はサーバ側で保持。 サーバ(IIS)側は必要事項を入力し、認証局(CA)に証明書を要求する (Web サイトの [プロパティ] 画面の [ディレクトリセキュリティ] タブ) サーバ(IIS)側に、認証局(CA)から電子メールで発行されたサーバ証明書をインストールする ブラウザに、認証局(CA)から取得したルート証明書をインストールする (著名なものは、通常、ブラウザに組み込まれている) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
11/29/2018 9:29 PM 第4章 プレゼンテーションの実装 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
.NET におけるプレゼンテーション実装の種類 用途に応じた .NET 実装 11/29/2018 9:29 PM .NET におけるプレゼンテーション実装の種類 用途に応じた .NET 実装 Office アプリケーション Windows フォーム PocketPC/デバイスアプリケーション Web フォーム (及び モバイルWebフォーム) ビジネスユーザ 向き コンシューマ向き Office アプリケーション リッチ (高機能なUI) Windows フォーム with “Atlas” Web フォーム リーチ(環境やアプリへの依存性が低い) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
DataSet のオフラインシナリオの実装 アプリケーションの形態ごとに準備された手段 11/29/2018 9:29 PM DataSet のオフラインシナリオの実装 アプリケーションの形態ごとに準備された手段 Windows フォーム デバイス アプリケーション Office アプリケーション Web フォーム 方法 XMLシリアル化 Cachedデータ DiffGram のサポート ○ ○ その他 留意事項 - ドキュメント(ブック)のトップレベルでしかサポートしないため、Sheetオブジェクトなどで使用する場合は、トップレベルでオブジェクトを宣言し参照する 基本的に、オフラインはサポートしない (但しサーバ側での Read/Write は可能) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Windows フォームの難読化 Windows フォーム配置の際の留意点 11/29/2018 9:29 PM Windows フォームの難読化 Windows フォーム配置の際の留意点 .NET アプリケーションであるか否かに関係なく、原則として、クライアントアプリケーションに重要情報などは含めない 特に .NET アプリケーションでは逆アセンブリが容易 アプリケーション要件の理由で重要情報を含める必要がある場合は、可能な限りクライアントの難読化と文字列の暗号化をおこなう 難読化したアプリケーションの ClickOnce による配置も可能 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
ステートレスなHTTPへの配慮 XML Web サービス/Web フォーム利用時の留意点 11/29/2018 9:29 PM ステートレスなHTTPへの配慮 XML Web サービス/Web フォーム利用時の留意点 XML Web サービスにおいては、基本は、WebMethod 単位のルートトランザクションとしてしか機能できないので注意 ルートトランザクションとして、DTC (EnterpriseServices) を使用可能 WebMethodAttribute の TransactionOption を設定する 可能な限り、1 メソッドは1 つの完結した操作として実装(デザイン) Web フォームにおいては、毎回、DataSet のメモリの内容は破棄されるので注意 DataGrid などへの表示情報(及び内部のオリジナルデータなど)は、すべて ViewState にストックされている このため、カスタムのデータメソッド(EditCommand、UpdateCommandなど)の実装では、Session や ViewState に退避したり、DataSet などを再度 Fill (データを再構築) したりする必要がある リソースやパフォーマンスに配慮したカスタムなバインド処理では、ObjectDataSource の利用も効果的 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Web フォームのセッション管理 ASP.NET で進化したセッションコントロール 11/29/2018 9:29 PM Web フォームのセッション管理 ASP.NET で進化したセッションコントロール 従来のセッション管理 ② セッション作成 (タイムアウト時間設定) ① サーバ接続 セッション ③ セッションIDの書き込み (次回以降、このIDでセッションを識別) Webブラウザ Webサーバ この方式の問題点 Web ファーム構成でセッションを管理する場合は自前の作りこみが必要 プロセスに依存したセッションでスケーラビリティがない セッションID を Cookie へ書き込むため、Cookie の有効/無効などブラウザの設定状態に依存して動かなくなる など ASP.NET のセッション管理 コンフィグレーション(web.config)の設定で、これらをすべて解消 © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
11/29/2018 9:29 PM まとめ © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
便利さの裏に隠れているもの 知れば知るほど深い、、、 .NET 11/29/2018 9:29 PM 便利さの裏に隠れているもの 知れば知るほど深い、、、 .NET .NET は、開発者に、煩わしい内部処理から開放された新しい開発フレームワーク (ASP.NET、ADO.NET、etc) を提供 .NET のより深遠な技術を理解しコントロールすることで、分散システムという領域まで拡張可能、 Business フレームワークとしての便利さ ビジネスロジックへの集中(煩わしさからの解放) よりハイレベルなコントロール リソースコントロール、セッションコントロール、セキュリティ、チューニング、 など Technology システムの規模・厳格性 Windows による 可用性(非ダウンタイム)実績の一部抜粋 クラスタ構成 シングルサーバ構成 Tarbus 99.999 % HotBot.com 99.99 % Morigaga Ramp Buy.com 99.98 % FreeMarkets.com Bames & Noble.com VirtualBank CBSMarketWatch.com 例えば、Bames&Noble など、計画停止を含めても 98.55 % (停止が年間 5 日程度) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
11/29/2018 9:29 PM 技術情報リソース 「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ: http://www.microsoft.com/japan/msdn/thisweek/300x10/ Step 7 シリーズ 「分散アプリケーション開発編」: http://www.microsoft.com/japan/msdn/thisweek/step7/default.aspx Microsoft patterns & practices: http://msdn.microsoft.com/practices/ マイクロソフトのコンサルタントが執筆! 『.NET エンタープライズWebアプリケーション 開発技術大全』(全5巻) © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
11/29/2018 9:29 PM © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION. © 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.