Вау вау вау. Они все разделяют одну БД? Если это так, то нет, нет и нет. Если БД НЕ является общей, то это определенно DLL.
Правильный выбор - веб-сервис. Причина тоже очень проста.
1) Согласованность модели предметной области и бизнес-логики. Допустим, вы храните перечисление в столбце, добавляете перечисление и развертываете в одном приложении. Теперь он сломает два других приложения.
2) Простота развертывания. Одно изменение = одно развертывание. Если это dll, одно изменение = 3 развернуть.
3) Транзакции БД и контроль параллелизма. Намного проще решить эту проблему в одном домене приложения.
Что касается минусов, предложенных другими, я нахожу их слишком частыми.
1) Трудность отладки в домене приложения. Вы должны опубликовать возможные исключения через WSDL как исключения ошибок. Вызывающий клиент также должен соответствующим образом обрабатывать эти исключения ошибок. Кроме того, невероятно легко настроить модульные тесты и макеты как для вызывающего клиента, так и для сервера. Точка останова не является правильным способом отладки и работы с распределенными приложениями. Можно и это не сложно. Я просто не верю, что это правильный подход.
2) Производительность. WCF позволяет устанавливать различные привязки через конфигурацию. От базового http (который легче отлаживать) до именованного канала, который вы можете использовать для получения почти родной производительности вызовов. Это решение может (почти. Есть несколько причуд с различным связыванием, которые вам нужно принять во внимание.) Также может быть принято после разработки.
3) Безопасность. Сказать, что WCF не занимается безопасностью, - это смешно.
Наконец, реальные минусы от меня:
1) Более сложный. Согласовано. Другой контекст делает дизайн приложения более сложным. Это идет двумя путями. Эта сложность обеспечивает четкое разделение уровней. Контекст представления должен оставаться там, где он есть, на уровне представления.
2) Требуется больше планирования. Разработка контрактов для веб-служб WCF сама по себе является искусством.
3) Затраты на управление конфигурацией. Может быть пугающим для новых разработчиков, но я надеюсь, что вы сможете быстро преодолеть это препятствие. Конфигурация WCF - это обоюдоострый меч, мощный, но сложный (для некоторых).
Мой личный опыт заключается в том, что всякий раз, когда БД используется совместно и DLL используется в нескольких доменах приложений, я сожалею, что не набрал достаточное количество команды разработчиков, чтобы идти по пути Web Services.
Так каково было ваше окончательное решение? Прошло четыре года.