- ベストアンサー
サーバー間通信の手法とは?
- サーバー間通信において、外部からアクセス可能なサーバーAとイントラネット用サーバーBのデータ連携について説明します。
- サーバーA上のcgiからサーバーBのデータベースを読み込む方法や、サーバーBのASP.NETプログラムからサーバーAのデータを読み書きする方法について解説します。
- 具体的な手法としては、socketを使用してサーバーBのデータを取得する方法や、ASP.NETプログラムを使用してサーバーAのデータベースにアクセスする方法が考えられます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 両方データベースなら普通に読み書きできるでしょう。 ASP.NET -> MySQLはMyODBCを使ってODBC接続で充分でしょう。 Perl -> SQLServerは以下のURLが参考になると思います。 http://www.augustus.to/blog/3128/archives/000046.html >その入力データをとりあえずAのDBに保存しておいて ここでAのDBに保存しておく理由は何でしょう?要/不要がわかっているのならAから直接BのDBに書き込めばいいのでは? とりあえず、公開サーバと内部サーバを通信させるにはファイアウォールの設定(DBで通信するための穴を開ける)すれば大丈夫でしょう。
その他の回答 (2)
- t_nojiri
- ベストアンサー率28% (595/2071)
Bonjinさんの回答通り出来ますが、Orange-LLさんの説明では、アパッチとかIISを介入させる理由が全く有りません。 HTTPのプロトコルを利用して、ブラウザでデータを入力させるフォームを表示させ、DBに入力前にブラウザでチェックするcgiやASPを作るとかという理由なら判るのですが、この説明でアパッチやIISを使うと行っても、クライアントは全く納得しないと思います。
補足
サーバーを2つに分けるのは、クライアントからの要求なのです。サーバーA・Bはすでに構築されているものです。 Aからやりたいことは、外部PCのブラウザでデータを入力させるときに、Bのマスターデータベースから一部のデータをひっぱって選択させたいのと、その入力データをとりあえずAのDBに保存しておいて、イントラネットでBにつながっているマシンから必要なものをAのDBからBのDBに移動したいのです。 よろしくお願いします。
- Bonjin
- ベストアンサー率43% (418/971)
結論から言えば両方可能です。 1はPerlのデータベースモジュールを使って接続すればいいのでは?データベースとアプリケーション(CGI)の間にアプリケーション(ASP.NET)を挟むなんていう恐ろしいことは考えない方がいいですよ。 データベースにアクセスするには、たいていの言語でモジュールなりライブラリが用意されています。 2はA上のファイルをNFSで公開し、BにNFSクライアントを入れればできそうですね。またはFTPによるダウンロードとアップロードで実現。 ちなみになぜAとBが相互的にデータを参照しているのでしょうか? AにあるデータとBにあるデータベースの内容が互いに影響あるものならばデータの整合性が保てないと思うのですが? どちらにしろ根本的に問題がありそうな記がします。
補足
ご回答ありがとうございます。 A上のファイルとあるのですが、データベースはファイルではもっていないのです。ちなみにAのデータベースはmysql、BはMicrosoft SQL Server 2000です。 サーバーBをイントラネットではなく公開できればBで一括管理できて良いのですが、関係者がそれを拒否していまして、でもBにあるマスターデータをAから読みたいという希望があるのです。問題はデータの漏洩とかなりすましアクセス?だと思うので、このあたりがクリアできればいいのですが。
お礼
データはサーバBで管理することになりました。 教えていただいたURL、大変参考になりました。 ありがとうございました。