質問: ネットワークプログラミングとAPIについて ネットワークプログラミングとAPIについて ネットワークプログラミングをしていて、サーバー側の作成をしてました。
回答: 下記説明は、御存知のこともあるでしょうが、説明の便宜上、順番に説明します。 [ネットとインターネットの違い] 「ネットワークプログラミング」とか「ネットゲーム」等の言葉における「ネット」とは、インターネットを指している訳ではないです。 正確に言い直せば、「ネット」と言った場合は、インターネットだけとは限らず、インターネット以外の通信方式も含みます。 つまり、「ネット」と言う場合は、インターネット関係を含みますが、それだけではなく、インターネットが普及する前から存在するTCP/IPと言う通信方式なども含みます。 すなわち、「ネット」とは、各種通信方式による通信の全般を指しています。 [非インターネット仕様の通信方式と、インターネット仕様の通信方式] <TCP/IP> インターネットが普及する前から存在する通信方式の代表的なものに、TCP/IPと言う通信方式があります。 TCP/IPと言う通信方式を使って、実際に通信プログラムを作る機能として、ソケットと言う技術機能があります。 ソケット(TCP/IP)は、もともとC言語やC++を使ってプログラミングが行なわれていました。 しかし今は、Java や C# 等々の様々なプログラミング言語で使われています。 <Http> インターネット仕様の通信方式は、何種類もありますが、代表的なものにHttpがあります。 インターネットの通信方式でのシステムを作る場合は、Java や C# 等のインターネット仕様を取り込んだプログラミング言語がよく使われます。 <インターネット系と非インターネット系の使い分け> インターネットは、広く普及していて、IT全般において主要な位置にあります。 インターネットは、各種企業や、各個人に、広く発信が行なえる通信だからです。 しかし、何でもインターネット系にすればよいとは限りません。 例えば、銀行や郵便局のシステムは、様々な人から広くアクセスされたら困ります。 どんどんと御金が盗まれてしまいます。 よって、銀行のシステム等は、非インターネット系(TCP/IP)が使われています。 [システムのエクスポート] ソケットで作る通信用プログラムでは、データー(情報)の通信だけで、関数と言った機能での通信が行なえません。 よって、サーバーの機能を実行させるには、データー(情報)にコマンド(命令)を割り振ります。 例えば、クライアントからサーバーに"RESET"と言う文章が送られてきたら、サーバー内の情報をリセットする、と言った取り決めを行ないます。 しかし、上記の作業は、大変ですので、関数と言う形で通信を行なえる機能もあります。 「分散システム」と呼ばれるものは、関数と言う形で通信が行なえます。 もともと分散システムと言うものは、名前の通り、サーバーシステムを分散させるものです。 すなわち、大規模コンピューターでは、メンテナンスが大変なので、中規模なコンピューターを複数個で分担させるものです。 しかし、ここでは、サーバーシステムを作る本格的な機能と解釈して下さい。 分散システムは、何種類もありますが、代表的なものにCORBAがあります。 CORBAは、C++やJava等の幾つかのプログラミング言語がサポートされているので、広く普及しました。 [インターネット系の分散システム] 前述のCORBAは、主にTCP/IPでの通信です。 そこで、インターネット系の分散システムの活用が可能なように、通信方式自体(プロトコル自体)が新規に作られました。 SOAPと言うプロトコルです。 SOAP は、IBM、Oracle、Microsoft 等の企業が手を組んで作られました。 SOAP は、機能を通信することも考慮された通信方式です。 なお、SOAP で、通信プログラムを作る技術機能は、「Webサービス」と言います。 2002年からスタートしましたが、一般ユーザー向けのシステムでは、普及に失敗しました。 しかし、企業向けのビジネス系システムでは、成功して、今まで成長を続けました。 ただし、2010年にOracle が、反発していたSun社を買収したことを切っ掛けに、一般向けのリベンジが始まりだしました。 このままクラウドコンピューティングの重要度が上がって来ると、インターネット系の分散システムが、主流になって行く可能性があります。 普及しなくても、今から活用したい場合は、C# でWCF と言う分散システムを使います。 もしくは、Eclipse と言う統合開発環境で、MVC と言うモデルの開発環境を使って下さい(Eclipse のMVC 開発環境は、何種類か存在します)。