0

次のことを行う .NET で記述されたクライアント サーバー アプリケーションが必要です。

  • サーバーは Linux を実行しています
  • サーバーには、ドキュメント URL を含む SQL データベース (mySQL) があります。

必要なもの: - サーバー側は定期的にすべての URL をクロールし、それらの全文インデックスを作成します - クライアント側は GUI を使用してこのインデックスにクエリを実行できます

クライアント アプリケーションは、C# を使用して .NET で記述されています。ドキュメントの検索以外にも、ここでは説明されていない、クライアント側で非常にうまく行われる多くのことを行うことができます。

サーバー側にもC#を使いたいと思っていますが、この分野での経験はありません。このようなことは通常どのように行われますか?


いくつかの回答に基づいて質問を明確にする:

私にとって最も不明確なことは、クライアントとサーバーの通信が通常どのように処理されるかです。クライアントとサーバーは通常ソケットを使用しており、IP アドレス、ポート、NAT トラバーサルなどの詳細を気にしていますか? それとも、これを透過的にし、クライアントとサーバーのメッセージングまたはプロシージャーの呼び出しを容易にする共通のフレームワークとパターンがいくつかありますか? これの例や良い出発点はありますか? 複数のクライアントに同時にサーバーを提供するために単一のサーバーが必要であるという事実を処理するための一般的な手法はありますか?

4

5 に答える 5

1

多くの人がすでに言及しているように、あなたがあなたに苦痛を引き起こすだろうとあなたが言及した多くのことがあります。それらについては説明しませんが、代わりに、コミュニケーションに関する最初の質問に答えます。

この種のコミュニケーションで現在人気のある選択肢はWebサービスです。これらを使用すると、HTTPプロトコルを使用してリモート呼び出しを行い、要求と応答をXMLでエンコードできます。この方法には批評家がいますが、起動して実行するのは非常に簡単で、ほぼすべてのアプリケーションで正常に機能することがわかりました。

.NET Frameworkには、クライアントから確実に呼び出すことができるWebサービスのサポートが組み込まれています。monoのWebサイトをざっと見てみると、Webサービスもサポートされていることがわかります。したがって、サーバーをC#で記述し、monoで実行することは問題ありません。「C#Webサービスチュートリアル」のグーグルは、開始方法に関する情報を持っている多くのサイトを示しています。これらの結果からランダムに選択します。

http://www.codeguru.com/Csharp/Csharp/cs_webservices/tutorials/article.php/c5477

于 2010-01-26T13:04:34.973 に答える
1

Linux で c# を使用するには、 Monoを使用する必要があります。これは、CLR 仕様のオープン ソース実装です。

次に、サーバーとクライアント間の通信方法を決定する必要があります。TCP/IP ソケットを開いてビットを上下に送信するだけの最低レベルから、.Net リモート処理、WCF、サーバーでの Web サービスの公開までです。mono での WCF の実装がどのように完了しているかわかりません。また、mono と MS .Net 間のバイナリ リモーティングに問題があると思います。

RPC スタイルの Web サービスが非常に優れたソリューションを提供することをお勧めします。WebServices には、他のプラットフォームのクライアントが簡単に接続できるという利点もあります。

編集 質問の明確化に応えて。サーバーとクライアントの両方で c# を使用する場合は、サーバーで mono/ASP.NET/WebServices を使用することをお勧めします。

私が立てた 1 つの前提は、すべてのメッセージがクライアントによって開始されるクライアント プル モデルを実行できるということです。別のアプローチを使用すると、サーバーがイベントをクライアントにプッシュできる可能性があります。クライアントが定期的にサーバーをポールする能力を持っていることを考えると、私はこれを大きな欠点とは考えていませんが、開発しているアプリケーションのタイプに依存する可能性があります.

Mono を使用すると、Linux ボックスで c# (IL にコンパイル) を実行できます。Mono ASP.NET を使用すると、標準の ASP.NET を使用して Apache に統合できます。http://www.mono-project.com/ASP.NETを参照してください。最後に、WebServices を使用すると、クライアントとクライアントの間で強く型付けされた方法で堅牢に通信できます。あなたのサーバー。

このアプローチを使用すると、明確化で提起された問題のほとんどが否定され、他の誰かの問題になります。
Sockets/SSL - クライアントでは標準の .Net ランタイム、サーバーでは Apache によって処理されます。
IP アドレス/ポート/NAT トラバーサル- すべて処理されます。DNS ルックアップは、サーバーの IP を取得します。ソケットを開くと、サーバーはファイアウォールと NAT セットアップを介して応答できます。
複数のクライアント- Apache は、ASP.NET と同様に複数のクライアントの処理を同時に処理するように構築されているため、そこで問題が発生することはありません。

于 2010-01-26T10:01:01.293 に答える
0

別のアプローチ:ここで説明されているように、Apache 用の Mod_AspDotNet モジュールを使用します。

于 2010-01-26T10:05:14.060 に答える
0

このC# の基本的なクライアント/サーバー チャット アプリケーションは、私の出発点となるような例のように見えます。関連する .NET クラスはTcpClientTcpListener です

于 2010-01-26T12:10:12.867 に答える
0

Grasshopperをご覧ください: 「Grasshopper を使用すると、Microsoft® のお気に入りの開発環境を使用して、Linux などの Java 対応プラットフォームにアプリケーションをデプロイできます」

またはこちらをご覧ください

アイデアは、アプリを Java に変換してから、Tomcat または JBoss で実行することです。

于 2010-01-26T10:04:01.813 に答える