2010年7月26日月曜日

Windows Serviceおよびセットアッププロジェクトの作成手順(2)

Windowsセットアッププロジェクトの作成手順:

◆8.サービスアプリに必要なインストーラを作成
①Serviceのデザイン画面で右クリックして、「インストーラの追加」を
クリック
※新しいクラスの ProjectInstaller、および ServiceProcessInstaller
と ServiceInstaller の 2 つのインストール コンポーネントが、
プロジェクトに追加される。また、ServiceInstallerに対象Serviceの名前
も確認できる
②サービスの起動方法を決定するには、[ServiceInstaller] コンポーネント
をクリックし、StartType プロパティに適切な値を設定
③サービスが実行されるセキュリティ コンテキストを決定するには、
[ServiceProcessInstaller] コンポーネントをクリックし、
適切なプロパティ値を設定
④カスタム処理の実行が必要なメソッドをオーバーライド

◆9.セットアッププロジェクを作成
①上記Windowsサービスのソリューションを右クリックし、「追加」→
「新しいプロジェクト」をクリック
②プロジェクト追加のDialog画面で「その他のプロジェクトの種類」→
「セットアップと配置」をクリック
③右画面で「セットアッププロジェクト」を選んで、下部のプロジェクト名
と場所を入力して、「OK」をクリック
④追加したセットアッププロジェクトを右クリックして、「追加」→
「プロジェクト出力」をクリック
⑤[ プロジェクト出力グループの追加 ] Dialog画面で対象プロジェクトを選んで、
「プライマリ出力」→ [OK]
⑥正しいインストールは、プライマリ出力だけ追加;
カスタム動作を追加するには、次の手順:
・セットアッププロジェクトを右クリックし、「表示」→「カスタム動作」
・カスタム動作 ] を右クリックし、 [カスタム動作の追加 を実行
・ アプリケーション フォルダー ] をダブルクリックし、対象サービスプロジェクトの
のプライマリ出力を選んで、 [OK] を実行
・既定では、セットアップ プロジェクトは、ビルド構成に含まれません。
下記方法でソリューションをビルドする
「ビルド」メニュー→「構成マネージャー」→「セットアッププロジェクト」のビルド
をチェックオン→ビルド(バッチビルド)
※setup.exeと.msi二種類のセットアップファイルが作成された。

Windows Serviceおよびセットアッププロジェクトの作成手順(1)

Windows Serviceプロジェクトの作成手順:

◆1.Visual Studioを開き、「ファイル」メニューをクリック
◆2.「新規作成」→「プロジェクト」をクリック
◆3.「新しいプロジェクト」Dialog画面で「プロジェクトの種類」
にある「Visual C#」→「Windowsをクリック
◆4.右側の画面で「Windowsサービス」を選んで、Dialog画面下部の
プロジェクト名、場所、ソリューション属性、ソリューション名
などの情報を入力

◆5.「OK」ボタンをクリック
※新規作成したプロジェクトに、ディフォルトは下記三つのclass
が作成された
①Program.cs:サービスアプリのメイン エントリポイント
②Service1.cs:サービスの開始と終了処理クラス
・Partial classであることが重要なポイントです
・上位クラスServiceBaseを継承している
③Service1.Designer.cs:クラスServices1.csの分岐classです
・コンパイラーにとって、Service1.csと同一クラスとして扱い
・上位クラスServiceBaseからの継承が要らない

◆6.ServiceNameプロパティを設定
①Serviceのデザイン画面に移動すると、プロパティの設定画面が
表示されて、ServiceNameを設定/変更
※ServiceName プロパティの値は、各インストーラ クラスに
記録されている名前と一致する必要がある
②AutoLog:
サービスがアクションを実行したときにアプリケーション
イベント ログに情報を入力する場合は True を設定
③CanHandlePowerEvent:
コンピュータの電源状態の変化をサービスに通知する場合は Trueを設定
④CanHandleSessionChangeEvent:
ターミナル サーバーのセッション変更イベントをサービスで
処理できる場合は true
⑤CanPauseAndContinue:
サービスが一時停止要求または再開要求を受け付ける場合は True を設定
⑥CanShutDown:
サービスがコンピュータのシャットダウン時に通知を受けて OnShutdown
プロシージャを呼び出す場合は、True を設定
⑦CanStop:
サービスが実行停止要求を受け付ける場合は True を設定

◆7.OnStart、OnStopのオーバーライドとコーディングうを行い、
サービスの動作をカスタマイズ

ASP.NETアプリのリモートデバッグ手順

ASP.NETアプリのリモートデバッグ手順:

◆リモート サーバーの ASP.NETアプリのデバッグ(方法1)
①デバッグするサーバーに Visual Studio .NET リモート デバッグ コンポーネントをインストールすることを確認
②既定では、ASP.NETアプリが、***.exeとして実行されます。このため、ASP.NET をデバッグするには、ASP.NET が実行されているコンピュータに対する管理者権限が必要
③リモート サーバーでデバッガへのアクセスが許可されている必要がある
つまりユーザーを Administrators グループまたは Debugger Users グループのいずれかに追加
④リモートサーバのデバッグ対象アプリ(*.exe)を起動
⑤Localマシンに実行されているVisual Studioの「デバッグ」→「プロセスにアタッチ」で画面を開く
⑥「修飾子」に「user」@「servername」の形で情報を入力
⑦プロセスにアタッチ画面で「選択可能なプロセス」からデバッグ対象プロセスを選んで、「アタッチ」ボタンをクリック
⑧リモートサーバでアプリを動作させて、Localマシン側のVSでデバッグ

◆リモート サーバーの ASP.NETアプリのデバッグ(方法2)
①リモートサーバにデバッグ対象アプリをコピー
※関連する PDB ファイル (mywin4m.pdb) および DLL、またはプログラムの実行に必要なその他のファイルも同じ場所にコピー
②LocalマシンのVSにデバッグ対象アプリのプロジェクトを右クリックし、「プロパティ」をクリック
③アプリのプロパティページで、「デバッグ」をクリック
④[開始動作] 設定で、[外部プログラムの開始] チェック ボックスをオンにし、横のテキストボックスにexeファイルの絶対パス(例:「c:\temp\mywin4m.exe」)入力。
⑤[開始オプション] の [作業ディレクトリ] ボックスに上記exeファイルのフォルダ絶対パス(例「c:\temp」)を入力。
⑥[リモート コンピュータの使用] チェック ボックスをオンにし、横のテキスト ボックスにリモートサーバのホスト名を入力。
⑦混合モード デバッグを行う場合は、[アンマネージ コード デバッグを有効にする] を選択
⑧リモート コンピュータで、リモート デバッグ モニタを起動

WEBサービスデバッグ:リモートデバッグの手順

WEBサービスリモートデバッグの手順:
1.デバッグを有効にする
・プロジェクトのプロパティ
①ソリューション エクスプローラでプロジェクト名を右クリックし、[プロパティ ページ] をクリックして、[プロパティ ページ] を開き。
② [開始オプション]タブをクリック。
③[デバッガ]の下にある [ASP.NET]チェックボックスがオンになっていることを確認。
・アプリのWeb.config
①タグに属性「debug」を作成
②属性「debug」にtrueを設定
※属性では大文字と小文字が区別されるため、"Debug"や"DEBUG"ではなく、"debug"を指定
注意:
デバッグを有効にすると、Performanceに影響があるので、DEBUG目的ではない場合、
無効にしてください。

2.リモート サーバーの XML Web サービスのデバッグ(方法1)
①デバッグするサーバーに Visual Studio .NET リモート デバッグ コンポーネントをインストールすることを確認
②既定では、Webサービスが、ASPNET プロセスとして実行されます。このため、ASP.NET をデバッグするには、ASP.NET が実行されているコンピュータに対する管理者権限が必要③リモート サーバーでデバッガへのアクセスが許可されている必要がある
つまりユーザーを Administrators グループまたは Debugger Users グループのいずれかに追加
④LocalマシンのIISフォルダ(C:\Inetpub\wwwroot)にVSよりビルドしたWebサービスのソースフォルダはリモートサーバのIISサーバの参照フォルダにコピー
※注:ビルドしたソースフォルダはDllファイルではなく、csファイルを含んでいる
ものです。
⑤Localマシンに実行されているVisual Studioの「デバッグ」→「プロセスにアタッチ」で画面を開く
⑥「修飾子」に「user」@「servername」の形で情報を入力
⑦プロセスにアタッチ画面で「選択可能なプロセス」からデバッグ対象プロセス
(w3wp.exe)を選んで、「アタッチ」ボタンをクリック
⑧リモートサーバでWebサービスを動作させて、Localマシン側のVSでデバッグ

3.リモート サーバーの XML Web サービスのデバッグ(方法2)
①デバッグするサーバーに Visual Studio .NET リモート デバッグ コンポーネントをインストールすることを確認
②既定では、Webサービスが、ASPNET プロセスとして実行されます。このため、ASP.NET をデバッグするには、ASP.NET が実行されているコンピュータに対する管理者権限が必要③リモート サーバーでデバッガへのアクセスが許可されている必要がある
つまりユーザーを Administrators グループまたは Debugger Users グループのいずれかに追加
④LocalマシンのIISフォルダ(C:\Inetpub\wwwroot)にVSよりビルドしたWebサービスのソースフォルダはリモートサーバのIISサーバの参照フォルダにコピー
※注:ビルドしたソースフォルダはDllファイルではなく、csファイルを含んでいる
ものです。
⑤上記「リモート サーバーの ASP.NETアプリのデバッグ」の手順にしたがって、ASP.NETアプリのデバッグを通じて、該当アプリが呼び出しているWebサービスのデバッグもできる

WEBサービスデバッグ:ローカルデバッグの手順

WEBサービスローカルデバッグの手順:
1.デバッグを有効にする
・プロジェクトのプロパティ
①ソリューション エクスプローラでプロジェクト名を右クリックし、[プロパティ ページ] をクリックして、[プロパティ ページ] を開き。
② [開始オプション]タブをクリック。
③[デバッガ]の下にある [ASP.NET]チェックボックスがオンになっていることを確認。
・アプリのWeb.config
①タグに属性「debug」を作成
②属性「debug」にtrueを設定
※属性では大文字と小文字が区別されるため、"Debug"や"DEBUG"ではなく、"debug"を指定
注意:
デバッグを有効にすると、Performanceに影響があるので、DEBUG目的ではない場合、
無効にしてください。

2.開発時にWebサービスのデバッグ
・http://localhost の XML Web サービスのデバッグ
①LocalhostのIISサーバにある該当Webサービスを右クリックして、
「ディレクトリセキュリティ」→「匿名アクセス及び認証コントロール」の「編集」をクリックして、「統合Windows認証」をオンにする
②Visual Studio .NET の [ プロパティ ページ] を使用して、デバッグする XML Web サービスのプロジェクト プロパティを設定(通常Defaultの設定でOK)
③app_codeにある.csファイルを開き、namespace="http://localhost/"か確認
④Webサービスプロジェクトをスタットアッププロジェクトに設定、.asmxをスタットページに設定
⑤[デバッグ] メニューの [開始] をクリック

・クライアントアプリからWebサービスのデバッグ
①LocalhostのIISサーバにある該当Webサービスを右クリックして、
「ディレクトリセキュリティ」→「匿名アクセス及び認証コントロール」の「編集」をクリックして、「統合Windows認証」をオンにする
②Visual Studio .NET の [ プロパティ ページ] を使用して、デバッグする XML Web サービスのプロジェクト プロパティを設定(通常Defaultの設定でOK)
③app_codeにある.csファイルを開き、namespace="http://localhost/"か確認
④クライアントアプリのプロジェクトをスタットアッププロジェクトに設定
⑤Webサービスのソースだけではなく、クライアントアプリの関連ソースにもBreakPoint
の設定が必要
⑥デバッグを開始