20 września 2009, 22:04 dario Komentarze (0)

ASP.NET MVC i WebService

W obecnym projekcie nad którym pracuję potrzebuję szybko stworzyć kilka WebSerwisów, które będą rozmawiać z aplikacjami zewnętrznymi poprzez protokół SOAP. Pomyślałem, że skorzystam ze standardowej funkcjonalności dostępnej z poziomu ASP.NET. Niestety na obecną chwilę ASP.NET MVC nie posiada natywnego wsparcia dla tworzenia webserwisów.

O tworzeniu samych webserwisów nie będę się rozpisywał. Aby umożliwić działanie webserwisów poprzez pliki ASMX w aplikacji MVC w sumie nie trzeba nic robić. Dobrze jednak jest powiedzieć silnikowi MVC, aby ignorował żądania dla naszych webserwisów, dzięki czemu ich obsługą zajmie się już bezpośrednio sam IIS. Silnik MVC nie będzie się już do tego dotykał. Wystarczy tylko zdefiniować odpowiednią regułę ignorującą w tabeli routingu:

routes.IgnoreRoute("{webservices}.asmx/{*pathInfo}");

To w sumie już wszystko, ale po uruchomieniu okazało się, że webserwis nie działa. Dostałem wyjątek iż obiekt skojarzony z plikiem ASMX nie może być odnaleziony. Przeniosłem więc klasę definiującą webserwis do zewnętrznego projektu, gdzie trzymam wszystkie swoje pozostałe klasy. W projekcie webowym mam tylko same widoki (ASPX,ASCX), zaś plik ASMX  wrzuciłem do katalogu API (tak dla porządku), który utworzyłem w głównym folderze aplikacji webowej. W pliku ASMX jest tylko jedna linia kodu:

<%@ WebService Language="C#" Class="App.WebServices.Test" %>

Powyższa linia oznacza, że ten webserwis definuje obiekt Test w przestrzeni nazw App.Webservices. Wywoływanie takich webserwisów odbywa się tak samo jak w standardowej aplikacji asp.net:

http://localhost/api/test.asmx

Dlaczego przyjąłem takie rozwiązanie? Potrzebowałem czegoś na szybko, dzięki czemu otrzymam możliwość wystawienia API poprzez SOAPa. Nie mam obecnie czasu na szukanie innego rozwiązania. No, chyba, że ktoś ma jakiś błyskotliwy pomysł, w miarę szybki do zaimplementowania, który bardziej przystaje do modelu aplikacji MVC.

Tagi:

Asp.net-mvc

Komentarze zablokowane

O autorze

Dariusz Gil - projektant i programista aplikacji internetowych budowanych na platformie Microsoft w technologii ASP.NET (C#) oraz MS SQL Server. Obecnie właściciel (narazie :)) jednoosobowej firmy Softio.

Filtruj używając APML