Was sind WCF RIA-Dienste?

102

Ich hasse die Website von MSDN für WCF-RIA-Dienste. Es sagt nicht, was es ist, es sagt nur, was es tut. Es sagt, was es erreichen kann, sagt aber nicht, warum ich es brauche.

Beispielsweise:

"Ein häufiges Problem bei der Entwicklung einer n-Tier-RIA-Lösung ist die Koordination der Anwendungslogik zwischen der mittleren Schicht und der Präsentationsebene."

Nun, es bedeutet mir nicht viel.

"RIA Services löst dieses Problem, indem Framework-Komponenten, Tools und Services bereitgestellt werden, die die Anwendungslogik auf dem Server für den RIA-Client verfügbar machen, ohne dass Sie diese Programmierlogik manuell duplizieren müssen. Sie können einen RIA-Client erstellen, der die Geschäftsregeln kennt und wissen, dass der Client bei jeder Neukompilierung der Lösung automatisch mit der neuesten Logik der mittleren Ebene aktualisiert wird. "

Lädt es DLLs vom Server herunter? Handelt es sich um Metadaten, die die Regeln für die Daten beschreiben?

Also, was ist es? Ist es nur ein VS 2010-Add-On für RAD? Oder ist es eine Technologie über oder unter WCF oder was? Wo wohnt es? Mit Daten, mit Server, was?

Ich freue mich, wenn Sie dies bitte für mich zusammenfassen können.

Aliostad
quelle
3
Es ist eine Technologie über WCF, die Codegenerierung und sowohl serverseitigen als auch clientseitigen Code verwendet. Es konzentriert sich hauptsächlich auf das Mischen von Daten vom Server zum Client und wieder zurück, mit Validierung und anderen Dingen.
Rangoric
1
@ Rangoric: Du könntest das als Antwort posten. Kurze Antworten können auch gute Antworten sein.
Henk Holterman
7
Ah, lol, ich habe es als RIAA falsch verstanden und bin psychisch geworden.
Mateen Ulhaq
Gut zu wissen: RIA = Rich Internet Applications (Thin Clients von denen Silverlight), gut erklärt hier . WCF-RIA-Dienste sind RIA-Dienste über WCF, die den Thin Client mit dem Server verbinden. „ WCF RIA Services ruft Daten aus einer Microsoft Structured Query Language (SQL) Server - Datenbank und stellt diese Daten zur Verfügung zu einem Silverlight - Client , wo es für die Bearbeitung und Anzeige präsentiert wird
mins

Antworten:

109

RIA-Dienste sind eine serverseitige Technologie, die automatisch clientseitige (Silverlight) Objekte generiert, die für Sie die Kommunikation mit dem Server übernehmen und die clientseitige Validierung ermöglichen.

Das Hauptobjekt innerhalb eines RIA-Dienstes ist ein Objekt DomainService, das normalerweise LinqToEntitiesDomainServicemit einem LinqToEntities-Modell verbunden ist.

Das Wichtigste bei RIA-Diensten ist, dass es sich hauptsächlich um einen ausgeklügelten Build-Trick handelt. Wenn Sie einen Domänendienst erstellen und Ihre Lösung kompilieren, wird eine clientseitige Darstellung Ihres Domänendienstes generiert. Diese clientseitige Darstellung hat dieselbe Schnittstelle. Angenommen, Sie erstellen einen serverseitigen Domänendienst CustomerServicemit einer Methode IQueryable<Customer> GetCustomersByCountry. Wenn Sie Ihre Lösung erstellen, wird in Ihrem Silverlight-Projekt eine Klasse CustomerContextmit einer Methode generiert GetCustomersByCountryQuery. Sie können diese Methode jetzt auf dem Client verwenden, als würden Sie sie auf dem Server aufrufen.

Aktualisierungen, Einfügungen und Löschungen folgen einem anderen Muster. Wenn Sie einen Domänendienst erstellen, können Sie angeben, ob Sie die Bearbeitung aktivieren möchten. Die entsprechenden Methoden zum Aktualisieren / Einfügen / Löschen werden dann im serverseitigen Domänendienst generiert. Der clientseitige Teil verfügt jedoch nicht über diese Methoden. Was Sie auf Ihrem haben, CustomerContextist eine Methode namens SubmitChanges. Wie funktioniert das?

  • Bei Updates aktualisieren Sie einfach die Eigenschaften bestehender Kunden (über die Sie abgerufen haben GetCustomersByCountryQuery).
  • Für Einsätze verwenden Sie CustomerContext.Customers.Add(new Customer(...) {...}).
  • Zum Löschen verwenden Sie CustomerContext.Customers.Remove(someCustomer).

Wenn Sie mit der Bearbeitung fertig sind, rufen Sie an CustomerContext.SubmitChanges().

Zur Validierung können Sie Ihre serverseitigen Objekte mit Validierungsattributen aus dem System.ComponentModel.DataAnnotationsNamespace dekorieren . Wenn Sie Ihr Projekt erstellen, wird jetzt automatisch ein Validierungscode für die entsprechenden clientseitigen Objekte generiert.

Ich hoffe, diese Erklärung hilft Ihnen ein wenig weiter.

Ronald Wildenberg
quelle
Das tut es sicherlich. Danke, dass du es geteilt hast. Ich wünschte, Sie könnten die MSDN-Site aktualisieren. Was ist nun, wenn ich meinem Domain-Objekt eine Eigenschaft hinzufüge? Würde es sich selbst aktualisieren?
Aliostad
Ich habe einige zusätzliche Informationen zu Updates, Einfügungen und Löschungen hinzugefügt.
Ronald Wildenberg