Какое определение протокола Вы рекомендуете? Я оценил буферы протокола Google, но это не позволяет мне управлять размещением полей в создаваемом пакете. Я предполагаю, что то же верно для Экономии. Мои требования:
Спасибо.
("Разновидность" на SourceForge, используемой для определения MPEG-4, могла бы быть кандидатом, но я ищу что-то, что, кажется, имеет больше сообщества и предпочтительно работает в среде.NET.)
Я был бы заинтересован по причинам ваших требований. Зачем вам нужно контролировать положение полей? Почему билетные поля важны? Условные условные
Похоже, у вас есть (более или менее) фиксированный формат проволоки, для которого необходимо написать парсер, и в этом случае ни один из существующих форматов популярного протокола / сериализации (Protobufs, roomift, Json, Yaml и т. Д. .) Буду работать для вас.
А несколько неортодоксальный подход - использовать Erlang или Haskell , оба из которых имеют хорошую поддержку разборных бинарных протоколов .
Как насчет самого C#?
например
class MySimplePDLData {
// format: name (or blank if padding), bit length, value (or blank if data),
// name of presence flag field (or blank if no presence flag), C# type
// one packet type per string, fields separated by pipes (|)
string[] pdl = {
// MY-SIMPLE-PDL-START
",8,0xf8,|version,8,,Int32|type,8,,Int32|id1,64,,Int64",
...
// MY-SIMPLE-PDL-END
};
}
Если данные уже находятся в памяти, то вводить их в формат файла не нужно. Отсюда вы можете либо динамически интерпретировать пакеты, либо сгенерировать необходимый исходный код на C# для распознавания пакетов/пакета/распаковки, опять же используя сам C#.