- - PR -
[VS.NET2005][VB.NET]インターネットを介してのDB接続について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-02-01 22:30
現在、XML Web サービスを用いたスマートクライアントを実現しようとしています。
とここで、1つ疑問が出てきました。 VB.NETにて作成したWindowsアプリケーション(exe)から インターネットを介して(ファイアウォールも通過して)のDB接続(RDBMSの種類は問いません) というものは可能なのでしょうか? (DB接続処理は、Windowsアプリケーションに実装するとします) もし上記のようなことが可能であるとのことであれば XML Web サービスを採用する理由があるのか疑問になります。 (しいて言うなら、セキュリティ周りが絡むのかな?) また、XML Web サービスの変わりにRESTというやり方もあることは、存じ上げており .NET Remotingはファイアウォールが越えられないようなので考慮対象外としてます。 くだらない質問かと思いますが、ご存知の方 どんな情報でも構いませんので、ご教授願えないでしょうか。 | ||||||||||||
|
投稿日時: 2007-02-01 22:51
不可能ではありません。
とかとかです。 何が「良い」かは時と場合によって異なります。
HttpChannel を使えば越えられます。 | ||||||||||||
|
投稿日時: 2007-02-02 09:30
ご返答ありがとうございます。
Windowsアプリケーションから外部DBに接続することは可能なんですね。 そうした場合の処理イメージは、次のようなものになるという認識で問題ないでしょうか。 <DBサーバ側の対応> ・DBサーバのRDBMSが通信するポートを開いておく ・ファイアウォールで遮断されないように、Windowsアプリケーションからの アクセスを許可する(通信ポートは80以外でも可能?) ・外部からDBサーバにアクセス可能とするために、DBサーバには グローバルIPアドレスを付与する <Windowsアプリケーション側の対応> ・通常のRDBMS接続(.NETの場合、ADO.NETなど)処理を実装 (リソースの場所をDBサーバのグローバルIPアドレス、DBが待ち受けている ポートを指定) ・接続が確立されたら、ローカルネットワークあるいはLAN上にあるDBとの 対話処理と変わらない このように考えるとWindowsアプリケーション側での実装は ローカルだろうが、LAN上だろうが外部だろうがリソース場所のみが変わるだけ というイメージになってしまいますが、根本的に処理や考え方が足りないものは あるのでしょうか。 >>HttpChannel を使えば越えられます。 なるほど、HttpChannel を使えば越えられるのですね〜 大変、勉強になりました。 | ||||||||||||
|
投稿日時: 2007-02-02 10:02
そういう直接的な接続ではありません。 出来る DBMS もあるかもしれませんが、少なくとも SQL Server の場合は間に IIS が入ったはずです。 | ||||||||||||
|
投稿日時: 2007-02-02 11:19
直接的な接続処理の実装では実現できないということなんですね。 SQL Server 2005の場合、リモート接続機能で構築すれば 直接的な接続処理の実装で行けるのかと思っていましたが そうではないようですね。。。 (自分で試して確認できる環境がないのが何とも。。。) Windowsアプリケーション側の接続処理が直接的ではない場合 どのような実装を行うのか、恥ずかしながら現時点では想像がつきません。 このあたりに関して、引き続き調査してみようと思います。 | ||||||||||||
|
投稿日時: 2007-02-02 11:24
DB処理を行うクライアントにもコンポーネントが必要なデータベース製品であっても、
サーバー側でDB処理をした結果をクライアントに渡すようにすれば、 エンドユーザーのクライアントにはコンポーネントをインストールする必要がなくなります。 クライアントの環境に依存しにくくなるといったメリットもあるのではないでしょうか。 | ||||||||||||
|
投稿日時: 2007-02-02 11:30
なるほど。おっしゃる通り、XML Web サービスを利用するメリットは ここにもありそうですね。 どうやらXML Web サービスを用いたスマートクライアントで実現するという手段は 決定事項になりそうです。 ただ、個人的にそれを用いなかった場合、他にどのようなやり方があり どのようなインパクトがあるのかは把握しておきたいと思いまして。 | ||||||||||||
|
投稿日時: 2007-02-02 11:34
まぁ、その通りではあるのだけど・・・
後はパフォーマンスの問題。 WANの場合には物理的に距離があるぶん、同じ大域幅でもpingの応答に数百msかかる事が珍しくないよね。この状況で操作のたびに同期的に通信を行うようなプロトコルを使うと著しくパフォーマンスが低下する。例えば1000レコードのデータを取り出す処理がLANなら3秒で終わっていたのが、WANだと毎回数百msのディレイが入って3分かかったりする。WANでも間にWeb Seriviceを介在させて、データを纏めて一気に転送すればもっと短い時間でデータを送信できる。 「LANで開発した業務ソフトをWANに持って行ったら使い物にならなくて・・・」と言う記事を何年も前に他所のサイトで見かけたよ。 もちろん使用するDBにもよるだろうけど、WANでの利用を前提にプロトコルを最適化しているデータベースなんて聞いた事ないよ。 |