Jak wybrać usługi WCF, REST, POX i Ria dla nowej aplikacji Silverlight

Istnieje lot na różne sposoby aplikacja Silverlight może połączyć się z jego serwerem. W tym

Dla każdego z nich proszę powiedzieć, do czego służy i kiedy chcesz lub nie chcesz go używać. Nie jestem. szukając wielkiego poziomu szczegółów wystarczy zestaw "reguł kciuka" do wyboru między nimi.

(problem polega na tym, że projektując swoją pierwszą aplikację Silverlight, musisz wiedzieć, z czego korzystać, gdy nie masz czasu na poznanie ich wszystkich.)

gdybym miał zastąpić Silverlight WPF w tym pytaniu jaki wpływ miałoby to na twoje odpowiedzi? (Zakładam, że z WPF, że ze względu na zapory sieciowe i zasady administracyjne bezpośrednie połączenie z bazą danych nie jest opcją.)

Author: Gilles, 2009-10-17

5 answers

Moje dwa (euro) centy:

WCF wydaje się najbardziej odpowiedni, gdy usługa może być postrzegana jako warstwa biznesowa aplikacji, to znaczy, gdy usługa ma "inteligentne" operacje, takie jak "CalculateDiscountForClient" .

ADO.NET usługi danych (rzeczywiście, tylko implementacja REST) wydają się odpowiednie, gdy aplikacja jest zasadniczo skoncentrowana na danych, a usługa jest po prostu front-end dla bazy danych. Oznacza to, że wszystkie metody obsługi są typu GetCustomers, CreateInvoice, itd.

RIA services to bardzo nowa technologia, z którą jeszcze nie eksperymentowałem, ale wydaje się być przydatna do tworzenia aplikacji, w których część Silverlight i usługa są bardzo ściśle powiązane: definiujesz swoje klasy usług i metody w projekcie usług, a one są automatycznie replikowane do projektu Silverlight w czasie projektowania. Można również zdefiniować zarówno metody "akcji" w stylu WCF, jak i ADO.NET usługi danych-styl metody "danych". Wygląda obiecująco.

Użyj POX , jeśli istnieje szansa, że w przyszłości zmienisz część klienta z Silverlight na dowolną inną technologię (na przykład HTML+AJAX), ponieważ jest to najbardziej interoperacyjna opcja.

O różnicach dla WPF, jedyne o czym mogę myśleć, to to, że dla dostępu do danych, o ile to możliwe, użyłbym bezpośredniego ADO.NET połączenia danych (odpowiednio osadzone w warstwie dostępu do danych, LINQ do SQL itp.) zamiast ADO.NET usługi danych, od jest o wiele bardziej elastyczny. Muszę jednak powiedzieć, że nigdy nie opracowałem niczego w WPF.

 9
Author: Konamiman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-19 07:02:25

Używamy RIA, i to jest jedyna opcja, którą znam, ale wiem to, więc oto niektóre z moich przemyśleń.

RIA jeszcze nie jest skończona. Trwają prace nad tym. Jeśli planujesz wkrótce zakończyć pracę i martwisz się, że będziesz musiał wspierać coś, co może nieco zmienić, możesz rozważyć inne opcje. Jeśli jest to nowy projekt i będziesz go wspierać przez długi czas, Ria prawdopodobnie będzie łatwiejsze w użyciu.

Powiedziawszy to, myślę, że nie będzie wiele zmian w sposobie, w jaki działa lipcowy podgląd RIA i sposób, w jaki będzie działać gotowa wersja. Również poziom wsparcia wydaje się sugerować, że stanie się to "sposobem" na rozmowę z serwerem w Silverlight.

Tylko dlatego, że warto o tym wspomnieć, miej jakieś linki:

Http://blogs.msdn.com/brada / Brad Abrams ma przykład, który jest stale aktualizowany.

Http://forums.silverlight.net/forums/53.aspx tutaj zadajesz pytania.

Http://www.riaservicesblog.com/Blog Colin Blair zna się na rzeczy i jest bardzo pomocny.

 5
Author: thepaulpage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-19 14:11:46

Myślę, że już nigdy nie pójdę na ospę. Jeśli piszesz WCF tak, że sama usługa jest niezależna od wiązania, a wiązanie odbywa się w plikach konfiguracyjnych, to WCF jest w zasadzie niezależny od transportu i protokołu. Może wykonywać SOAP, JSON, REST lub własną formę serializacji binarnej. Wszystko to jest w oprawie. Wewnętrznie WCF określa tylko to, co zostaje ujawnione pod względem operacji i kontraktów na dane (wszystkie zdefiniowane przez atrybuty klasy, metody i właściwości). WCF daje ogromne elastyczność w tym zakresie, a w 2010 r.będzie ich więcej.

Od strony Silverlight WCF wymaga napisania kodu instalacyjnego. Serwer. NET frameowrk posiada narzędzia do tworzenia proxy w Twoim projekcie Silverlight, ale musisz być przygotowany do asynchronicznie obsługiwać wszystkie odpowiedzi WCF, a proxy nie może przechwytywać WYJĄTKÓW rzucanych przez usługę.

. NET RIA Services ukrywa to wszystko. Używa WCF pod pokrywami, ale to jest całkowicie ukryte. Nie musisz pisać asynchronicznego kod. Walidacja definiowana jest raz, głównie deklaratywnie i działa zarówno po stronie serwera, jak i po stronie klienta. Wydanie 1 będzie ukierunkowane na Silverlight, więc nie masz wszechstronności, aby korzystać z usługi gdzie indziej. Zakres ten ma zostać rozszerzony w późniejszych wydaniach.

I don ' t know enough about ADO.NET usługi danych do porównania. Podejrzewam, że odpowiedź będzie zależeć od tego, czy chcesz narazić swoje dane na coś więcej niż tylko wykorzystanie Silverlight.

. NET RIA Services wygląda jak kierunek chciałbym iść (patrząc na te problemy sam, z dużą aplikacją w umyśle). Dużym problemem będzie dla mnie implementacja bardzo dużego zbioru funkcjonalności w warstwie Usługowej i brak możliwości kodowania bezpośrednio do warstwy dostępu do danych (musimy być w stanie uruchomić na serwerze SQL lub Oracle).

Użycie WPF zamiast Silverlight zmienia wszystko, w zależności od tego, gdzie znajdują się Twoje dane. To jak stare pytanie Winforms vs. ASP.NET. z WPF, jesteś budując aplikację kliencką systemu Windows, nie musisz w ogóle używać żadnej formy interfejsu danych opartego na usługach, chyba że dostęp do danych zmusi cię do tego. Nadal będziesz chciał oddzielić Dane i biznes od kodu prezentacji, używając MVVM, MVC lub MVP. Poza tym można traktować dostęp do danych jako warstwę, a nie całą niezależną warstwę.

 3
Author: Cylon Cat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-17 20:55:05

WCF jest standardem Microsoft dla komunikacji usług. Zdecydowanie radzę każdemu stworzyć warstwę usług za pomocą WCF Web API (używa WCF, ale dostosowane specjalnie do reszty), który ukaże się w kwietniu 2012. WCF Web API jest obecnie w trybie podglądu.

Zapamiętaj te zasady: - Twój interfejs zmieni się szybciej niż warstwa usług. Odpoczynek będzie za kilka lat, Silverlight pewnie nie - czy Twoje usługi będą kiedyś API? Cóż...WCF REST is the way to go - czy wymieszasz kod JavaScript i Silverlight? WCF REST ułatwi Ci życie - czy masz komponent mobilny (ponieważ Silverlight nie będzie działać na iOS lub android)...Preferowany jest odpoczynek.

Nie dostosowuj się do technologii, ale do aplikacji jako całości.

 3
Author: Bart Czernicki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-08 22:47:46

Jeśli chcesz stworzyć aplikację Silverlight i nie dbasz o innych klientów, to wybrałbym usługi RIA. Jest dość bezbolesny w użyciu i nie musisz się martwić o to, jak odbywa się połączenie z klientem (tzn. nie jest wymagana konfiguracja po stronie klienta). Ria generuje również klasy dla wszystkich Twoich encji na kliencie, a w razie potrzeby możesz nawet udostępnić klientowi swój własny kod "serwera" (przydatny do wyliczeń lub metod rozszerzeń).

Uwagi:

  • nigdy tego nie próbowałem, ale jeśli naprawdę potrzebujesz, możesz uzyskać dostęp do usługi RIA również z innymi klientami, ponieważ wszystkie usługi RIA są zbudowane na bazie usług WCF.
  • Nie do końca rozumiem obawy Akasha Kavy dotyczące bezpieczeństwa. Możesz (i musisz) kontrolować bezpieczeństwo po stronie serwera, tak jak w przypadku każdej innej usługi.
 2
Author: Stefan Egli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-15 18:39:22