2013-07-08 2 views
3

ПРИМЕЧАНИЕ: Это не дубликат нескольких вопросов, касающихся выбора между ServiceStack и WebAPI.Преимущества/недостатки использования сервисов ServiceStack и контроллеров ASP.NET MVC?

Я пытаюсь решить, в какой степени я хочу использовать ServiceStack в моем ASP.NET веб-приложения:

Вариант А: Перейти тотальную ServiceStack угробив контроллеров MVC и заменяя их ServiceStack на основе услуг и просмотров Razor.

Вариант B: Используйте MVC-контроллеры с поддержкой ServiceStack для повышения производительности и масштабируемости.

Явное преимущество A - это дополнительная гибкость, которая дает мне возможность структурировать мои взгляды. Тем не менее, я обеспокоен двумя вещами:

  1. Все сериализации/десериализации запрос/ответ DTO к/от Json или Xml исполнении ServiceStack обязан прийти на счет производительности по сравнению с чистым C# объектов, Контроллеры MVC.

  2. Сериализация может быть несколько шелушащейся при работе со сложными графами объектов. Например. в случаях с круговыми ссылками, например Parent.Child <-> Child.Parent, необходимо использовать атрибут IgnoreDataMember, иначе сериализация приведет к удалению стека. Кроме того, иногда десериализация может вызывать неясные ошибки «Object reference not set», которые очень трудно диагностировать.

Есть ли у кого-нибудь мысли по поводу этой дилеммы?

ответ

9

Все сериализации/десериализации запрос/ответ DTO-х в/из Json или Xml исполнении ServiceStack обязан прийти на счет производительности по сравнению с чистым C# объектов, что контроллеры MVC дело.

Это не звучит правильно, вы никогда не должны делать какие-либо ненужной сортировочной/Десериализация при использовании ServiceStack, то есть вы можете вызвать ServiceStack services directly from MVC Controllers который просто C# вызов метода.

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

Это потому, что вы должны отправлять чистые самоописывающиеся DTO на проводе, а не демпинговые модели с циклическими зависимостями.

+1

Я неправильно понял объяснения и примеры и подумал, что ServiceStack вызывает службу, используя клиент, который соответствует форматированию, указанному в AppHost. Теперь, после некоторого большего чтения, я вижу, что ошибался. –

Смежные вопросы