Pull to refresh

Comments 36

Это что обертка в виде wcf программки над другой программкой?
Хост rest подобных подделок в wcf делается без помощи iis или asp.net.

Изобрели очередное колесо, а не новый инструмент :)
WCF здесь вообще нет

непонятно, о каких «подделках» идет речь

предлагаю вам лучше ознакомиться с предметом.
Второе впечатление от нового инструмента, после ознакомления с asp web api.
Это я как понял для asp.net программеров, которые сидят на mvc.

XaocCPS, ты бы разложил по полочкам сразу.

Суть оболочки: выдернут движок mvc & webforms и выделено в пакет.
В чем же кайф юзать это, вместо нормального wcf?

Расширить поле деятельности asp.net mvc программистов?
создание REST-сервисов на нормальном WCF излишне усложнено абстракциями и концепциями SOA.

WebAPI был создан (изначально в рамках WCF, кстати) чтобы значительно облегчить создание чистых REST-сервисов

При этом, WCF никуда не делся, это по прежнему мощнейший инструмент незаменимый для своих задач

И да, WCF естественно поддерживает self hosting, но в этой статьей речь про такую же возможность и для REST-сервисов WebAPI
то есть кто-то уже выделил такую категорию REST подделок, как REST-сервис WebAPI?
В WCF создание REST ничем не осложнено из названного выше.
Там это делается в меньшее количество букв, я бы даже сказал.

Странные тенденции…

Может все таки, чтобы mvc программеры расширили поле деятельности?
Ниже код полного restful-сервиса на WebAPI, покажите мне такой же на WCF

    public class MyApiController : ApiController
    {
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
        public string Get(int id)
        {
            return "value";
        }
        public void Post(string value)
        {
        }
        public void Put(int id, string value)
        {
        }
        public void Delete(int id)
        {
        }
    }
[ServiceContract]
public class Service
{
[OperationContract]
[WebGet]
public string EchoWithGet(string s)
{
return «You said » + s;
}
[OperationContract]
[WebInvoke]
public string EchoWithPost(string s)
{
return «You said » + s;
}
WebServiceHost host = new WebServiceHost(typeof(Service), new Uri(«localhost:8000/»));
ServiceEndpoint ep = host.AddServiceEndpoint(typeof(Service), new WebHttpBinding(), "");
host.Open();
}

можно, чтото убрать в xml конфиг, чтобы еще меньше стал код и переносимее.
да в том то и дело, что web.config там будет больше самого кода, WebAPI вообще не требует конфигурации и всех этих аттрибутов
в смысле этот код без config файла запускается :)
я имел ввиду, что можно убрать три строчки запуска в конфиг.
и тогда будет вместо
WebServiceHost host = new WebServiceHost(typeof(Service), new Uri(«localhost:8000/»));
ServiceEndpoint ep = host.AddServiceEndpoint(typeof(Service), new WebHttpBinding(), "");
host.Open();

------>будет это:

ServiceHost host = new ServiceHost(typeof(Service));
host.Open();
Притом получим, настройки через config файл.

Кстати в вашем примере, не понятно, на какой адрес будет настроено.
вот чтобы разработчикам не думать про эндпоинты, контракты, биндинги и прочее и был сделан чистый REST-инструмент WebAPI, который оперирует REST-понятиями: HTTP verbs, HTTP headers и заведомо работает поверх протокола HTTP/S
при всем уважении и безотносительно к топику — как только МС начинает что-то двигать под девизом «Чтобы разработчику не думать про....» — получается такое редкостное Г, что становится страшно.

За примером далеко ходить не надо — WebForms сделано под девизом «Чтобы разработчику не думать про весь этот Web»
мне кажется это вообще не МС двигает, а менеджерье какое то.
даже название не лаконичное.
про разработчиком на mvc полагаю все таки речь?
сознайтесь, уже.

еще с вас, более полный пример, который хоть где-то в себе прописывает адрес и порт.
и кстати, хорошо сказывается, да не так хорош размер :)
в случае webapi мы получаем дутик из движка mvc& webforms.
в wcf же, голяк. токо .net и все.
вы ошибаетесь, еще раз предлагаю вам изучить предмет обсуждения
+1
Понравилось. Спасибо. Сменил некоторые самописные велосипеды на WebAPI.
И, кстати, не только для mvc. Можно тут взять — http://aspnetwebstack.codeplex.com/ и к формам прикрутить.
кстати, к WebForms прикручивается из коробки
в примере у человека mvc все-таки установлен. Но его можно и не ставить, если нужна поддержка чисто WebAPI на формах.
Размер пакетов у меня вышел ~ 800kb
А, ну да, mvc должен быть поставлен
хорошо изучил.
в составе mvc идет.
но mvc не идет в составе .net4.

и не нужно, меня отсылать к предмету обсуждения.
можно, тут дополнять свою статью про эффективные REST подделки.
UFO just landed and posted this here
И как тут с HTTP кешированием, с аторизацией, с безпроблемным доступом ко всем полям пришедшего HTTP запроса?
Спасибо за код, понятно что много времени прошло, но в поиске проблемы для WebApi SelfHost, наткнулся на Ваш пример и решил не мелочиться и переписать сервис на более универсальное решение.
Xaoc закрой вопросы оставшиеся за тобой. А то как то повисло все на тебе.
Xaoc,

Итак, у вас появилась Идея! Надо срочно поделиться с людьми для того, чтобы они проникнулись Идеей, а не сидели во мраке невежества. Не спешите,…

Не стоит делать пост и сразу же уходить спать в счастливом неведении. Работа с читателем после написания статьи так же важна, как и сама статья.

План плох, если:

во вступлении раскрыта суть статьи и Идеи;

Я прочитав эти цитаты, задумался. Зачем же писались эти цитаты?
Помню как я мучался настраивая WCF на поддержку разнообразных RESTfull запросов. Как я пытался оперировать заголовками http запроса, внедрял поддержку jsonp запросов, занимался проблемами кеширования и выдачей результата в разных форматах (json и xml)
На WCF это было одна сплошная головная боль, не говоря о понимании кода через какое то время.
WebAPI это то что должно было появиться вместе с WCF
Кстати на счет self hosting для WebAPI это первое что мне пришло на ум после изучения WebAPI
Молодцы что так быстро заполнили этот пробел.
Kano, зачем прошлое ворошить, не зная настоящего?
Все что ты пытался тогда делать, уже сделано внутри WCF, через behaviours.
Так что webapi кхм, кхм.
Вроде я мысль правильную толкаю, расширения кругозора для mvc программистов.
Именно через behaviours я это проворачивал и еще много через что.
Все это выглядело настолько «красиво» что прям хоть не придумывай свой web api :)
А при чем тут mvc программисты?
не понимаю, как это так проворачивали через behaviours?
ведь просто ставим нужные и получаем все.
а как вы сделаете поддержку jsonp и поддержку своих http заголовков используя только стандартные behaviours?



вот так.
CrossDomainScriptAccessEnabled=true

свои http это уже совсем просто WebInvoke имеет собственно свойство в которое вписывается интересующий вас заголовок.
[WebInvoke(Method = «PUTXAOC», UriTemplate = "")]
молодцы в 4 фреймворке догадались доделать поддержку jsonp
на счет своих http заголовков это довольно скупой пример
да уже с 2010 года как.
вроде как не отставая от появления самого jsonp.
судя по статьям в инете, интерес к jsonp приходится даже на 2011 год.
точной даты нигде нету.

но вспомни:
Kano, зачем прошлое ворошить, не зная настоящего?
чтото, на хабер убогая писалка комментов, и не пропускает обычный xml.
поэтому в прыдущем посте пустота.
пишу еще раз: httpgetenabled=«true» + CrossDomainScriptAccessEnabled=true
Sign up to leave a comment.