Вопрос слишком открытый, поэтому ответ: зависит .
Что нужно вашим приложениям для данных? Это просто доступ к данным или какая-то бизнес-логика? Если это просто доступ к данным, действительно ли вы хотите, чтобы клиент имел прямой контроль над ними? Насколько похожи эти три приложения? Они разделяют функциональность или только данные?
На мой взгляд, есть два основных пути, которые вы можете выбрать:
1 - открыть веб-сервис для бизнеса, данные которого скрыты за веб-сервисом . Это хорошая настройка, если три клиента (я назову настольное приложение, веб-приложение и сотовый телефон «клиенты», поскольку это то, чем они являются) разделяют функциональность (т. Е. Они представляют собой разные представления для одной и той же бизнес-модели). Это позволяет избежать дублирования похожей бизнес-логики на всех клиентах;
2 - предоставить данные напрямую через веб-сервис . Это хорошая настройка, если три клиента не имеют ничего общего, а просто используют одни и те же данные для разных целей. Но в этом случае, с тремя наборами бизнес-логики, куда вы собираетесь поместить логику? В клиентах? Как это будет работать для настольного приложения (учитывая, что вы устанавливаете это настольное приложение 300 раз или около того)? Вы снова нуждаетесь в некотором обслуживании, и клиенты должны быть тонкими клиентами не толстыми из них.
Если вы примете во внимание 1) и 2), вы увидите, что обычно лучше иметь слой обслуживания перед вашими данными.
Возвращаясь к вопросу "все зависит", сначала проанализируйте ваши особые потребности, а затем выберите решение, наиболее подходящее для вашей ситуации .
Как насчет точки 3 ? превратить ваш слой доступа к данным в библиотеку (.jar, .dll или любую другую технологию, которую вы используете) и сделать ее доступной (1? 2? 3?) Бизнес-веб-сервисам, которые обслуживают ваших клиентов?