Мой Путь:
я следую примеру, показанному в контроллере Учетной записи, который поставил с Предварительным просмотром 4 выпуска, где поле является регистрацией контроллера и если с ошибкой встречаются тогда, массив строковых ошибок на потом агрегирован выставленный в том же представлении, которое запустило запрос.
я также следовал за мыслями Stephen Walther на MVC, и я думаю , это сообщение является большим повторно заполнить поля с данными, отправленными для него, чтобы быть измененным прежде, чем отправить его снова.
, Что делает Вас, парни используют?
protobuf-net использует шаблон стратегии; по мере необходимости (только один раз для каждого типа) он использует отражение для просмотра типов и создает набор сериализаторов (на основе общего интерфейса), которые он может использовать для сериализации и десериализации - поэтому при использовании он просто проходит через известный набор сериализаторов.
Внутри он пытается разумно использовать отражение при разговоре с членами; он использует Delegate.CreateDelegate
для взаимодействия со свойствами и DynamicMethod
(и настраиваемый IL) для взаимодействия с полями (когда это возможно; это зависит от целевой структуры). Это означает, что он всегда обращается к известным типам делегатов, а не только к DynamicInvoke
(что очень медленно).
Не сходя с ума, в коде есть некоторые оптимизации (возможно, за счет удобства чтения) с точки зрения:
байта []
буферизации (входных / выходных потоков) Оглядываясь назад, я думаю, что сделал ошибку в отношении дженериков; сложность означала, что внедрение универсальных шаблонов в систему исказило ее форму в нескольких местах и активно вызывает некоторые серьезные проблемы (для сложных моделей) в компактной структуре .
I есть несколько проектов (только в моей голове) для рефакторинга этого с использованием не -общих интерфейсов, и вместо этого (для подходящих фреймворков) больше использовать ILGenerator
(моим первым выбором было бы Expression
, но это требует более высокой версии фреймворка). Проблема, однако, в том, что на это уйдет много времени, и до недавнего времени я был изрядно завален .
Недавно мне удалось Снова начну тратить время на protobuf-net , так что, надеюсь, я очищу накопившиеся запросы и т.д. и скоро приступлю к этому. Я также намерен заставить его работать с моделями , отличными , кроме отражения (т.е. описывая отображение проводов отдельно).
и не генерируя никакого сгенерированного кода
Я также должен уточнить, что есть два (необязательных) маршрута кодогенерации, если вы хотите использовать сгенерированный код; protogen.exe, или надстройка VS , позволяющая генерировать код из файла .proto. Но в этом нет необходимости - это полезно, в основном, если у вас есть существующий файл .proto или вы собираетесь взаимодействовать с другим языком (C ++ и т. Д.) Для разработки по контракту.