3

Androidアプリケーション(将来的にはWindowsEmbedded、場合によってはモノタッチのiOS)のリモートデータにアクセスするためのさまざまなオプションを調査しているので、いくつかのテストを行い、何が可能で何が不可能かを理解しようとしています。

私はすでにrawソケットを使用するclient(WindowsCE)/ server(win32)ソリューションを持っています。サーバーを.NETで書き直し、通信のためにWCFを試してみたいと思います。単純なWCF.NETサーバーアプリケーションを作成し、AndroidでbasicHTTPBindingを使用して接続すると、動作します。しかし、パフォーマンス上の理由から、TCPBindingを使用したいのですが、svcutilなどでスタックし、それができないのか、それとも不可能なのかがわかりません。WCFは完全に、部分的に、Android用のモノラルで完全にサポートされる予定ですか?

答えが「いいえ」で、WCFでバイナリTCPバインディングを使用できない場合、ServiceStackに移行する利点は何でしょうか(まだテストされていませんが、WCFよりも優れていると考えられています)。

ありがとう!

4

1 に答える 1

3

私は個人的に、組み込みデバイス、特にWCFスタックを部分的にしかサポートしていないMonoでWCFを使用しようとはしませんでした。また、WCF tcpバインディングで使用されるデフォルトのバイナリシリアライザーは、実際には低速であり、ほとんどのシリアライザーよりも大きなペイロードを必要とします

ProtoBuf

  • サイズ(バイト):133,010
  • シリアル化(ミリ秒):10,769
  • DeSerialize(ms):23,511

NetDataContractSerializer(WCFバイナリ)

  • サイズ(バイト):992,203
  • シリアル化(ミリ秒):29,343
  • DeSerialize(ms):91,453

現在、ServiceStackで最高のパフォーマンスを得るには、NuGetプラグインを介して.NETの最速のバイナリ形式を有効にできます。以下を参照してください。

ServiceStackを使用することの良い点は、すべての型付きC#クライアントが同じインターフェイスを共有するため、JSON(これも高速です)のような柔軟でデバッガーに適した形式で簡単に開発でき、開発が完了したら、簡単に1つに切り替えることができます。最大のパフォーマンスを得るために、上記のバイナリ形式の

ServiceStackで計画されている将来のTCPエンドポイントサポート

ServiceStackのアーキテクチャでは複数のエンドポイントを簡単にサポートできるため、非同期ブランチをマージした後、高速TCPエンドポイントを有効にすることも計画しています。他のServiceClientと同様に透過的に機能するため、別のServiceClientを使用して簡単に切り替えることができます。

于 2012-11-23T18:25:18.393 に答える