Лучший подход для веб-приложения, возвращающего только XML? - PullRequest
1 голос
/ 02 апреля 2009

Я создаю веб-приложение, которое будет генерировать XML из базы данных на основе определенной схемы и в зависимости от определенных входных параметров (таких как даты или условия поиска), содержащихся в строке запроса.

Является ли лучший подход для написания веб-службы, которая возвращает требуемый XML, или для написания обработчика ashx, который выводит XML?

Могу ли я указать XML точно так, как я хочу в каждом случае?

Ответы [ 4 ]

2 голосов
/ 21 апреля 2009

Я бы сделал Ashx в такой ситуации. Из вашего описания это звучит как единое средство поиска, одна таблица (или ограниченная группа таблиц в одной базе данных) и относительно ограниченная область действия. Все вещи MVC, вероятно, излишни. Не переусердствуйте.

Просто создайте класс, который реализует IHttpHandler (или просто создайте общий обработчик, если вы находитесь в Visual Studio 2005 или более поздней версии), проанализируйте строку запроса, либо создайте динамическую строку SQL, либо передайте параметры в хранимую процедуру, и затем используйте XmlTextWriter для создания вывода. Вы можете указать XmlTextWriter либо на выходной поток ответа, либо на поток памяти. Я использую подход потока памяти, потому что он дает мне лучшие варианты обработки ошибок. Затем установите тип содержимого для application / xml и выполните потоковую передачу результатов.

Мне нравится этот подход, потому что он прост для понимания, прост в реализации, прост в обслуживании и дает вам полный контроль. Недостатком является то, что он тесно связан с базой данных и может быть менее гибким, чем один из подходов, основанных на инфраструктуре веб-службы, если область вашего приложения со временем увеличивается.

1 голос
/ 02 апреля 2009

Я нашел самый быстрый способ начать делать подобные вещи, особенно если это простая служба типа REST - например. Использование простого HTTP GET - это использование ASP.MVC. Как я уверен, вы прочитали, это дает вам полный контроль над HTML, но это также означает, что вы получаете полный контроль над тем, вернет ли его даже HTML. Вам даже не нужно представление, вы можете просто вернуть ContentResult.

Это немного "пустая трата" MVC, но это очень быстрый способ заставить мяч катиться. Я использовал подобный подход, но в итоге формализовал его с помощью моих собственных HttpHandler и RouteHandler, которые в основном позволяют мне в основном сопоставлять URL с фрагментом кода, почти без дополнительной настройки.

1 голос
/ 02 апреля 2009

Исходя из ответа Ch00k, в следующем блоге (нет, это не мое :-)) есть его выводы об использовании ASP.MVC и создании веб-службы Restful для возврата XML, JSON и т. Д. Может быть, это было бы полезным для вас чтением ... Ссылка на блог .

Главное, что нужно помнить, это то, что вы хотите вернуть строку xml, а не фактический тип .net XmlDocument (возможно, я неправильно понял смысл вопроса), так как в противном случае его труднее использовать с других платформ.

Надеюсь, это поможет: -)

1 голос
/ 02 апреля 2009

Рассмотрите возможность написания службы WCF в стиле REST с использованием WebHttpBinding .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...