sobota, 14 września 2013

ASP.NET AJAX endpoint

Aplikacje korzystające z JSONa i Ajaxa na dobre zagościły w internecie. Strony, które nie posiadają ułamka interaktywności znanego z aplikacji desktopowych - przechodzą do lamusa. W ich miejsce wchodzą w pełni interaktywne witryny korzystające z HTML 5 oraz mnóstwa JavaScript-u.
Aby serwis WCF mógł obsługiwać zapytania od klientów AJAX-owych należy dodać do endpointa WebScriptEnablingBehavior. Klasa ta niesie za sobą następujące konsekwencje:
  • JSON jako domyślny format wysyłania wiadomości
  • możliwość wywoływania zapytań Ajaxowych na operacjach serwisu
  • operacje nie trzeba dekorować atrybutami WebGet lub WebInvoke
Aby ułatwić sobie pracę można skonfigurować plik svc i dodać odwołanie do WebScriptServiceHostFactory. Dzięki temu odpowiedni endpoint zostanie dodany do serwisu.
Przykład:

Code:
<%@ ServiceHost Language="C#" Debug="true" Service="JsonService.Service1" CodeBehind="Service1.svc.cs" Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"%>

Powyższy trik zadziała w przypadku hostowania aplikacji na IIS.
Niestety udostępnianie serwisu w powyższej postaci ma też swoje wady. W przypadku wystąpienia błędu zostanie zawsze zwrócony błąd HTTP 400 - można to oczywiście pominąć i odpowiedni opakować zwracany błąd. Ponadto w przypadku przekazywania parametrów - UriTemplate nie pozwala na przekazanie tablic.

Pomimo ograniczeń zastosowanie powyższego udogodnienia pozwala na szybkie postawienie serwisu mogącego być konsumowanym przez klientów ASP.NET Ajax.

Brak komentarzy:

Prześlij komentarz