Co to są usługi WCF RIA?

102

Nienawidzę witryny MSDN dla usług WCF RIA. Nie mówi, co to jest, mówi tylko, co robi. Mówi, co może osiągnąć, ale nie mówi, dlaczego tego potrzebuję.

Na przykład:

„Typowym problemem podczas tworzenia n-warstwowego rozwiązania RIA jest koordynacja logiki aplikacji między warstwą środkową a warstwą prezentacji”.

Cóż, to niewiele dla mnie znaczy.

„Usługi RIA rozwiązują ten problem, udostępniając komponenty szkieletu, narzędzia i usługi, które udostępniają logikę aplikacji na serwerze klientowi RIA bez konieczności ręcznego kopiowania tej logiki programowania. Można utworzyć klienta RIA, który zna reguły biznesowe i wiedz, że klient jest automatycznie aktualizowany przy użyciu najnowszej logiki warstwy środkowej za każdym razem, gdy rozwiązanie jest ponownie kompilowane ”.

Czy więc pobiera biblioteki DLL z serwera? Czy są to metadane opisujące zasady dotyczące danych?

Więc co to jest? Czy to tylko dodatek VS 2010 dla RAD? Czy jest to technologia na szczycie WCF lub pod nim, czy co? Gdzie to żyje? Z danymi, z serwerem, co?

Dziękuję, jeśli możesz to dla mnie podsumować.

Aliostad
źródło
3
Jest to technologia uzupełniająca WCF, która wykorzystuje generowanie kodu oraz kod po stronie serwera i klienta. Koncentruje się głównie na tasowaniu danych z serwera do klienta iz powrotem, z walidacją i innymi rzeczami.
Rangoric
1
@Rangoric: Możesz opublikować to jako odpowiedź. Krótkie odpowiedzi też mogą być dobrymi odpowiedziami.
Henk Holterman
7
Ach, lol, źle odczytałem to jako RIAA i oszalałem.
Mateen Ulhaq
Dobrze wiedzieć: RIA = Rich Internet Applications (cienki klient, w tym Silverlight), dobrze wyjaśniony tutaj . Usługi WCF RIA to usługi RIA przez WCF, łączące cienkiego klienta z serwerem. „ WCF RIA Services pobiera dane z bazy danych Microsoft Structured Query Language (SQL) Server i udostępnia te dane klientowi Silverlight, gdzie są przedstawiane do edycji i przeglądania
min

Odpowiedzi:

109

Usługi RIA to technologia po stronie serwera, która automatycznie generuje obiekty po stronie klienta (Silverlight), które zajmują się komunikacją z serwerem za Ciebie i zapewniają weryfikację po stronie klienta.

Głównym obiektem wewnątrz usługi RIA jest a DomainService, zwykle a, LinqToEntitiesDomainServicektóry jest połączony z modelem LinqToEntities.

Kluczową rzeczą do zapamiętania w usługach RIA jest to, że jest to głównie wyrafinowana sztuczka budowania. Podczas tworzenia usługi domeny i kompilowania rozwiązania generowana jest reprezentacja usługi domeny po stronie klienta. Ta reprezentacja po stronie klienta ma ten sam interfejs. Załóżmy, że tworzysz usługę domeny po stronie serwera CustomerServiceza pomocą metody IQueryable<Customer> GetCustomersByCountry. Podczas tworzenia rozwiązania w projekcie Silverlight generowana jest klasa o nazwie, CustomerContextktóra ma metodę GetCustomersByCountryQuery. Możesz teraz użyć tej metody na kliencie, tak jakbyś wywoływał ją na serwerze.

Aktualizacje, wstawianie i usuwanie przebiega według innego wzoru. Tworząc usługę domeny, możesz wskazać, czy chcesz włączyć edycję. Odpowiednie metody aktualizacji / wstawiania / usuwania są następnie generowane w usłudze domeny po stronie serwera. Jednak część po stronie klienta nie ma tych metod. Masz na sobie CustomerContextmetodę zwaną SubmitChanges. Jak to działa:

  • W przypadku aktualizacji wystarczy zaktualizować właściwości istniejących klientów (pobranych za pośrednictwem GetCustomersByCountryQuery).
  • W przypadku wkładek używasz CustomerContext.Customers.Add(new Customer(...) {...}).
  • Do usuwania używasz CustomerContext.Customers.Remove(someCustomer).

Po zakończeniu edycji dzwonisz CustomerContext.SubmitChanges().

Jeśli chodzi o walidację, możesz ozdobić swoje obiekty po stronie serwera atrybutami walidacji z System.ComponentModel.DataAnnotationsprzestrzeni nazw. Ponownie, podczas budowania projektu kod walidacji jest teraz automatycznie generowany dla odpowiednich obiektów po stronie klienta.

Mam nadzieję, że to wyjaśnienie pomoże ci trochę dalej.

Ronald Wildenberg
źródło
Z pewnością tak. Dzięki za udostępnienie. Żałuję, że nie możesz zaktualizować witryny MSDN. A co, jeśli dodam właściwość do mojego obiektu domeny? Czy zaktualizowałby się sam?
Aliostad
Dodałem dodatkowe informacje o aktualizacjach, wstawkach i usunięciach.
Ronald Wildenberg,