У меня есть веб-служба на стороне сервера, которая обслуживает несколько клиентов. В число клиентов входят веб-браузеры, iPhone, BlackBerry, Android и т. д. Мой вопрос в том, что мне нужно иметь возможность генерировать динамический контент для представлений этих клиентов. Будь то полноценный HTML-шаблон, HTML-фрагмент, JSON, XML и т. д. В зависимости от пользовательского агента запрашивающего клиента, веб-сервер генерирует и выводит другой шаблон «представления».
Мой вопрос: существуют ли какие-нибудь изящные рамки или стили «представления», которые можно адаптировать, которые упростят управление всеми этими сниппетами / фрагментами / полными шаблонами в какой-то упорядоченной форме? Я искал элегантный способ управления этим несметным количеством операций с клиентами, с простым обслуживанием и простой процедурой передачи разработчикам пользовательского интерфейса.






Прежде всего, вы не должны возвращать HTML через веб-сервис. IMHO, веб-сервис должен возвращать общую / независимую от клиента форму. Я бы посоветовал использовать простую веб-страницу ASPX, которая получает кучу преобразований макета XSL для некоторых клиентов.
Сделайте его настраиваемым, и вам не придется долго трогать код, даже если появятся новые клиенты или ваша визуализация изменится.
Даррел: Возможно, вы правы, если вы просто используете серверные браузеры. Но в вопросе указано несколько клиентов - среди них браузеры. XML является независимым от клиента и платформы форматом именно для этих целей. Нет необходимости заставлять других клиентов использовать формат данных, удобный для браузера и клиента. (Хотя это возможно. Но дело не в этом.) В XML и XSLT есть смысл.
Что вам нужно, так это четкое разделение между моделью и презентацией. Если вы напишете несколько общих компонентов, которые извлекают данные независимым от представления способом (модель), вы можете иметь несколько адаптеров, которые отображают выходные данные для каждой конкретной цели (представления). Вокруг есть фреймворки, которые объединяют все это в один большой пакет; Обычно они обозначаются как MVC-фреймворкs. Но вам это особо и не нужно, если вам это не по вкусу. Для большинства видов вывода вы можете использовать механизм шаблонов, который поможет вам писать представления. Для вещей, которые представляют собой больше данных - меньше представления - таких как JSON или XML и общий вывод, предназначенный для машинного потребления, вы, вероятно, использовали бы что-то еще для генерации вывода.
Мне нравятся Codeigniter и CakePHP. MVC - это то, что нужно.
Я думаю, вы ищете шаблонизатор. Я пользуюсь Smarty довольно давно, и он мне очень нравится. Это создает разделение между логикой и дизайном страниц. Все, что вам нужно сделать, это загрузить файл шаблона для пользовательского агента, который сделал запрос. В остальном логика останется прежней.
Html - это вполне допустимый медиа-тип для возврата из интерфейса REST. Микроформаты - отличный пример использования Html для предоставления машиночитаемой информации.