2009-07-15 5 views
3

現在、.net WebサービスへのAjax呼び出しを使用しています。このサービスは、Jsonオブジェクトをクライアントに返します。これらのJsonオブジェクトの中にはかなり大量(> 500kの非圧縮)のものがあります。私たちはGoogleプロトコルバッファーに関するいくつかの良いことを聞いて、実験してきました。Googleプロトコルバッファまたは.net/javascriptに似たもの

これまでのところ、最も一般的な.netバージョン - "protobuf-net"のようなもので、サーバー上でシリアル化を行ってきました。私たちはクライアントでデシリアライズすることはあまりありませんでした。私たちは、javascriptデシリアライザprotobuf.jsだけであると思われるものを使用しようとしました。使用するのは簡単ではなく、例やドキュメントがほとんどなく、文字列やintを超えたデータ型を扱うようには見えません。

この時点では、.netとWebクライアント間のバイナリデータのシリアル化/非直列化のための実績のある明確なソリューションがあるようです。多分私たちは明らかなものを見逃しています。

私たちの要件は、クライアントからのAjax呼び出しと、サーバー上の.net Webサービスメソッド(.asmxまたはWCF)です。

ご意見やご提案がありがとうございます。

答えて

5

クライアントがjavascriptの場合、私はあなたが苦労すると思います。あなたが述べたように、のjavascriptの範囲に限定されていますが、それはあなたに多くの利益をもたらすかどうかはわかりません。 quote from Kenton Vardaに(本当に知っているProtobuf):JavaScriptと いるProtobufと

一つの問題は、あなたがメッセージを解析するために サポートコードの多くを必要とするということです。 のものが前後に送信されない限り、 ユーザーはJS protobufコーデック ライブラリをダウンロードするとネット損失になることがあります。 ブラウザには、既に が組み込まれているため、JSONまたはXMLを使用する方が、 の方がよいでしょう。

前記、私はGoogleの内部 様々な人々が は、しばらくの間はJavaScript +プロトコル バッファを果たしていると我々は十分に機能何も を終わる場合、 は、我々はそれを解放と思います。

多分、道路の下に希望があります。今のところ私はjson + deflateに固執していますか、シナリオが許せば、おそらくクライアントに埋め込まれたSilverlightアプレットを使うことができますか? protobuf-netはSilverlightの内部で動作します。

0

前述のように、javascriptのバイナリプロトコルを使用することは問題です。いくつかの具体的に厄介な側面がある:

JSONまたはXMLのネイティブサポートと比較して、パフォーマンスが非常に遅くなることはほとんどありません。

関連する問題