2008-12-08 12 views
17

W środowisku ASP.NET MVC często używany jest kod AJAX (np. JQuery) w celu wywołania usługi internetowej z serwera bez konieczności odświeżania strony. To naturalne, aby usługa RESTful działała. Wygląda na to, że istnieją dwa sposoby. Po pierwsze, identyfikatory URI ASP.NET MVC są restrykcyjne, bardzo łatwo można uczynić część kontrolera/działania jako metodę usługi internetowej. Po drugie, WCF może być RESTful od wersji 3.5.Który wybrać: ASP.NET MVC lub RESTful WCF?

Jakie są więc plusy i minusy tych dwóch sposobów?

Żądania dla programu ASP.NET MVC będą przetwarzane przez potok ASP.NET. Czy to czyni wolniejszym niż WCF?

+2

WCF przechodzi również przez potok ASP.NET. –

+1

Nie, nie ma. –

Odpowiedz

12

Jeśli już używasz ASP.Net MVC dla reszty strony, przypuszczam, że sensowne jest używanie tego samego interfejsu dla wywołań AJAX.

Jeśli chodzi o potoki ASP.Net, zakładam, że martwisz się o całą stronę Lifecycle. Cykl życia strony jest wykonywany tylko wtedy, gdy używasz widoków z WebFormViewEngine. Framework zapewnia JsonResult dla łatwej serializacji JSON akcji, która całkowicie pomija cykl życia stron ASP.Net. Podobne klasy są dostępne dla XML, RSS, itp.

3

Musisz rozróżniać połączenia AJAX od API REST w tym sensie, że wywołania AJAX są tworzone w kontekście Twojej aplikacji i mogą polegać na kontekście aplikacji dla takich rzeczy jak sesja, uwierzytelnianie itp. Interfejs API usług REST to zestaw interfejsów API, które można udostępnić całemu światu - ponieważ może on polegać na aplikacji do takich celów, jak uwierzytelnianie, przynosi zupełnie nową komplikację w zabezpieczaniu połączeń od klientów itp.

Jeśli potrzebujesz tylko JS aplikacji, aby porozmawiać z serwerem, a używanie kontrolerów MVC jest najprostszym prostym rozwiązaniem.

Jeśli chcesz, aby te interfejsy API były oddzielone od kodu witryny MVC witryny sieci Web (do celów wdrażania itp.) Lub jeśli potrzebujesz interfejsu API REST, aby inni mogli go użyć do wywoływania Twojej aplikacji - WCF.

0

Dodatkową zaletą stosu WCF jest możliwość eksponowania wszystkich interfejsów potrzebnych do CRUD i eksploracji danych w postaci kilku kliknięć myszy przy użyciu usług danych WCF/ODATA (spec, demo), pod warunkiem, że masz zaimplementowaną warstwę danych przy użyciu Struktura Entity.

Zastanawiam się nad połączeniem tych podstawowych interfejsów RAD z dodatkową warstwą bardziej złożonych, transakcyjnych usług zbudowanych przy użyciu zwykłego MVC. Ta kombinacja nie wydaje się zbyt elegancka, ale pod względem wydajności może być korzystna.

Powiązane problemy