[C#] Ищу минусы WCF
Пжалуйста, напишите краткое summary, чем плох WCF.Тебя устроил бы ответ "он плох всем, как и почти любой другой стандартный Framework от Microsoft, выпущенный после 2005 года"?
При ошибках сериализации просто дропается соединение.
Настройки убогие. Одни и те же вещи надо настраивать как на стороне клиента, так и на стороне сервера. Смешиваются настройки из файлов и настройки аннотациями. Ежа родить проще, чем программно сконфигурировать WCF.
Для обработки исключений приходится писать обёртки, потому что WCF приемлет только своё исключение.
Можно добиться прослушивания на одном порту, но требуется отдельное соединение на каждый сервис.
Сериализация сделана убого. Если ты передаёшь объекты между сервисами, то её надо всегда перенастраивать. По умолчанию какими-то детскими значениями ограничены глубина графа сериализации, длина строки, длина пакета. А это всё может обнаружиться только у клиентов.
Очень просто запутаться и сделать непроизводительную систему. Например, может возникнуть проблема, если клиенты удерживают соединения с сервисами. Опять же, эта проблема обычно обнаруживается уже при запуске системы в тестирование или эксплуатацию.
Что уж там, предложи и лучший аналог
Что уж там, предложи и лучший аналогобычный хттп, реализованный как in-proc сервер.
Поправь меня, если я ошибаюсь, но мне кажется, что WCF - высокоуровневый фреймворк. В качестве аналога я ожидал нечто такого же высокого уровня. Ясное дело, что написать клиент-сервер можно и на обычном http, и на сокетах.
Поправь меня, если я ошибаюсь, но мне кажется, что WCF - высокоуровневый фреймворк.
ага, он настолько высокоуровневый, что проблемы конфигурации(крайне не очевидные в попытке их разрешить!) займут достаточное время. Выше было неплохо описано, что это за проблемы.
Конечно, выбор инструмента должен зависить от задачи. Если есть задача интеграции твоего сервиса с какой либо внешней системой, на которую ты не влияешь - это один разговор.
Если же нет, то простой хттп + стандартынй фреймворк сериализации(в первом приближении те же механизмы сериализации, предлагаемые самим .нетом) будет имхо отличным вариантом.
По умолчанию она включена(виндовая авторизация). Чтобы ее отключить, нужны согласованные настройки в конфигах как клиента, так и сервера примерно в трех местах.
К описанным проблемам хочу добавить проблемы настройки безопасности.Точно, и ещё можно добавить проблемы с сессиями. Я в итоге так переплевался, что сделал руками сессии с таймаутами.
В качестве альтернативы рекомендую http и сериализацию (согласен с автором выше). Для RPC предлагаю паттерны Command в сочетании с Visitor, последний можно заменить на Relfection. Как это сделать - рекомендую изучить статьи Google по GWT.
По умолчанию она включена(виндовая авторизация). Чтобы ее отключить, нужны согласованные настройки в конфигах как клиента, так и сервера примерно в трех местах.А я не отключал виндовую (аутентификацию? мне она даже помогла.
А я не отключал виндовую (аутентификацию? мне она даже помогла.базара 0, это вполне возможно, но вот у нас падала когда лез доменный юзер. Фишка в том, что настройки там настолько сложны, что шаг влево шаг вправо - падение реквеста.
Оставить комментарий
zorin29
Пишу клиент-серверную штуку, в качестве сервера выступает WCF-сервис, живущий внутри Windows-сервиса. Пока что у меня нет никаких претензий к тому, как работает сервис. Но меня смущает тот факт, что народ ругает WCF (видел ругательства тут на форуме, и еще кое-где).Пжалуйста, напишите краткое summary, чем плох WCF.