Для большинства проектов мы используем WCF и Service Factory. Она мне не нравится, но все равно пользуюсь: это всё же удобнее, чем писать весь код вручную.
Первая проблема: мне не нравится структура каталогов. Может быть, это можно исправить в каком-то шаблоне, но я не нашел. Поэтому после создания проекта всё переименовываю вручную. Кстати, это не только из эстетических соображений, а ещё и потому, что иногда бывают проблемы с TFS из-за длинных имен.
В Data Contract нельзя перетаскивать поля вверх-вниз. Т.е. ты можешь менять свойство Order, но на экране они всё равно видны в порядке создания, и это некрасиво. Я редактирую вручную XML-файл, чтобы с этим бороться.
Когда переименовываешь Data Contract, то старый сгенерированный класс не удаляется. Из-за этого иногда проект не собирается.
Мы используем FlagsAttribute в enums. Проблема в том, что после каждой генерации кода всё enums пересоздаются, а создать дочерний класс от enum нельзя. Удалять все enums из Data Contract diagram я не хочу, потому что потеряется наглядность. Хотелось иметь возможность отключать генерацию кода для некоторых объектов.
Все наши Message Contracts очень простые: в них только один элемент под названием Data. А в Data находится какой-то сложный Data Contract. Почему так, зачем всегда использовать лишний уровень, который ничего вроде не дает? Чтобы поддерживать разные версии интерфейса. Если в конец Data Contract добавить необязательный элемент, то это не нарушает интерфейс. Но ведь возможность версионирования есть и в Message Contracts? Есть, но, к сожалению, Service Factory её не поддерживает (нельзя отменить элемент сообщения как необязательный).
У версии 2010 года есть особенность: она автоматически переводит xml namespace в нижний регистр. Причем не во всех случаях; и это можно обмануть, если отредактировать XML вручную.
Комментариев нет:
Отправить комментарий