問題タブ [protobuf-csharp-port]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - プロトコルバッファと列挙型の組み合わせ?
これは私のprotoファイルです:
私のC#では、次のことを試みています:
しかし、JAVAは私に教えてくれます:MsgCodeがありません(これはですrequired
)
組み合わせを削除する -それを解決します
しかし、組み合わせを指定する必要があります
質問
どうすれば解決できますか?
注意:
奇妙なことに、msg
複数の enum を作成して設定し、それを C# で再度読み取ると、動作します...:-(
c# - protobuf-csharp-port でメッセージ タイプを検出することは可能ですか?
Java クライアントは、次のスケルトンに従ってメッセージを構築します。
このメッセージは C# プログラム (サーバー側) に送信されます。
サーバーはバイトの読み取り方法を認識しています (最初のバイトは読み取るバイト数で、次のメッセージのサイズを表します)。
これは、MSG がバイト配列によって構築されている方法です。
buffer は、ソケットから読み取ったバイト配列です。
しかし今、サーバーが稼働しているかどうかを確認するために、クライアントが「ハートビート」メッセージ( 別のメッセージ)を送信する必要がある状況にあります。(サーバーは応答する必要があります: 「はい、私は生きています」 )
もちろん、MSG
クラスに別のフィールドを追加できます。MSG
しかし、クラスにはハートビート操作のために不要なフィールドがたくさんあるため、そうしたくありません。
質問 :
サーバーは n バイトを読み取りました。MSG
これがメッセージか「ハートビート」メッセージかを知ることができる方法はありますか?
json - JSONへの.Netプロトコルバッファ、JsonFormatReaderクラスは最も外側の中括弧を処理しませんか?
protobuf-csharp-port ライブラリ ( https://code.google.com/p/protobuf-csharp-port/ )を使用して、Google Protocol Buffers の使用に取り組んでいます。Google.ProtocolBuffers.Serialization クラスにはJsonFormatReader
/JsonFormatWriter
クラスがあります。それらを使用すると、JSON ドキュメントに開始中括弧と終了中括弧を配置しません。また、開始中括弧と終了中括弧を追加すると、記述した同じドキュメントを読み取ることもできません。
たとえば、Calling
作成するもの:
解析しようとすると
使用して
私は以下を取得します:
{ } がないのはなぜですか? これは有効な JSON ですか?
c# - WCF メソッド呼び出しで Protobufs を送信するにはどうすればよいですか?
protobuf-csharp-port ランタイムを使用していくつかのファイルを作成およびコンパイルしまし.proto
た。WCF メソッド呼び出しへの応答として 1 つを返そうとしています。これが私のサービスです:
しかし、これは役に立たない「サーバーは意味のある応答を提供しませんでした」というエラーメッセージで失敗します。
別の質問への回答は、これがシリアライザーの爆撃であり、エラーメッセージを提供していない可能性があることを示唆しているため、コントラクトを次のように変更してみましたstring
:
これは正常に機能するため、Protobuf と関係があるに違いありません。
私の推測では、何らかの理由で WCF が Protobuf をシリアル化できないということです。多くの人が書いているのを見てきました[DataContract]
が、これは にのみ関連しているようですが、まったく同じように使用されていないように見えるprotobuf-net
に関する情報は見つかりませんでした。Protogenのオプションを に設定しようとしましたが、これは何も修正しません (関係ないかもしれません)。protobuf-csharp-port
[DataContract]
-code_contracts
true
では、WCF メソッド呼び出しから Protobuf オブジェクトを返すにはどうすればよいでしょうか? 明らかに、Protobufs を手動でデシリアライズすることもできますが、これは面倒なので、WCF にやってもらいたいと思っています。
WCF のシリアル化を Protobufに置き換えようとしているわけではないことに注意してください。WCF メソッド呼び出しから Protobuf オブジェクトを返したいだけです。
編集 #1:手動でセットアップしDataContractSerializer
、Protobuf をシリアル化しようとしました。Type 'Protobuf.LogEntry' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMember attribute.
コードが自動的に生成されているため、Clearly, I cannot do this.というエラーが表示されます。では、ProtoGen などを使用して、適切な属性を追加するにはどうすればよいでしょうか。
c# - C# 用の Google Protobuf 3.0.0 アセンブリ
私たちのプロジェクトでは、C++ 用の Google Protobuf をうまく使用しています。C# コードで使用するには、同じ *.proto ファイルをコンパイルする必要があります。最近のProtobuf バージョン 3.0.0-alpha-3をダウンロードしました。C# の proto2 形式のサポートを提供します。これで十分です。*.proto ファイルを正常にビルドし、*.cs ファイルを取得できます。ただし、結果の *.cs ファイルを C# プロジェクトに追加してビルドしようとすると、次のようなコンパイラ エラー"The type or namespace name 'Google' could not be found in the global namespace (are you missing an assembly reference?)"
が発生します。
現在、プロジェクト ページで利用可能なリリース ZIP に DLL などが見つかりません。C# プロジェクトに参照として含めることができます。protoc.exe といくつかの *.proto ファイルのみが存在します。私の簡単な質問は次のとおりです。これらのアセンブリはどこで入手できますか?
(注記: README ファイルの指示に従って、ソースからプロジェクトprotobuf-csharp-3.0.0-alpha-3をビルドしようとしましたが、Visual Studio 2013 Update 4 で「すぐに」ビルドできませんでした。多数のコンパイル エラー)。
javascript - Protobuf.jsでdecimal型に変換する方法
protobuf.net
やのウィンドウアプリとWebサイトのデータをやり取りしたいprotobuf.js
。protobuf.js
小数点以下の型がないことに問題があります。私を助けてください。