2011-10-25 4 views
1

私はC#アプリケーション(クライアント)を持っており、サーバーを持っています。今度はサーバーが文字列であるすべての種類のメッセージを取得してクライアントに送信しますが、私はStreamWriterを使用しています。クライアントとサーバーの送信メッセージはかなり同じです。文字列をUTF-8にエンコードし、データ(メッセージ)をサーバーに送信するための最良の方法(広く受け入れられている方法)

"[email protected]@@@SOMEDATA1<><>SOMEDATA2<><>SOMEDATA3 

これは、いくつかの問題を引き起こし、と私は考えさせる:そして今

public void SendMessage(String p) 
{ 
    if (p != "") 
    { 
     string StringMessage = HttpUtility.UrlEncode(p, System.Text.Encoding.UTF8); 

     try 
     { 
      swSender.WriteLine(StringMessage); 
      swSender.Flush(); 
     } 
     catch (IOException e) 
     { 
      //do some stuff 
     } 
    } 
} 

それを送って、私が送った文字列は次のようなものです。これは大きなアプリケーションがデータを送受信する方法ですか?それはかなりばかげているので。そうでない場合、大きなアプリケーションがメッセージを送信する方法の例をいくつか提供できますか?

はまた:

if(Subject="something") 
    do something 
else if(subject="something else") 
    do something else 

がどのように私はこの問題を解決することができます:メッセージを送信する私の方法は、例えば

なら、私は、ネストされた大きな作るのですか?

+1

自己記述データを送信します。 Xml。 Soapと他の相互運用プロトコルのコーナーストーン。 WCFを検討してください。 –

+0

自己記述データはどういう意味ですか?あなたはexmapleを投稿できますか? –

答えて

3

それはすべてが大幅にアプリケーションのニーズによって異なります。
一般的に言えば:いいえ、自分のプロトコルを発明するのは良い考えではありません。

クライアントからサーバーにメッセージを送信する方法はたくさんあります。
WCFに関するいくつかの読書をすることをお勧めします。また、.NET Remotingよりも.NET 2.0の方がよいでしょう。
また、HTTPメッセージを送信することを検討したいかもしれません。そのためには、フレームワークがあります。

+2

相互運用性も要件の1つであれば、WCF Restサービスはあなたの友人です –

+0

私はmvcパターンを使用していますが、サーバーからデータを取得するWCFクライアントにモデルを接続する必要がありますか?またはWCFクライアントがモデル自体として機能するかどうか –

+0

モデルはクライアントでも何も接続していません。モデルは単にビジネスオブジェクトの定義です。あなたはそれらの間にModelオブジェクトを渡すクライアントとサーバの両方を作成する必要があります – Svarog

0

HttpUtility.HtmlEncode方法

代わりURLENCODEを(使用しようとする)

+1

私の問題を解決するにはどうすればいいですか?私はエンコーディングについて全く話していません。エンコード方法は問題ありません。私はこのようにデータを送信する必要があるとは確信できません。 –

+0

あなたの質問を正しく理解していない。 – Serghei

1

XML-RPCを使用する方法もあります。私はthis for .NETを使用しました。私はそれを変更する指示に従って、クライアント/サーバは30分以内に働き、別の10は自分の好みに合わせて修正しました。基本的には関数を通常通り呼び出すと、ライブラリの魔法によってサーバーがコードを実行するのをブロックし、結果を返します。 RPC =リモートプロシージャコール。

asp.netを使用している場合は、Linux上でfastcgiまたはapacheを使用している場合でも、IISというラベルの指示を使用してください。私は間違いだったことを無視しました。なぜなら、IISというラベルが付けられていたからです。使用可能な.NET Remotingオプション(サーバがasp.netではなく他のアプリである場合)があります。

ウェブクライアントを学び、jsonの文字列をサーバーに投稿するのは良い選択ではありません。次に、jsonとして応答を読んでください。 XML-RPCはかなり標準的であり、提案されています。

+0

私は間違っているかもしれませんが、私はクライアントからサーバー上のfucntionsを呼び出すために良いことを考えていません...とにかく私はthorughそれ。 –

+0

@BlueGene:通常、ユーザーのログイン/認証を必要とするものについては、認証機能(または長いAPIキーのパラメータ)があります。 OAuthは一般的な方法です。私は今までリモート認証を要求していませんでしたが、httpsの後ろにURLをスローすることができ、あなたはミドルアタックの盗聴/心配について心配する必要はありません。しかし、あなたが.NETと自己署名の証明書.NETを使用する場合は、文句を言うだろうし、あなたは何かをオフにする必要があります。そのためにServicePointManager.ServerCertificateValidationCallbackを検索し、常にtrueを返す関数を割り当てます。 –

関連する問題