- PR -

WebアプリケーションにWindows Formsのコントロールを表示する方法

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-08-08 15:11
 こんにちは。

 この会議室の「ASP.NETは魔法の杖か?」のスレッドで、biacさんが
引用:

Java VM を入れた上で Javaアプレットが動くように、.NET Framework のランタイムをクライ アントに入れてやれば、.NET Framework 用のコントロール (Windows Forms を継承したコ ントロール) がクライアント側で動くようになります。
そのようにすれば、イベントをクライアント内で処理できますね。 (まだ日本語のドキュメントがほと んど無い状況ですが、すでに可能です。)


とおっしゃっていますが、この、Windows Formsを継承することについて書いてあるモノ(Webページ?MSDN?)を教えてください。
biac
大ベテラン
会議室デビュー日: 2001/10/22
投稿数: 106
投稿日時: 2002-08-08 17:28
引用:

Windows Formsを継承することについて書いてあるモノ(Webページ?MSDN?)を教えてください。


私は、MSDN Magazine No.28 (6月18日発売) の記事を参考にしました。

http://www.ascii.co.jp/pb/msdn/toc/bn_no28.html
> リッチクライアントの復権
> .NET拡張クライアントサイドアプリケーションのコードアクセスセキュリティ,分散機能
※ このサンプルプログラムのパズルは、そのままでは上手く動きませんでした。

※ 原文は Web で読めます。
http://msdn.microsoft.com/msdnmag/issues/02/06/rich/rich.asp
> Return of the Rich Client
> Code Access Security and Distribution Features in .NET Enhance Client-Side Apps


実際に、少しやってみたところ…
・System.Windows.Forms.Controls を継承したクラスであること。 ただし、Form は除く。
・引数無しのコンストラクタが定義されていること。
・サイズは明示的に指定すること。 (コンストラクタまたは <object> タグ内)
・呼び出せるのは、そのクラスで定義したメソッド/プロパティのみ。 (継承元にあるだけでは、呼び出せないみたい。)
・通信できるのは、HTML のある URL だけ。 それも HTTP(S) だけ。
・ローカルリソースにはアクセス不可。 ただし、コモンダイアログでユーザが引き渡したファイルストリームなどは別らしい。 印刷も、コモンダイアログを使えば可能らしい。
…といったようなことが分かってきました。

※ ごくごく簡単なサンプルを次に置いてあります。 f(^^;
http://nadia.kabe.to/test/WinFormControlOnHTML/MyTextBox.html
NothingButXMLInfoSet
大ベテラン
会議室デビュー日: 2002/07/16
投稿数: 116
投稿日時: 2002-08-08 17:47
>・呼び出せるのは、そのクラスで定義したメソッド/プロパティのみ。 (継承元にあるだけでは、呼び出せないみたい。)
>・通信できるのは、HTML のある URL だけ。 それも HTTP(S) だけ。
>・ローカルリソースにはアクセス不可。 ただし、コモンダイアログでユーザが引き渡したファイルストリームなどは別らしい。 印刷も、コモンダイアログを使えば可能らしい。

このあたりはコードアクセスセキュリティの領域なので、インターネットかイントラネットか?SP1は当たっているか?などによって変わります。たとえば、デフォルト+SP1があたっている状態では、インターネット環境から来たすべてのコードが実行できません。
biac
大ベテラン
会議室デビュー日: 2001/10/22
投稿数: 106
投稿日時: 2002-08-08 18:31
引用:

デフォルト+SP1があたっている状態では、インターネット環境から来たすべてのコードが実行できません。


あ、そうでした。 f(^^;
さっきのサンプルページも、信頼済みサイト に入れてやってください。 m(_`_)m > all
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-08-09 08:30
引用:

biacさんの書き込み (2002-08-08 17:28) より:
私は、MSDN Magazine No.28 (6月18日発売) の記事を参考にしました。

http://www.ascii.co.jp/pb/msdn/toc/bn_no28.html
> リッチクライアントの復権
> .NET拡張クライアントサイドアプリケーションのコードアクセスセキュリティ,分散機能
※ このサンプルプログラムのパズルは、そのままでは上手く動きませんでした。



 たまたま買っていました。
今日は事務所の配置換えがあるので、夏休みの間にでも読みます。
ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2002-08-17 11:24
ども、Jitta@in北海道 です。通信制大学の面接授業中です。今更C言語なんて、教えてもらうことなんかねぇや!とも思ったのですが、素人さんの考え方、悩みどころは大変勉強になりますね。

 MSDNの記事、読みました。「もしかして?」と思ってWindowsアプリケーションのあるディレクトリをIISで実行権をつけて公開し、IEのアドレスにexeファイルを指定すると・・・やはりWindowsアプリケーションが起動しました。こんなことしていいのだろうか?
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2002-08-17 12:44
> MSDNの記事、読みました。「もしかして?」と思ってWindowsアプリケーションの
> あるディレクトリをIISで実行権をつけて公開し、IEのアドレスにexeファイルを
> 指定すると・・・やはりWindowsアプリケーションが起動しました。
> こんなことしていいのだろうか?

この件については以下の記事が詳しいです。
日本語版はMSDNマガジンのNo.29に載っています。
http://msdn.microsoft.com/msdnmag/issues/02/07/NetSmartClients/default.asp

クライアント側の実行権限をきちんと与えてやる必要がありますが、
アプリケーション自体をWebからダウンロードして実行できますね。
これとWebサービスをくみあわせれば、Webアプリケーションなんて
いらないのではないかと思ってしまいます。

データをどんどん入力していくような業務系のアプリケーションを
Webアプリケーションとして作成しようとすると結構大変だったり
するので、これからこの手のアプリケーションがはやるのでは
ないかと思ってるんですが。。。

#アプリケーションを保持してるWebサーバはIISでなくても
 よいし、WebサービスもうまくつくればサーバはWindowsじゃ
 なくてもいいし。。。
 まぁ、クライアントはWindowsじゃないといけないけど
 そこにMicrosoftの狙いがあるかなぁ、、とか。。。
biac
大ベテラン
会議室デビュー日: 2001/10/22
投稿数: 106
投稿日時: 2002-08-17 13:23
引用:

クライアント側の実行権限をきちんと与えてやる必要がありますが、
アプリケーション自体をWebからダウンロードして実行できますね。


補足すると、.NET F/W を入れた環境の IE5.01 以降では、ダウンロードだけしたくても、できません。 CLR (共通言語ランタイム) を必要とする exe をダウンロードだけしようとしても、勝手に実行しようとしてくれちゃいます。
※ 「IE が CLR のホストになっている」と言うんだそうで。 実際には、mscorie.dll という MIME フィルタが噛まされて、それがアセンブリのダウンロードを監視していて、処理するそうです。

なお、勝手に実行されるのは怖い気もしますが、そのサイトに対する信頼度で実行されるわけです。 もしもダウンロードだけ出来てしまうと、それはフルトラストで実行されることになるわけで。

引用:

データをどんどん入力していくような業務系のアプリケーションを
Webアプリケーションとして作成しようとすると結構大変だったり
するので、これからこの手のアプリケーションがはやるのでは
ないかと思ってるんですが。。。


そう思います。
イントラネットでの C/S システムは、CLR ホストである IE 上で、あるいは IE から、アセンブリを実行しちゃえばいい、と。

なので、Web アプリケーションとして作るのは、素直な HTML で実現できる簡単なユーザーインターフェースのものだけでいいんじゃないか、と。

スキルアップ/キャリアアップ(JOB@IT)