Построение сервисного слоя - куда идти? - PullRequest
1 голос
/ 03 мая 2011

У меня есть текущее приложение, в котором клиентское приложение ClickOnce запускает веб-сервис ASMX для получения различной информации.Работает нормально, но немного медленно.Частично проблема заключается в том, что он возвращает большие объекты, когда разбитый на SOAP превращает большой объект в безобразную путаницу XML-тегов, которые увеличивают размер полезной нагрузки на огромные факторы.

В любом случае,Чтобы исправить это, я думал переписать эту установку с использованием чего-то более легкого, используя технологии, о которых я много слышал, но никогда не использовал их больше, чем приложение "Hello World".

Так что я думал оделает REST API, который возвращает объекты JSON.Учитывая, что JSON является гораздо более компактным форматом, это должно уменьшить размер проблем с сообщениями.И, если нет чего-то, чего я не знаю, это не более интенсивно, чем SOAP XML.

Вопросы:

  1. Оправданы ли мои предположения?
  2. Какие технологии мне следует использовать для реализации REST и JSON?Я слышал о WCF Web API , но, похоже, он еще не закончен.Какие у меня варианты?
  3. Есть ли что-то противное в WCF, REST и JSON, которое я должен знать, прежде чем приступить к этому?

Ответы [ 2 ]

2 голосов
/ 03 мая 2011

REST - это архитектурный стиль, использующий HTTP, поэтому я бы порекомендовал HTTP-прослушиватель для служб.

JSON - это нотация объектов JavaScript, поэтому вам потребуется JSON-анализатор на стороне сервера.Вы можете передавать JSON прямо клиенту для ответа;MIME-тип: application / json .

Я не знаю ни о каких неприятных сюрпризах в WCF, но я не вижу ни одного для HTTP.

1 голос
/ 03 мая 2011

Вы можете использовать DataContractJsonSerializer для процесса сериализации.

Я бы не использовал WCF для создания спокойных веб-сервисов JSON.imho, вы можете сделать структуру намного лучше, если вместо этого вы используете ASP.NET MVC3.Гораздо проще следовать коду и проще создавать маршруты RESTful.

Чтобы вернуть JSON, вы просто возвращаете свою модель просмотра следующим образом (получите ее с помощью http://mydomain.com/user/view/10):

public ActionResult View(int id) 
{
    var user = _repository.Get(id);
    var viewModel = AutoMapper.Map<UserViewModel, User>(user);
    return Json(viewModel);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...