サーバー間通信の手法とは?

このQ&Aのポイント
  • サーバー間通信において、外部からアクセス可能なサーバーAとイントラネット用サーバーBのデータ連携について説明します。
  • サーバーA上のcgiからサーバーBのデータベースを読み込む方法や、サーバーBのASP.NETプログラムからサーバーAのデータを読み書きする方法について解説します。
  • 具体的な手法としては、socketを使用してサーバーBのデータを取得する方法や、ASP.NETプログラムを使用してサーバーAのデータベースにアクセスする方法が考えられます。
回答を見る
  • ベストアンサー

サーバー間通信?

外部からアクセス可能なサーバーA(Linux+Apache+perl)とイントラネット用サーバーB(Windows2000+IIS+ASP.NET)があります。 1)サーバーA上にあるcgiから、サーバーBにあるデータベースのデータを読み込み。 2)サーバーBのASP.NETのプログラムからサーバーAのデータを読み書き。 この2点について可能でしょうか。可能だとしたら、どのような手法で実現できるかアドバイスいただけないでしょうか。 1)についてはなんとなくsocketを使って、サーバーBのデータ吐き出し用のASP.NETのプログラムを呼べばいいのかなと思うのですが、それで正しいでしょうか。 表現がかなり拙いかとは思いますが、どうぞよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.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で通信するための穴を開ける)すれば大丈夫でしょう。

Orange-LL
質問者

お礼

データはサーバBで管理することになりました。 教えていただいたURL、大変参考になりました。 ありがとうございました。

その他の回答 (2)

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2

Bonjinさんの回答通り出来ますが、Orange-LLさんの説明では、アパッチとかIISを介入させる理由が全く有りません。 HTTPのプロトコルを利用して、ブラウザでデータを入力させるフォームを表示させ、DBに入力前にブラウザでチェックするcgiやASPを作るとかという理由なら判るのですが、この説明でアパッチやIISを使うと行っても、クライアントは全く納得しないと思います。

Orange-LL
質問者

補足

サーバーを2つに分けるのは、クライアントからの要求なのです。サーバーA・Bはすでに構築されているものです。 Aからやりたいことは、外部PCのブラウザでデータを入力させるときに、Bのマスターデータベースから一部のデータをひっぱって選択させたいのと、その入力データをとりあえずAのDBに保存しておいて、イントラネットでBにつながっているマシンから必要なものをAのDBからBのDBに移動したいのです。 よろしくお願いします。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

結論から言えば両方可能です。 1はPerlのデータベースモジュールを使って接続すればいいのでは?データベースとアプリケーション(CGI)の間にアプリケーション(ASP.NET)を挟むなんていう恐ろしいことは考えない方がいいですよ。 データベースにアクセスするには、たいていの言語でモジュールなりライブラリが用意されています。 2はA上のファイルをNFSで公開し、BにNFSクライアントを入れればできそうですね。またはFTPによるダウンロードとアップロードで実現。 ちなみになぜAとBが相互的にデータを参照しているのでしょうか? AにあるデータとBにあるデータベースの内容が互いに影響あるものならばデータの整合性が保てないと思うのですが? どちらにしろ根本的に問題がありそうな記がします。

Orange-LL
質問者

補足

ご回答ありがとうございます。 A上のファイルとあるのですが、データベースはファイルではもっていないのです。ちなみにAのデータベースはmysql、BはMicrosoft SQL Server 2000です。 サーバーBをイントラネットではなく公開できればBで一括管理できて良いのですが、関係者がそれを拒否していまして、でもBにあるマスターデータをAから読みたいという希望があるのです。問題はデータの漏洩とかなりすましアクセス?だと思うので、このあたりがクリアできればいいのですが。

関連するQ&A

  • 異なるサーバー間の通信について

    異なる2つのサーバーがあり(A,Bとする) Aはファイヤーウォールの外側に、Bは内側にいます。 ファイヤーウォールはポート80のみが開いて、サーバーBは Aからのみ繋がるように設定されています。 Aサーバはユーザーからのデータ入力を受け付け、Bサーバーにある プログラムにデータを渡し、データベースサーバーからデータを取得し 結果を返すプログラムを書いているのですが、良い方法があればおしえてください。 サーバー環境:A:CentOS+Perl5.8.0 サーバー環境:B:CentOS+Perl5.8.0+DBI:pg+PostgreSQL8.1 となっています。 AからBに対しては、どのように値を渡せばいいのか? Bにあるスクリプトはどうやって結果を返せばいいのか? そもそもCGI(Perl)だけでこのようなことが可能なのか? 教えていただけたらと思います。 よろしくお願いいたします。

  • 複数のWWWサーバーのインストール

    現在PCを替え、XP Proffesionalを使っています。 IISを使って、ASPの練習を、しているのですが、 もともと、Perlをやり、PHPも覚えたいので、 Apacheをインストールしました。 この場合、なんとなくは予想していたのですが、 Apacheが、動きません。 複数のWWWサーバーを使うのには、どうしたらいいのでようか。 同時にスタートは、やっぱりできないのでしょうか( 片方ずつなら大丈夫?)。 IISにPHPを使ったりするのは、難しそうなので、 Apacheは、入れたいと思います。 なにか分かる人がいましたら、アドバイスお願いします。

  • IIS+ASPで実行可能なサーバと不可能なサーバがある

    現在、IISとASPを使用してアプリケーションを動かしています。 データベースにMDBファイルを使用し、データの 登録・参照・削除をASPで行っています。 都合によりIISサーバを違うPCに移し変えることになりました。 ファイルをコピーして、IISの設定を同じにしましたが、 クライアントからデータの書き込みをすると「ページを表示できません」 と出てしまいます。エラーの理由としてデータの追加を行っている ASPファイルの「(レコードセット).AddNew」の行で 「データベースまたはオブジェクトは読み取り専用なので、更新できません」 ということなのですが、今までのサーバでは動いていたファイルを そのままネットワーク経由でコピーしただけなので 修正方法がわかりませんでした。 IISの設定はあまり詳しくないので、不足している情報が あれば追記いたします。 OSは新PC・旧PCともにWindowsXP Pro(SP1)です。 ご指導よろしくお願いいたします。

  • IIS或いはwinapache?

    IISでPerlのCGIはどう設定すれば動くようになるのでしょうか? またはWindowsのapacheではVBScriptのASPは動くのでしょうか? Windows2000のWebサーバーでどちらを使うか迷っています。(WindowsのIISはあまりよくわからないので・・・) Linuxのapacheなら多少は解るのですが・・・

  • WEBサーバとDBサーバ

    お世話になっております。 WEBサーバは不特定多数が接続できる公開サーバです。 このサーバでIISを動かしASP.NETで構築するのですが、非公開のDBサーバとの通信をするわけですが、この時注意する点はないでしょうか。 イントラネットなどだと、VS2005や2008でのサーバエクスプローラで接続情報を作れますが、こういったことが公開サーバと非公開のDBサーバで間で簡単にできるものでしょうか? 実機には、まだ移せないのですが、前もってある程度予想される問題を知っておきたいので質問させて頂きました。 わかりづらい文章かとおもいますが、よろしくお願いいたします。

  • Windows Server 2008をウェブサーバにしたいのですが。

    現在、サーバ購入(同時アクセスは20人程度規模)を検討しています。 購入サーバの利用目的は、ウェブサイトの仮環境であり、最終的にはレンタルサーバ(CPIなどのレンタルサーバ)にアップロードします。 せっかくだから、Windows Server 2008で自社サーバを構築しようと考えていますが、気になる点がありましたので、質問させていただきます。 ●質問 1.IISが増えてきているとはいえ、本番用サーバは依然としてApacheが多い状況。 IISを選択するのはどうなのか? 2.Apacheを入れ直すことに関してはどうなのか? 3.Apacheの64bitで既存通りCGI(Perl,PHPなど)は動くのか? 検索したらPHPに関して微妙なコメントも見受けられました。 4.アプリケーションデータを内部ハードディスクを使い、ウェブデータはraid(raid1)の外付け(サーバとは別買)にしようと思っています。raidは内に持っていた方がよい(性能・コストパフォーマンス)のでしょうか? 本番サーバに合わせて、CentOSなどにしてしまうのが一番なのですが、 操作が苦手なので、今回はWindowsを選ぶ予定です。 購入のアドバイスなどありましたら、ぜひお声を聞かせてください。

  • 2つの異なるサーバーのDBを扱う

    現在、Visual Studio 2005(BASIC) を使って、Aのサーバー(IIS)に画像データを貯めるWebプログラムを作成しようとしています。この管理にはMDB形式のDBを使用する予定です。 ところが、このサービスを利用できるユーザーの管理は、Bのサーバー(UNIX MySQL)のDBで管理されています。 このように、Aのサーバーで動作するWebプログラムからBのサーバーのDBに接続することは可能なのでしょうか?

  • IISのサーバーを立てるときの注意点について

    少し前から自宅サーバーを開設しましたが、これで良いのかという不安が先に立ってなかなか常時電源を入れることが出来ません。と言いますのは過去ログを見てもあまりいいことが記載されていないからです。 最近では書店に行ってもあまり目にしなくなったIISコンポーネントをを使ったWindowsXPで動作させるサーバーです。 Access2003を使ったデータベースに公開するデータのみを入れておりそれらを検索できるASPを通して検索結果をクライアントに送っています。 セキュリティーはパスワードで入室するようにASPでプログラムしていますが、それ以外はトレンドマイクロのウイルスバスター2006を起動させていますが、ファイアーウオールは起動させておりません。 IISのサーバーを立てるときにどこに注意が必要かを教えていただければ幸いです。 当方はWindowsXPのサーバーは初めてですが、専用OSは高価すぎて導入に踏み切れず同時に他に転用できない事から現在の構成にしています。

  • IISでのBASIC認証

    以前Windows2000Professionalにおいて、Apache2+PHP5+MySQL4という環境でWebサーバ(イントラネット)をたてていました。 今回新サーバー導入となり、ASPも使えるようにという事でApacheからIISへ変更になりました。 PHPとMySQLもスムーズに動きましたが、多用していましたBASIC認証が出来なくなりました。IIS設定のディレクトリセキュリティで基本認証のチェックを入れましたがだめでした。認証ダイアログは出るのですが、正しく入力しても認証が失敗します。 Apacheで出来るBASIC認証はIISでは出来ないのでしょうか? phpMyAdminもBASIC認証を行っているため使う事が出来ずに困っています。 何かよい方法はないでしょうか。 よろしくお願いいたします。

  • ASPからSQLサーバへの接続について

    しばらくASPから離れておりましたので、ご教授願います。 データベースにSQLサーバ6.5を使っています。 ASPからSQLサーバに接続してデータの登録、変更、削除をしています。 その際に、ASPのソースコードに接続ユーザ名とパスワードを記述しているのですが、 これを記述しないで接続することは可能でしょうか? 可能であれば、その設定方法をお教え願います。 開発環境は以下の通りです。 Windows2000 Prof + IIS + SQL Server6.5