私は、C言語での実装を対象とし、それぞれ次のようなCスタイルで定義されたネットワークプロトコル仕様を使用してきました。
struct some_header {
uint8_t version;
uint8_t type;
uint16_t length;
uint32_t id; /
};
struct some_struct {
struct some_header header;
uint8_t field1;
uint8_t pad[3]; /* Pad to 32 bits */
uint32_t field2;
};
仕様で定義されている「some_struct」のような構造体は約100あります。
ここでの目標は、C#で定義を複製し、それらの構造の周りで機能を拡張することです。
上記の例のような構造をオブジェクトとして表現するのが良いと仮定して、C#で使用するのに最適なプリミティブは何ですか?
安全でない句を使用してCのような定義を複製してから、すべての構造体のクラスラッパーを使用します
StructLayout属性を使用して、管理対象構造内のレイアウトをガイドし、そのような構造ごとにラッパークラスを使用します
本格的なクラスを使用し、メモリまたはネットワークストリームを使用したワイヤ表現のみに進みます
マネージC++以外のアイデアはありますか?
第二に、明らかに、タスク自体は非常に労働集約的であり、リストされているいずれの場合でもエラーが発生しやすいです。Cヘッダーを上記のソリューションの1つに変換するのに役立つ自動化はありますか?誰かお勧めしてもらえますか?
UPD。
問題をよりよく説明するためのいくつかの図面。
(BoxA)--- TCP / IP上で実行されるワイヤプロトコル---(BoxB)
BoxAが純粋なCで記述されたコードを実行すると仮定すると、BoxBはC#で記述されたコードを実行する必要があります。
そして、ワイヤープロトコルは、BoxAとBoxBを通信するための100以上の構造を持つこの巨大な仕様を表しています。プロトコルがGoogleProtocolBuffersまたはApacheThriftで定義されていれば、はるかに簡単だったかもしれませんが、残念ながら、私はそのまま定義された標準を扱っています。