- - PR -
ノータッチデプロイメント(WinアプリからのEXEキックの件)
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-08-03 13:55
WebフォームからWinアプリのEXEを呼び出した後にIISにあるEXEを
呼び出されたWinアプリから呼び出す事って可能でしょうか? 現在作成しているものは IE6.0_VB.NETのASP/WebアプリとWinアプリにて作成 1.ログイン画面をWebアプリで作成 ↓ 2・メニュー画面をWinアプリにて作成 ↓ 3.サブメニュー画面をWinアプリにて作成 上記の1から2のWinアプリを呼び出すのに Response.Redirect又はServer.Transferを使って IIS上のEXEを呼び出しています。 これと同じ動きを2から3でのWinアプリで実現したいのですが なにか方法わかりません。 サーバサイドのEXEを呼び出す方法が分からず 現状Reflectionを使用してオブジェクト変数に格納して Showメソッドで呼び出しは可能ですが プロセス状態が取得できず二重起動防止もできなくて 困ってます。 どなたか似たような動きができる実装した方 ご教授お願いします。 | ||||||||||||
|
投稿日時: 2004-08-03 19:04
全部まとめて1つのexeになるようにした方がいいのでは?
・なぜ、複数のEXEにしなければならないのか ・なぜ、ログインだけWebフォームなのか ・なぜ、わざわざ難しいように考えるのか | ||||||||||||
|
投稿日時: 2004-08-03 20:03
引用 -------------------------------------------------- ・なぜ、複数のEXEにしなければならないのか ・なぜ、ログインだけWebフォームなのか ・なぜ、わざわざ難しいように考えるのか -------------------------------------------------- 説明不足ですいません。 現在作成しているシステムで ノータッチデプロイメントを使用して メンテナンスもすべてサーバで行う方針です。 複数のEXEにしているのは一つのEXEでまとめてしまうには あまりにも画面数が多い為です。 サーバサイドにあるEXEをキックする形にしてレスポンスを 維持しようとしています。 WebからダウンロードしてWinアプリを呼ぶ ノータッチデプロイメントを使用しているのも メンテナンスとレスポンスを考えての事らしいです。 更新もサーバの更新のみで処理できるので。 | ||||||||||||
|
投稿日時: 2004-08-03 20:45
そういうことでしたら、EXEを1つと複数の DLL にすればいいと思います。 DLL は必要になるまでダウンロードされないので、適切に複数の DLL に分割すれば細い回線を利用していたとしても、それなりに快適なレスポンスが期待できます。 | ||||||||||||
|
投稿日時: 2004-08-03 21:07
きよのさん。ご返答ありがとうございます。
DLLだとプロセスが参照できなくて二重起動防止 したりだとかができなくて困っています。 なので直接EXEをキックできないかなぁと思ってます。 その辺の解決方法をご教授いただけないでしょうか? | ||||||||||||
|
投稿日時: 2004-08-04 09:00
DLLを単体でダブルクリックなりなんなりしても起動できず、実行ファイルからDLL内のオブジェクトを実体化しなければ(または関数をコールしなければ)なりません。したがって、呼び出す側が複数起動しないように適切に制御すれば、二重起動だろうが三重起動だろうが、どんな風にでも制御できます。 具体的な方法はこちら http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13612&forum=7&14 複数のDLLに分けると、DLLが更新されていないかどうかのチェックを毎回行います。したがって、小さいけれどもたくさんのリクエストが流れることになります。 EXEを1つにすると、最初のロードはやたら重いけれども、1つのEXEの更新をチェックするだけなので、リクエストは少なくなります。 [ メッセージ編集済み 編集者: Jitta 編集日時 2004-08-04 09:03 ] | ||||||||||||
|
投稿日時: 2004-08-04 09:33
おはようございますJittaさん。
ご返答ありがとうございます。 [引用] ------------------------------------------------------------------------------- Jittaさんの書き込み (2004-08-04 09:00) より: DLLを単体でダブルクリックなりなんなりしても起動できず、実行ファイルからDLL内のオブジェクトを実体化しなければ(または関数をコールしなければ)なりません。したがって、呼び出す側が複数起動しないように適切に制御すれば、二重起動だろうが三重起動だろうが、どんな風にでも制御できます。 具体的な方法はこちら http://quick-tips.hp.infoseek.co.jp/vs.net/sample/index.html -------------------------------------------------------------------------------- こちらの作業環境はVB.NETの為 こちらのC#のサンプルを確認できませんでした。 もしよろしければ上記の内容のご教授をいただけると 助かります。 ご迷惑をおかけして申し訳ありません。 上記内容を実装して確認した上で下記の内容部分の件も 含めまして上司に開発の方向性の相談をしたいと 思っております。 ご提案までしていただいて本当にありがとうございます。 [引用] ------------------------------------------------------------------------------- 複数のDLLに分けると、DLLが更新されていないかどうかのチェックを毎回行います。 したがって、小さいけれどもたくさんのリクエストが流れることになります。 EXEを1つにすると、最初のロードはやたら重いけれども、1つのEXEの更新をチェックするだけなので、リクエストは少なくなります。 -------------------------------------------------------------------------------- [ メッセージ編集済み 編集者: だい 編集日時 2004-08-04 09:36 ] | ||||||||||||
|
投稿日時: 2004-08-04 09:57
え〜っと、この会議室内のスレッドにリンクを張っていたはずですが・・・ サンプルはソースも付いているので、ソースを読めば、ある程度わかると思うのですケド… http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13612&forum=7&14
Form1.cs region "button2" 285行目から324行目
ChildForm1を、表示済みフラグ兼インスタンス変数格納場所とします。この変数がnullの場合は、インスタンスを作成し、VB.NETならAddEventHandlerで、Closeイベントのハンドラを登録します。Closeイベントハンドラが呼ばれたということは、フォームが閉じたということなので、Closeイベントハンドラ内でChildForm1をnullクリアします。 ChildForm1がnullでないときは、インスタンスの作成はせずに、Focusメソッドでフォーカスを与えています。 補足: シングルトンパターンはこれ http://homepage3.nifty.com/dotnetfan/win/windows12.html (小野@どっとねっとふぁん さんのページ) [ メッセージ編集済み 編集者: Jitta 編集日時 2004-08-04 11:39 ] |