Ответ 1
Я изначально начал ServiceStack из-за неэффективности (разработки и времени выполнения) и трений, возникающих при создании веб-сервисов с использованием альтернативных .NET-фреймворков.
3-4x Более быстрая сериализация Json, чем MVC
ServiceStack имеет сильную фокусную производительность, так как мы считаем он обеспечивает лучший конечный пользовательский UX, поэтому он встроен с сильный набор поставщиков кэширования, включая самый быстрый JSON Serializer для .NET - в 3-4 раза быстрее, чем сериализаторы, поставляемые с .NET и MVC (его JavaScriptSerializer по умолчанию является самым медленным в .NET). Для максимальной производительности там не используется отображение времени выполнения или регулярные выражения. Он использует интеллектуальное нелинейное сопоставление маршрутов, и вам рекомендуется использовать гораздо более быстрые встроенные провайдеры кэширования для работы с низкой производительностью сеанса ASP.NET.
Ориентация на типизированную, итеративную, кодовую разработку
ServiceStack позволяет разрабатывать сильные веб-службы, продвигающие лучшие практики из коробки, используя минимальный объем кода и автоматически без любого кода, config, pre/post build-steps и т.д.
Пример простой службы Hello World:
public class Hello { public string Name { get; set; } }
public class HelloResponse { public string Result { get; set; } }
public class HelloService : IService
{
public object Get(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
Только с этими классами все ваши веб-службы автоматически становятся доступными в различных форматах (JSON, XML, JSV, CSV, SOAP), все из готовых с нулевым усилием.
Пример сильного типизированного клиентского API с помощью С#:
var client = new JsonServiceClient("http://localhost/Service");
var response = client.Send<HelloResponse>(new Hello { Name = "World!" });
Пример JavaScript с помощью jQuery:
$.getJSON("http://localhost/Service/hello/World!", function(r) {
console.log(r.Result);
});
Разработка дружественных
Поскольку визуализация веб-сервисов важна при итеративном развитии веб-сервисов, по умолчанию Content-Type при просмотре веб-сервисов в браузере является дружественным человеком JSON HTML5 Report (также доступен автономно в http://ajaxstack.com/jsonreport/), который позволяет вам мгновенно визуализировать ответ ваших веб-сервисов.
Вы также получаете автоматически создаваемую страницу метаданных (которую вы можете аннотировать своим собственным описанием), которая служит отличным способом документировать ваш API веб-сервисов.
Но что, если они решили остановиться Развитие
Как создатель ServiceStack, я не вижу, чтобы я отказывался от развития в обозримом будущем. Я строю системы с ним ежедневно просто потому, что я нахожу это более чистой, быстрой и более продуктивной основой для разработки.
Продвигает лучшие практики
Существует очень немного инфраструктур веб-служб .NET, которые рекламируют DTO-первую основанную на сообщениях архитектуру, позволяющую Шаблон интерфейса службы - Лучшая практика веб-сервисов, обычно встречающаяся в экосистеме Java, что позволяет легко создавать полнофункциональные веб-службы с крупными зернами на основе SOA.
Существует 0 риск, он будет оставлен в пользу другой платформы веб-сервисов .NET. Просто потому, что мы не считаем, что какая-либо другая платформа .NET активно продвигает лучшие практики веб-сервисов (т.е. Шаблоны DTO/Remote Façade и Service Interface) и основное внимание уделяется производительности.
Но даже если проект с открытым исходным кодом содержит почти 20 участников, этот страх смягчается. Сколько проприетарных фреймворков с закрытым исходным кодом отказало MS и заставили всех перейти на преемника? Программное обеспечение с открытым исходным кодом развивается, оно не забрасывается и переписывается.
Весь исходный код для ServiceStack находится под http://github.com/ServiceStack отсутствует блокировка, и GitHub упрощает для любого пользователя вилку и продолжать развитие, как уже многие уже сделали.
Работает везде
Наконец, ServiceStack может работать на любом узле ASP.NET в IIS 6/7 в Windows или Linux/OSX с использованием Mono. Он также поддерживает автономный хост HttpListener, позволяющий запускать его без веб-сервера, то есть встроенного в любое приложение консоли или Windows, внутри службы Windows и даже размещен внутри приложения iPhone MonoTouch.