[ASP.NET AJAX] UpdatePanel vs WebService vs inne formy AJAXa

0

Witajcie.
Do założenia tego tematu natchnął mnie niedawno obejrzany przeze mnie film Joe Stagner'a omawiający dwa sposoby wykorzystania AJAXa dostępny pod tym adresem:
http://www.asp.net/learn/ajax-videos/video-160.aspx
oraz artykuł Dave'a Ward'a na podobny temat dostępny pod tym adresem:
http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/

Chciałbym abyśmy w tym temacie w języku polskim (który lepiej rozumiem :) ) poruszyli kwestie użycia AJAXa na stronach ASP.NET. Jak wiadomo zarówno sposób wykorzystujący UpdatePanel jak i sposób wykorzystujący WebService mają swoje wady i zalety. Wobec tego powstaje pytanie kiedy jakiego sposobu używać? A może inne metody dają lepsze efekty? Może lepiej wykorzystać gotowe kontrolki AJAX Toolkits lub samemu napisać odpowiednią kontrolkę AJAXową? Może to coś by poprawiło? A może lepiej skorzystać z jakiegoś JavaScriptowego frameworka, np. JQuery do używania AJAXa?
Jakie jest Wasze zdanie na ten temat? Jakie macie własne doświadczenia w tym temacie? I z jakich metod korzystacie w tworzonych przez Was serwisach internetowych?

0

jakie wady ma updatepanel ?

0
lamson napisał(a)

jakie wady ma updatepanel ?

Na filmie do którego odnośnik podałem w moim powyższym poście jest to wyjaśnione.
Generalnie jest tak, że jeżeli umieścisz jakąś część strony w UpdatePanel i będziesz chciał ją odświeżyć, to stan wszystkich elementów znajdujących się w UpdatePanel jest wysyłany przez ViewState do serwera a następnie po stronie serwera są wykonywane jakieś operacje na przesłanych danych i nowa zawartość UpdatePanel (ze wszystkimi danymi, włącznie ze znacznikami HTML, CSS, itp.) jest wysyłana z serwera do klienta i zawartość UpdatePanel jest odświeżana. Gdybyś całą stronę internetową umieścił w UpdatePanel, to stan wszystkich elementów ze strony byłby wysyłany do serwera, a następnie z serwera cała zawartość strony byłaby przesyłana do klienta, a więc takie rozwiązanie mijałoby się z ideą AJAXa. Krócej mówiąc, UpdatePanel działa niemal identycznie jak zwykłe przeładowywanie strony, a jedyna różnica jest taka, że nie cała strona jest przeładowywana, a jedynie to co znajduje się w UpdatePanel.
Gdy zastosujesz WebService to, za pomocą kodu JavaScript wysyłasz na serwer jedynie parametry potrzebne do wywołania danej metody, a serwer zwraca do klienta jedynie wynik wywołania danej metody i kod JavaScript na podstawie zwróconych danych modyfikuje zawartość strony www.
Krótko mówiąc, wadą UpdatePanel jest to, że przesyła do serwera i odbiera od niego dużo zbędnych danych, a wadą WebService'ów jest to, że trzeba dużo kodować w JavaScripcie.

0

Przy updatepanelu z tego co wiem to zawsze jest wysylany ViewState calej stron, a nie tylko panelu... dopiero zwracany jest stan konkretnego panelu...
co jest malo wydajne... pare stron zrobilem w oparciu o ten model i zdecydowanie nie nadaje sie on do pracy... chociazby gdy po wpisaniu jakiejs wartosci masz "w locie" zrobic operacje po stronie serwera, pracujac jednoczesnie dalej przy stronie. Glupie zachowywania focusa wowczas staje sie problemem.

Niestety pozozstaje tylko javascript... web services bylo dobrym obejscie w .net'cie 2.0, gdzie nie mozna bylo metod strony odpalac z js'a. Tak wiec duza czesc kodowania przenosi sie na javascript (jQuery) pomaga jedynie uproscic to troche.

Tak naprawde to nie ma jednoznacznej odpowiedzi na Twoje pytanie :) Bo zalezy to od konkretnej sytuacji. Bo jesli juz rezygnujemy z updatepaneli i przechodzimy na callbacki javascriptowe... to mozna zadac sobie pytanie, czemu calej strony nie robimy w asp.net mvc... a tu odpowiedzia bedzie jak zwykle... czas na zrobienie strony... i na jak bardzo "czyste" rozwiazanie on pozwala :)

0

Wtrącę swoje 2 słowa:

Myślę, że pytanie jest źle sformułowane. UpdatePanel (czy też inne, które są w ankiecie) to tylko kilka implementacji AJAX - które i tak pod maską kryją obiekt XmlHttpRequest.

UpdatePanel jest świetny! - mogę to powiedzieć z całą odpowiedzialnością! (.. i nie wydaje mi się, aby w odpowiedzi requestu UpdatePanel'a szedł cały ViewState strony - jednak nie dam sobie ręki uciąć). UpdatePanel oczywiście czasem jest jak wrzut na tyłku - wystarczy źle napisać HTMLa, i już nie działa jak trzeba.

Nie można jednak wrzucić do jednego worka UpdatePanelu i WebService - toż to kompletnie dwie różne rzeczy. (UpdatePanel to "kontrolka", która pozwala odświeżać część strony - a zapytanie do WebServisu powinno zwracać tylko dane). Są to kompletnie dwa różne rzeczy - i jedno i drugie ma swoje zastosowania. Nie sądzę aby ktoś musiał rostrzygać pomiędzy nimi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1