2011-11-15 9 views
3

私は、このフィールドを少し良く理解するために、単純なサーバー/クライアントソフトウェアを公開することを楽しみにしています。全二重クライアント/サーバーソフトウェアを構築する際、どこから始めたらよいですか?

タイトル通り、全二重のクライアント/サーバーソフトウェアを構築するときに、何をどこから始めたらよいですか?

私はおそらくC#でビルドしようとしていますが、アルゴリズムや簡単な実装にもっと興味があるので、どの言語でもそれをカットします。

最後に、主にTCPの処理を対象としていますが、後で特定のデータタイプのために展開することもできます。

ありがとうございます!

+2

TCPとデータタイプは異なるものです。通信をできるだけ緩やかにするようにしてください。 TCPを使用して実装できる抽象トランスポート層を定義しますが、ディレクトリにもファイルをドロップするだけです。コンテンツについては、データをXMLまたはJSONにシリアル化できます。アプリケーションをトランスポート方法とプロトコル/データ形式の両方に少しだけ依存させることは、クライアント/サーバーとN層プログラミングの大きな課題の1つです。 – GolezTrol

+0

@GolezTrol、私はTCPとデータ型が異なることを認識しています。私は、データタイプによっては、より適切なプロトコルを探していることを意味していました。 – jolt

答えて

3

私はちょうどそのようなことを自分で構築しています.は、全二重のサーバー - クライアントイベントドリブン通信のための素晴らしいフレームワークだと思います。しかし、C#ではなくnode.jsです。一方、クライアントと同じ言語でブラウザとサーバーにクライアントを記述することができます。さらに、node.jsは "ネットワーキング権利"を特化しているので、ノンブロッキングIOのようなことも学ぶことができます。

+0

"ネットワーキング権を行使している"ということについては、引用符で囲んでおいた方が良い。誰もが正しいことをしているように見えますが、それは彼らのためだけです。 – jolt

+0

Ryan Dahl(ライアン・ダール)は、ビデオの1つで聞いたように、著者の言葉を引用しています。しかし、私はこのケースでは真実から遠くないと言っています。彼は本当にシングルスレッドのノンブロッキングioの方法を押して、多くの(すべてではない)高性能なネットワーキングアプリ(nginx)を構築しようとしていますノンブロッキングioをコアアイデアとしています。 –

2

C#/ .NETを使用している場合は、WCFを使用することをお勧めします。

このファイルは、Webサーバーでホストすることも、スタンドアロンアプリケーション内でホストすることもできます。私のほとんどは、標準的なアプリケーションを実行しています。

全二重サービスの詳細については、hereを参照してください。

これらのページには多くの情報がありますが、それはかなり広い質問です。 :)

2

WCFで始まります。

  • 新しいWindowsサービスを作成します。それがあなたのサーバーです。
  • winforms/wpf app/consoleアプリケーションを作成します。それがあなたのクライアントです。
  • サービスの中で何らかの仕事をするメソッドを作成します。
  • クライアントからこれらのメソッドを呼び出し、いくつかの結果をユーザーに出力します。
+0

クロスプラットフォームではなく、より多くのクロスオペレーティングシステム、専用のプラットフォームはどうですか? – jolt

+0

@Tom:わからない。 C#に固執してクロスプラットフォームを作りたい場合は、[Mono](http://en.wikipedia.org/wiki/Mono_%28software%29)をご覧ください。 「*専用OS」とはどういう意味ですか? – Otiel

+0

専用のOSではなく、専用のサーバーです。 – jolt

3

私は以前の回答からWCFを使用することに絶対に同意します。それは間違いなくこの相互作用のサーバー側を処理します。コードプロジェクトには、クライアントとサーバーとのやりとりに関する多くの良い例があります。 A TCP/IP Server written in C#のようなものをチェックしてください。

クロスプラットフォームに関するご質問にお答えするために、私はWCFを使用してJava、.NET、Objective-Cクライアントと接続し、対話していますので、安全だと思います。

関連する問題