Tworzymy aplikację internetową ASP.Net, która jest hostowana w sieci wewnętrznej. Obecnie mamy kilka stron ASPX, które obsługują żądania sieciowe od strony klienta i współdziałają z naszymi serwerami. Rozpoczynamy prace nad kolejną główną wersją aplikacji i decydujemy o architekturze.Web Service VS. Strony Aspx: Wady i zalety
Jakie są różnice między używaniem stron ASPX do obsługi żądań HTTP w porównaniu do korzystania z pełnowartościowego serwisu WWW (który najprawdopodobniej byłby usługą WCF)?
Podczas badania tego problemu natknąłem się na kilka powiązanych ze sobą postów, które były umiarkowanie pomocne, można je zobaczyć pod numerami here i here. Moje rozumienie niektórych kluczowych różnic jest następujące:
- Strony ASPX są ograniczone pod względem rodzajów żądań, które mogą otrzymać. Są to ściśle HTTP, podczas gdy usługa WCF może mieć wiele punktów końcowych do obsługi różnych protokołów (HTTP, TCP, itp.).
- Usługi WCF są konkretniej zdefiniowane dzięki ServiceContracts. Oznacza to, że jeśli projekt odwołuje się do usługi, wie dokładnie, czego się spodziewać w zakresie metod, użycia i dokumentacji. Strona ASPX jest bardziej bezpłatna dla wszystkich pod względem zawartych w niej metod i zaakceptowanych żądań.
Jednak na podstawie tych pojęć, moje problemy są następujące:
- Możliwość obsługiwać różne protokoły to wspaniała cecha z punktu widzenia przyszłej korekty i zgodności, ale to, co realne korzyści są widzimy jeśli obecnie używamy do interakcji przez HTTP?
- Zgodnie z moim poprzednim argumentem, jeśli tylko wchodzimy w interakcję z usługą w sieci, czy któryś z tych punktów rzeczywiście ma znaczenie? Żądanie http nie dba o żadne z tych drobniejszych szczegółów ani gwarancje kontraktowe, o ile metoda, którą nazywa "po prostu działa".
Czy jest coś, czego mi brakuje? Jakieś kluczowe korzyści z korzystania z usługi? Osobiście wspieram architekturę Web Service. Podoba mi się pomysł posiadania elastycznego i dobrze zdefiniowanego systemu, który może wspierać przyszły rozwój. To, co zasadniczo zamierzam wydostać z tego, to sposób na to, aby udać się do współpracownika i powiedzieć "Powinno to być usługa dla powodów x y z, a mogliśmy zobaczyć ulepszenia b c do tego".
Ów prawdziwy. Metody serializacji WCF mają działać szybciej niż usługa sieciowa ASMX, prawda? – yourbuddypal
Meh. Być może trochę, ale wątpię, aby wąskie gardło wydajności każdej usługi internetowej było wyborem użycia raczej ASMX niż WCF. Kary za wydajność w architekturze usług sieciowych są prawie zawsze spowodowane interfejsami chatty i/lub bardzo dużymi wykresami obiektów/obiektów. Sam fakt, że wykonujesz zdalne wywołanie do usługi sieciowej, sprawia, że różnica w szybkości WCF vs. asmx jest nieistotna w większości przypadków. WCF jest bardziej elastyczny w projektowaniu, co jest ważnym powodem do wyboru. –
Re: serializery, funkcja DataContractJsonSerializer WCF jest w rzeczywistości mniej elastyczna niż domyślny moduł JavaScriptSerializer ASMX. JSS będzie akceptować daty i wyliczenia jako łańcuchy, ale DCJS nie będzie.To szczególnie żmudne/kłopotliwe, jeśli chodzi o daty. –