Wow wow wow. Они все разделяют одну БД? Если это так, нет, нет и нет. Если БД НЕ является общим, то это определенно DLL.
Правильный выбор - веб-сервис. Причина очень проста.
1) Консистенция модели домена и бизнес-логики. Допустим, вы сохранили перечисление в столбце, и вы добавили перечисление и развернули его в одно приложение. Теперь он нарушит два других приложения.
2) Простота развертывания. Одно изменение = одно развертывание. Если это dll, одно изменение = 3 развертывается.
3) Операции БД и контроль параллелизма. Гораздо проще разрешить его в одном домене приложения.
Что касается минусов, предложенных другими, я считаю их слишком частичными.
1) Сложность при отладке через домен приложения. Вы должны опубликовать возможные исключения через WSDL как исключения ошибок. Вызывающий клиент должен соответствующим образом обрабатывать эти исключения ошибок. Также невероятно легко настроить модульные тесты и издеваться над вызывающим клиентом и сервером. Точка останова - это не правильный способ отладки и работы с распределенными приложениями. Вы можете, и это не сложно. Я просто не считаю, что это правильный подход.
2) Производительность. WCF позволяет вам устанавливать различные привязки через конфигурацию.От базового http (который легче отлаживать) вплоть до именованного канала, который вы можете использовать для получения производительности, близкой к локальной. Это решение может (почти. Есть несколько причуд с различными связями, которые необходимо учитывать.) Также следует решить после разработки.
3) Безопасность. Говорить, что WCF не справляется с безопасностью, это смешно неправильно.
Наконец, реальные минусы от меня:
1) Более сложный. Согласовано. Разный контекст затрудняет разработку приложения. Это происходит двумя способами. Эта сложность обеспечивает четкое разделение уровней. Контекст презентации должен оставаться там, где они есть, на уровне презентации.
2) Требовать больше планирования. Конструирование контрактов для веб-служб WCF - это само по себе.
3) Накладные расходы на управление для конфигурации. Может быть сложной для новых разработчиков, но я надеюсь, что вы сможете преодолеть это препятствие быстро. Конфигурация WCF - это обоюдоострый меч, мощный, но сложный (для некоторых).
Мой личный опыт заключается в том, что в любое время, когда БД разделяется, а DLL используется для нескольких доменов приложений, я сожалею о том, что я не забил команду разработчиков достаточно, чтобы перейти с помощью веб-сервиса.
Итак, каково было ваше окончательное решение? Прошло уже четыре года.
Я думаю, что настало время опубликовать вопрос. Просто взгляните на этот похожий вопрос, и ответом будет веб-сервис. http://stackoverflow.com/questions/7877916/web-service-vs-dll-pros-and-cons –
Да, это немного некро. В то время WCF не было проблемой. DLL была тем, как мы пошли, и приложение было счастливо в производстве в течение 4 лет! –