- PR -

ASP.NET vs プラグイン

投稿者投稿内容
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-05-19 18:44
引用:

BB.NKさんの書き込み (2005-05-19 14:20) より:

>リッチクライアントを実現するために既存のASP.NETアプリケーションを、
>リActiveX(or IEのプラグイン)に置き換えると言う方法は、妥当な選択とは到底思えない。
これはなぜ妥当ではないのでしょうか?それを調べて見ます。
最小限のインストールで機能アップできる方法があれば実現したいとうのが話の発端です。


ActiveX(or IEのプラグイン)を開発するためには、必然的に.NET上で現在動いているコードを、VC++7.0かVB6.0でアプリケーションをつくり直す事になります。相当量のコードを再記述する必要が生まれる事は容易に想像できます。
サーバーとの通信も問題です。ActiveXの利点を生かすなら、HTTPでサーバーとデータの送受信を行う事になるでしょう。この場合ASP.NETのポストバックアーキテクチャとの相性は悪いです。実装する上で様々な工夫が必要になるのではないかと。

引用:

最小限のインストールで機能アップできる方法があれば実現したいとうのが話の発端です


所でJittaさんの書き込みにある「MS製品ありき」の部分はどうなんでしょうか?
アプリケーションの配置コストを下げたいと言うのが主な理由なら、ノータッチデプロイメントで良いと思います。.NET Framework自体はWindows Updateから容易にインストール出来ますし。もちろんその結果、Windows以外や古いWindowsOSでは動作しなくなります。

インターネットで広く利用され互換性を重視する必要がある場合は、おのずとJavaAppletやFlashを選択する事になるでしょう。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2005-05-19 18:55
引用:

ノータッチデプロイメントというのは、資料を読んだ限りでは



まずは、実際体験してみるといいでしょう。

http://www.atmarkit.co.jp/fdotnet/special/ntdeploy/ntdeploy_01.html
の「ノータッチ・デプロイメントのサンプルへのリンク」
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2005-05-20 10:21
>サーバーとの通信も問題です。ActiveXの利点を生かすなら、HTTPでサーバーとデータの送受信を行う事になるでしょう。この場合ASP.NETのポストバックアーキテクチャとの相性は悪いです。実装する上で様々な工夫が必要になるのではないかと。

この部分はかなり重要かもしれません。
度々私はプラグインがどうこうと言っていますが、
本当はデータ表示以外はASP.NETでやりたいのです。
ただ、なぜそうやって実装したのか?という根拠が欲しかったのです。

また、スマートクライアントでは.NET Frameworkのインストール、
それを使ってノータッチデプロイメントで自動配信するには、
IEのセキュリティ設定もしっかり考慮しなければならないのですね。

ある程度、ASP.NETベースのGUIによってユーザの満足が得られているのであれば、
わざわざリッチクライアントを用いる必要もない。
これらの点から結局、いままで通りの実装方法がよいのかもしれません。
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2005-05-23 12:57
追加質問です。

ASP.NETで
クライアントに保存された(プラグインで作成した)ファイルを
サーバ側へ送信することは可能でしょうか?

Webベースでファイル編集・送信ということは不可能?!

「やりたい処理の流れ」
クライアントからデータ表示要求→Webサーバ→クライアント
→プラグインでデータ表示→プラグインで編集→ローカルに保存
→Webサーバへ送信→Webサーバでデータ更新処理

そもそもWebアプリでは無理でしょうか?
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-05-23 18:48
引用:

BB.NKさんの書き込み (2005-05-23 12:57) より:
ASP.NETでクライアントに保存された(プラグインで作成した)ファイルを
サーバ側へ送信することは可能でしょうか?

Webベースでファイル編集・送信ということは不可能?!


先にueさんが答えているように、プラグインではおよそソフトウェアで可能な事は全て可能です。したがってプラグインとの連携の中でファイルを送信する事はもちろん可能でしょう。

ASP.NETと標準的なWEBブラウザだけで・・・と言う事なら、ユーザーにファイル選択操作をWEBブラウザ上で行ってもらう必要がありますけどね。

ところでプラグインで・・・と言うのは文字通りプラグインを作ると言う事でよいの?
FlashPluginを使うような事も言ってなかった?フラッシュならフラッシュと言わないと伝わらないよ。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2005-05-23 19:42
甕星さん
お返事ありがとうございます。
クライアントの送信したいファイルが常に同じパス+ファイル名の場合、
ユーザ操作なしにASP.NETと標準的なWEBブラウザだけでサーバへファイルを
送信することは可能と考えてよいですね?(送信ボタンは押しますが)
実装にあたり、どんなコンポーネントを使えばいいのか調べましたがまだわかりません。
今は、ファイル送信、ASP.NETで検索しています。。。

ただ、プラグインで実装できるならプラグインでやってしまったほうが、
現実的なのでしょうか。
どうもWebベースでファイルのやりとりがピンと来ません。

また、私が言っているプラグインは全て自作(ActiveX+IE)です。
(現在この自作プラグインでデータ表示は可能)
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-05-23 21:22
引用:

BB.NKさんの書き込み (2005-05-23 19:42) より:
甕星さん
クライアントの送信したいファイルが常に同じパス+ファイル名の場合、
ユーザ操作なしにASP.NETと標準的なWEBブラウザだけでサーバへファイルを
送信することは可能と考えてよいですね?(送信ボタンは押しますが)


いいえ。きっぱりと出来ません。
もしもそれが可能なら、WEBサーバーにアクセスしただけで、HDD内の任意のファイルを取得可能ということになってしまいます。もし可能なら特大のセキュリティホールですよ。そんなわけで「ユーザーがファイルを選択する」という操作を省くことは出来ません。

引用:

ただ、プラグインで実装できるならプラグインでやってしまったほうが、
現実的なのでしょうか。


データを送受信するのが確定時一回だけならば、JavaScriptでActiveXコントロールのプロパティからデータを取り出し、HTML上のHIDDENコントロールにデータを設定。WEBサーバーに対してPOSTする。
データを頻繁にやり取りする、あるいはWEBサーバーとのレスポンスが問題になるなら、ActiveXが直接にサーバーと通信するのが良いかと。

引用:

また、私が言っているプラグインは全て自作(ActiveX+IE)です。


じゃ、PluginではなくActiveXと言いましょう。Puginと言えば、機能拡張のためのコンポーネントの事でしかありません。相手に通じませんよ。
BB.NK
大ベテラン
会議室デビュー日: 2004/02/05
投稿数: 138
投稿日時: 2005-05-24 08:57
仰る通りセキュリティホール以外のなにものでもないですね。
下記のように書けばクライアントのファイルをユーザに選択させ、
サーバへ保存することが可能ですね。
サーバ側ソースの
sFile = sFile + System.IO.Path.GetFileName(File1.PostedFile.FileName);
のFile1.PostedFile.FileNameにローカル実ファイル名を書いたところで
サーバには空のファイルができるだけでした。

コード:

//クライアント側
<INPUT id="File1" type="file" ... runat="server">
<INPUT id="send_file" type="button" value="ファイル送信" runat="server">

//サーバ側
private void send_file_ServerClick(object sender, System.EventArgs e)
{
 if(File1.PostedFile != null || File1.PostedFile.ContentLength > 0)
 {
   //ファイルの保存用のパスを指定
   string sFile = @"C:\";
   try
   {
     sFile = sFile + System.IO.Path.GetFileName(File1.PostedFile.FileName);
     //ファイルの保存
File1.PostedFile.SaveAs(sFile);
   }
   catch(Exception ex)
   {
//エラー処理
   }
}



引用:

データを送受信するのが確定時一回だけならば、JavaScriptでActiveXコントロールのプロパティからデータを取り出し、HTML上のHIDDENコントロールにデータを設定。WEBサーバーに対してPOSTする。
データを頻繁にやり取りする、あるいはWEBサーバーとのレスポンスが問題になるなら、ActiveXが直接にサーバーと通信するのが良いかと。


この部分がわからないのですが、
ファイルをActiveXコントロールのプロパティから取得して、
HIDDENコントロールに設定することは可能なのでしょうか?
(ここで仰るデータとは?)

[ メッセージ編集済み 編集者: BB.NK 編集日時 2005-05-24 08:58 ]

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