Dieser Artikel wurde maschinell übersetzt.

Praktische OData

Erstellen von umfassenden Internetanwendungen mit dem Open Data-Protokoll

Shayne Burgess

Bei PDC09 unveiled (früher als das ADO.NET Data Services-Team) Microsoft WCF Data Services-Team zunächst OData, Open Data-Protokoll. Die Ankündigung in einem Keynote am zweiten Tag der Konferenz war, aber, war nicht OData, gestartet. Personen vertraut mit ADO.NET Data Services verwendet haben OData als Protokoll für die Ressource basierende Anwendungen zu übertragen, da ADO.NET Data Services in Microsoft .NET Framework 3.5 SP1 verfügbar war. In diesem Artikel werde ich erläutern, wie Entwickler von Rich Internet Applications (RIAs) OData verwenden können, und außerdem wird auf diese Weise die Vorteile gezeigt.

Ich werde beantworten Sie zunächst das Feld. 1 Frage ich seit der unveiling OData im November gefragt haben: Worum handelt es sich dabei? OData ist sehr einfach ausgedrückt ein Webprotokoll ressourcenbasierten zum Abfragen und Aktualisieren von Daten. OData definiert Operationen auf Ressourcen mithilfe von HTTP-Verben (PUT, POST, UPDATE und DELETE), und diese Ressourcen mit der standard-URI-Syntax wird identifiziert. Daten werden über HTTP unter Verwendung der AtomPub oder JSON-Standards übertragen. Für AtomPub definiert das Protokoll OData einige Konventionen auf dem Standard für den Austausch der Abfrage und Schema unterstützen. Odata.org für Weitere Informationen Besuchen Sie OData.

Die OData Partnerlösungen

In diesem Artikel vorgestellt ich einige Produkte, Frameworks und Webdienste, die nutzen oder OData Feeds zu erzeugen. Das Protokoll definiert werden, die und Methoden, die bei der Verarbeitung werden können und den Vorgängen (GET, PUT, POST, MERGE und DELETE, die zum Lesen, erstellen, ersetzen, Zusammenführen und löschen entsprechen), der auf diese Ressourcen durchgeführt werden kann.

In der Praxis bedeutet dies jeder Client, der das Protokoll OData belegen kann über eines der Producer verwendet werden kann. Es ist nicht erforderlich, um das Programmiermodell von einem Dienst zum Programmieren mit dem Dienst zu erhalten, ist nur erforderlich, das Programmieren in die Zielsprache auswählen.

Wenn z. B. Sie Silverlight-Entwickler, der die OData-Bibliothek für diese Plattform erfährt sind, kann jeder feed OData programmiert werden. Jenseits der Bibliothek OData für Silverlight finden Sie Bibliotheken für den Microsoft .NET Framework Client AJAX, Java, PHP oder Ziel-C, mit mehr auf dem Weg. Darüber hinaus unterstützt Microsoft PowerPivot für Excel einen feed als eine der Optionen für den Datenimport zu den in-Memory-Analysemodul OData.

Und genau wie Clients zur Nutzung des Protokolls OData über keines der Producer arbeitet, ein Dienst oder eine Anwendung, die mit OData erstellt kann verwendet werden von jedem Client OData aktiviert. Nachdem Sie einen Webdienst, der offen legt als Endpunkt OData relationale Daten (oder verfügbar macht, die Daten in einer SharePoint-Website, Tabellen in Windows Azure oder Sie haben), können Sie problemlos eine umfangreiche Desktopclient in .NET Framework oder eine umfangreiche AJAX basierende Website, der dieselben Daten erstellen.

Das langfristige Ziel OData ist ein OData-Clientbibliothek für jede wichtige Technologie, Sprache und Plattform programmieren, so, dass jeder Clientanwendung die Fülle von OData Feeds in Anspruch nehmen. Kombiniert, erstellen die Producer und Consumer von OData ein OData “ Ökosystem ”.

Was ist neu in WCF Data Services?

WCF Data Services, einer Komponente von .NET Framework ist ein Framework, das eine gebrauchsfertige Lösung zum Erstellen von OData Web Services bietet und eine Clientbibliothek, mit dem Sie Clients erstellen können, die Feeds OData beanspruchen. WCF Data Services-Team hat kürzlich veröffentlicht ein Update für .NET Framework 3.5 SP1, die eine Vielzahl von neuen Features führt Sie auch in den .NET Framework-4 finden. Dies ist die zweite Version der Data Services-Framework. Finden Sie unter blogs.msdn.com/astoriateam/archive/2010/01/27/data-services-update-for-net-3-5-sp1-available-for-download.aspx , wobei eine Beschreibung und einen Link zum Herunterladen finden Sie.

Das WCF Data Services-Framework ist nicht nur ein Protokoll für die RIA-Anwendungen. Es wurde auch für Entwickler, die hohe Skala Dienst entworfen und verfügt über viele Features, ansprechender, z. B. Paging Beschränkungen der Server HTTP-Unterstützung von statusfreien Dienste streaming-Unterstützung und ein austauschbares Anbietermodell. Let’s sehen Sie sich die neuen Features, die in der Regel RIA-Entwickler am wichtigsten sind.

Eines der wichtigsten Features möchte Kunden nach der ersten Veröffentlichung die Möglichkeit, die Anzahl der Einheiten in einer Gruppe anfordern ausgedrückt. Das neue Feature der “ Count ” behandelt die benötigten mit zwei Teilen. Erstens können Sie nur die Anzahl anfordern – d. h. die Anzahl der Werte, die eine Abfrage zurückgeben würde. Zweitens wird eine Abfrage aus, die den Dienst für die Gesamtzahl der Einheiten die Anzahl in einer Gruppe enthalten, wenn das Abfrageergebnis der eine teilweise (z. B. wird bei aktiviertem Paging-Server) festgelegt.

Zur Verbesserung der Benutzerfreundlichkeit beim Binden von Daten von einem Dienst OData wurde ein neuer Typ DataServiceCollection, die WCF-Datendienste-Clientbibliothek hinzugefügt. Sie implementiert die Änderungsnachverfolgung auf die Elemente, die Sie (mithilfe von INotifyPropertyChanged und INotifyCollectionChanged-Schnittstellen) enthält. Wenn es an ein Steuerelement gebunden ist, ein DataGrid in Silverlight, z. B. – es verfolgt die Änderungen vorgenommen haben, um die Objekte und die Auflistung selbst. Diese neue Sammlung wird erheblich vereinfacht den Prozess des Erstellens von OData Clients mit einer Schnittstellenkomponente.

Ein weiteres häufig angeforderte Feature ist die Möglichkeit, das Projekt einer Teilmenge der Eigenschaften einer Entität in einem Abfrageergebnis zurückgegeben. LINQ-Unterstützung wurde für diese über die LINQ-Select-Anweisung hinzugefügt. Dies hat zwei Vorteile: Reduziert die Größe der HTTP-Antworten auf Abfragen, und verringert den Speicherbedarf der clientseitigen Objekte. Dies kann besonders nützlich sein, wenn Sie eine Clientanwendung gegen einen Dienst entwickeln keinen eigenen besitzen und in dem jede Entität möglicherweise viele Eigenschaften, die nicht von Interesse an den Client. In diesem Artikel werde ich arbeiten mit einem großen, öffentlich verfügbaren Dienst zeigen, die viele Entitäten mit zahlreichen Eigenschaften für jede Entität besitzt. Projektionen werden im Beispiel nützlich, weil es nur wenige erforderliche Eigenschaften auf eine Entität enthält.

Um den Wert der OData Ökosystem zu verstehen, erstellen wir eine Webanwendung, mit der Besucher die Site des mein fiktives Immobilien durchsuchen, des Unternehmens, Contoso Ltd., um die Auflistungen der verwalteten Eigenschaften anzuzeigen.

Relationale Daten

Die primäre Datenquelle für die Anwendung "Home" contoso.com "Finder ist eine SQL Server-Datenbank, die Informationen über alle Eigenschaften, die das Unternehmen verwaltet werden und alle Auflistungen (aktuelle und zuvor verkaufte) publizieren für diese Eigenschaften enthält.

Seit der Veröffentlichung von WCF-Diensten für Daten und ADO.NET Entity Framework in .NET Framework 3.5 SP1 wurde es leicht zu eine relationale Datenbank als ein feed OData verfügbar zu machen. Alles, die erforderlich ist, ist ein Modell von Entity Framework über die relationalen Daten erstellt wurden. Ein Feed OData ist HTTP-basierte, daher Sie einen Website oder Dienst benötigen, den Dienst zu hosten.

Um die OData feed über relationalen Daten zu erstellen, ist der erste Schritt zum Erstellen einer ASP.NET-Webanwendung in Visual Studio 2010 OData-Dienst hosten. Wählen Sie in Visual Studio die Datei | neu | Projekt | ASP.NET-Webanwendung. Dadurch wird das Skelett eines Webdiensts erstellt, die zum Hosten der feed OData verwendet werden kann.

Nachdem der Webdienst erstellt und konfiguriert, erstellen wir das Entity Framework-Datenmodell, das der Feed OData verfügbar gemacht wird. Visual Studio stellt diese einfach mithilfe von Assistenten Neues Element hinzufügen, der Sie ein Modell aus einer vorhandenen Datenbank automatisch generieren kann. Abbildung 1 zeigt ein einfaches Datenmodell, das erstellt wird, enthält die Eigenschaften und Auflistungen von Contoso verwaltet SQL Server-Daten über den Assistenten „ Neues Element hinzufügen.

image: The Entity Framework Data Model for the Relational Data
Abbildung 1 das Entity Framework Data Model für relationalen Daten

Jetzt let’s Erstellen eines WCF-Data-Diensts, die dieses Datenmodell als ein Feed OData verfügbar macht. Visual Studio ist auch dies einfach mit WCF Data Service-Option im Assistenten „ Neues Element hinzufügen. Wenn Sie diese Option auswählen, bietet Visual Studio eine Codedatei (in diesem Beispiel wird die Datei heißt Listings.svc.cs), die zum Konfigurieren der Data Service verwendet wird.

Der Code in Abbildung 2 veranschaulicht einen WCF-Dienst Daten definieren. Die Listen-Klasse ist der Webdienstklasse, die Data-Dienst verfügbar gemacht wird, und implementiert die generische DataService <T>. Der Typ der DataService <T> definiert, in Abbildung 2 ist ListingsEntities-Typs, der dem Entity Framework erstellt Abbildung 1 handelt. Da diese Klasse einen Kontext Entity Framework akzeptiert wird, ist dies eine schnelle und einfache Methode, um einen WCF-Dienst Daten abzurufen, die relationale Daten nach oben und ausgeführt verfügbar macht. DataService-Klasse ist nicht eingeschränkt, jedoch nur über Entity Framework-Kontexte arbeiten; 
the-Klasse akzeptiert eine Sammlung von CLR-Objekten, die IQueryable-Schnittstelle implementiert. In der .NET Framework-4 wird ein neues Modell der benutzerdefinierte Anbieter für WCF Data Services hinzugefügt wurde, einen Dienst über fast jede Datenquelle erstellt werden können.

Abbildung 2 Definieren des WCF-Diensts für Data

// The ListingsEntities is the Entity Framework Context that the Service exposes
public class Listings : DataService< ListingsEntities >
{
  public static void InitializeService(DataServiceConfiguration config)
  {
    // These lines set the access rights to "Read Only" for both entity sets
    config.SetEntitySetAccessRule("Listings", EntitySetRights.AllRead);
    config.SetEntitySetAccessRule("Properties", EntitySetRights.AllRead);

    // There are currently no service operations in the service
    config.SetServiceOperationAccessRule("MyServiceOperation",
      ServiceOperationRights.All);

    config.DataServiceBehavior.MaxProtocolVersion = 
      DataServiceProtocolVersion.V2;
  }
}

Suchen Sie Let’s etwas näher an, was die InitalizeService-Methode in Abbildung 2 durchführt.Die Methode ist beim Aufruf der SetEntitySetAccessRule für beide die Entität festlegt, die der Dienst verfügbar gemacht wird und die Zugriffsrechte für AllRead festlegen.Dadurch wird den Dienst stellen beide Entität vollständig gelesen, aber keine Einfügungen, Aktualisierungen oder Löschvorgänge zulassen.Dies ist eine hervorragende Möglichkeit zum Steuern des Zugriffs auf den Dienst.WCF Data Services unterstützen auch Methoden aufgerufen, Query-Interceptors, mit denen den Dienst Autor auf Basis pro Entitätssatz differenziertere Zugriffssteuerung für den Dienst konfigurieren können.Die Datei Listings.svc als Startseite des Projekts festgelegt, und führen Sie das Projekt.Ein Browserfenster öffnen, und das Dokument Dienst angezeigt, wie in Abbildung 3 .

image: Service Document for the SharePoint SiteAbbildung 3 Servicebeleg für die SharePoint-Website

OData URI-Konventionen

Servicebelegs Listet die Entität festlegt, die vom Dienst offen gelegt werden.Beachten Sie, dass Sie die Ressourcen in dieser Dienst mithilfe der leistungsstarken URI-Syntax als Optionaler Teil des Protokolls OData definiert zugreifen können.Let’s schnellen einen Blick auf die URI-Syntax für diesen Dienst in Anspruch nehmen.Einen Feed für jede Entität zugreifen möchten, fügen Sie den Namen der Entität zum Basis-URI für den Dienst festlegen; http://myhost/Listings.svc/Properties würde z. B. die Menge der Einheiten in der Eigenschaften Entitätssatz adressieren.

Es ist auch möglich, die Adresse einer bestimmten Entität einzeln über den Schlüsselwert, der URI http://myhost/ Listings.svc/Properties(0) würde mit der ID = 0.Sie können eine Beziehung von dieser Entität eine andere Entität oder einem Satz von Entitäten durch den Namen der Beziehung an das Ende der URI in diesem Fall http://myhost/ Listings.svc/Properties(0))/Listings anhängen adressieren greift des Satzes von Auflistungen der Eigenschaft Entität mit der ID zugeordnet = 0.Verwenden diese Syntax, kann die durch viele Ebenen von Beziehungen zu navigieren.

Die URI-Syntax definiert außerdem eine Reihe von Abfrageoptionen für die an einen URI zum Ändern der Basisabfrage in irgendeiner Weise angehängt werden können und jede Abfrageoption als Name-Wert-Paar definiert ist.Wenn z. B. durch Anfügen der Option $ oben in Abfrage = 10, schränken Sie die Abfrage, die nur die ersten 10 Einträge im Ergebnis.Abbildung 4 Listet alle Abfrageoptionen in der URI-Syntax.

Abbildung 4 OData Abfrageoptionen

$top=n Schränkt die Abfrage auf die ersten n Entitäten.
$skip=n Überspringt die ersten n Entitäten in der Menge.
$inlinecount=allpages Gezählt alle Entitäten des Satzes im Ergebnis.
$filter=<expression> Ein Ausdruck kann angegeben werden, die von der Abfrage zurückgegebenen Ergebnisse einschränken (Beispiel: $ Filter = Status Eq ‘ verfügbare ’ schränkt die Ergebnisse auf Entitäten, die Status-Eigenschaft mit dem Wert “ verfügbare ”).
$orderby=<expression> Ordnet die Ergebnisse durch eine Reihe von Eigenschaften der Entität
$select=<expression> Gibt eine Teilmenge der Eigenschaften der Entität, die zurückgegeben werden soll.
$format Gibt das Format des Feeds (ATOM oder JSON) zurückgegeben werden soll.Diese Option wird in WCF Data Services nicht unterstützt.

Offenlegen von Daten aus SharePoint

Im vorherigen Abschnitt wurde ich Sie, wie die Daten in der relationalen Datenbank werden die Eigenschaften und Auflistung von Informationen für die Immobilien-Website verfügbar gemacht werden.Let’s angenommen, ich habe auch Informationen über die Real Platz auf Agents, die die Eigenschaften verkaufen, aber, dass die Daten in einer SharePoint-Website gespeichert ist.Microsoft SharePoint 2010 hat die Möglichkeit, alle Listen und Dokumente in diesen Listen als ein Feed OData verfügbar zu machen.Dies eignet sich hervorragend für die Site Immobilien, denn es bedeutet, Mitarbeiter des Unternehmens eingegebene Informationen für der Agent steht zur Verfügung dass, da ein OData, feed in der Listen-Anwendung, die ich erstellt habe enthalten sein können.Prozesse, die unter Verwendung der SharePoint-Benutzeroberfläche für das eingeben und aktualisieren diese Daten haben Benutzer müssen Ihren Workflow meiner Anwendung entsprechend ändern.In der SharePoint-Website für Unternehmen eingegebenen Daten steht in Echtzeit an die Anwendung von Auflistungen, die erstellt wird.

Abbildung 5 zeigt dem einfachen SharePoint Portal Immobilien-Agents verwenden, zu aktualisieren Sie Ihre Kontaktinformationen.

image: SharePoint Site for Agent InformationAbbildung 5 Agent-Informationen für die SharePoint-Website

Wenn das ADO.NET Data Services-Update für .NET Framework 3.5 SP1 auf der SharePoint-System installiert ist, wird ein neuer HTTP-Endpunkt für jede Site, die die Listendaten als ein feed OData verfügbar macht.Da ein Feed OData über HTTP zugegriffen wird, können Sie mit nur Internet Explorer überprüft werden.Abbildung 6 zeigt den Feed für die Agents Liste in SharePoint.

image: Agents Feed from the SharePoint Agent ServiceAbbildung 6 -Agenten aus der SharePoint-Agent-Dienst Feed

Verwenden von Referenzdaten von OGDI

In der Standardeinstellung ein Feed OData wird eine ATOM-Darstellung für den Feed zurückgegeben, und beim Zugriff über einen Webbrowser durch ein ATOM-feed werden.Wenn der Accept-Header der Anforderung zu “ Application/Json ” geändert wird, wird das Ergebnis die gleichen Daten wie ein feed JSON sein.

Der Feed in Abbildung 6 beginnt mit einem <feed>-Element, das eine Gruppe von Entitäten darstellt.Innerhalb jedes Feed ist ein Satz <entry>-Elemente, von denen jedes eine einzelne Entität im Feed darstellt (die ersten drei Eintrag Elemente sind reduziert werden, um die gesamte feed in einen Bildschirm sichtbar zu machen).

In diesem Beispiel die Entität besitzt eine Parallelität Token definiert; daher weist jede Entität im Feed eine Etag-Eigenschaft auf.Das Etag wird das Token vom Datendienst verwendet wird, um eine Überprüfung auf Parallelität zu erzwingen, wenn die angeforderte Entität geändert wird.Jede Entität mit einem Tag <entry> formatiert besteht aus einer Reihe von Verknüpfungen, die beide die Verknüpfung verwendet werden, beim Bearbeiten der Entitäten und Beziehungen der Entität enthalten.Jede Beziehung Link verweist auf eine andere Entität oder auf eine Gruppe von Entitäten (diese werden Verweis- und Navigation Eigenschaften jeweils bezeichnet).Jedes Element <entry> auch 
includes ein <m:properties>-Element, die primitive und komplexer Typeigenschaften für die Entität enthält; die Eigenschaftenwerte aus dem Namen der Eigenschaft für die Entität bestehen und der Wert für diese Eigenschaft.

OGDI (Open Government Data Initiative) ist ein Dienst, der auf der Regierungsbehörden veröffentlicht eine Vielzahl von öffentlichen Daten erleichtert Azure für Microsoft Windows-Plattform integriert.Das OGDI-Projekt bietet ein Starter Kit, die von Regierungsbehörden verwendet werden kann, um Ihre Daten verfügbar zu machen.Beispielsweise die Stadt der Edmonton hat das Starter Kit für die Regierung Daten offen gelegt eingeführt und ogdisdk.cloudapp.net-Dienst hat eine Datenmenge mit einer Vielzahl von Daten über den Raum Washington, d.c..Ein weiteres Beispiel ist das Microsoft-Codename “ Dallas ”-Projekt, das zielt darauf ab, um für jede Person mit einer Datengruppe, die Daten als Dienst im Web verfügbar machen einfacher machen.Dieses Projekt ist auch auf der Plattform Windows Azure integriert und stellt Daten mit OData.Dies sind Beispiele für High-Scale-Dienste, die Verweis große Datenmengen verfügbar zu machen, die weiter von Webanwendungen verwendet werden kann.Ich angezeigt werden, wenn diese Dienste auf Ihre Daten mithilfe von OData offen legen, ist es einfacher, die Daten aus einer Vielzahl von Anwendungen nutzen.

Wie bereits erläutert, bietet die OGDI Website öffentlich verfügbare Daten über den Raum Washington, d.c..Contoso Immobilien Anwendung zum Durchsuchen von Auflistungen in diesem Bereich, und es wäre hilfreich für Benutzer verfügbaren einige dieser verweisen Daten über den Bereich um eine bestimmte Eigenschaft bei deren Anzeige.Beim Erstellen des Clients für die Beispielanwendung werde ich zeigen, wie die OData als einer der Quellen von Daten für die Anwendung von der Website von OGDI feed aufgenommen.

Andere OData Producer

Bisher habe ich Beispiele für das Verwenden von Daten aus SQL Server, SharePoint und eine generische OData Dienst im Web angezeigt, jedoch mehr Optionen vorhanden sind.Die wolkenbasierte Azure Windows-Plattform hat einen Tabelle-Dienst, den Datenspeicherung in Windows Azure Tabellen verfügbar macht und die API für diese mithilfe von OData erstellt wird.Wie bereits erwähnt, wird das Projekt von Microsoft in Hamburg einen Daten-Markt für das Suchen und Abrufen von Daten durch den Dienst in Hamburg verfügbar gemacht werden, und dieser Dienst stellt die Daten unter Verwendung des Protokolls OData.OData Producer nicht entweder nur beschränkt auf Microsoft-Produkte, IBM vor kurzem angekündigt, dass seine WebSphere extremen Scale-7.0-Produkt jetzt das OData-Protokoll unterstützt.

Silverlight-Client

Contoso Immobilien Finder Anwendung nun einen ASP.NET-Webdienst relationalen Daten in SQL Server über die Eigenschaften, die vom Unternehmen verwaltet und Immobilien-Auflistungen offen legt, einer SharePoint-Website verwendet wird, zur Verwaltung der Daten über die Unternehmens-Agenten und einer Regierungsbehörde Web Service, der Daten über den Bereich, um die Eigenschaften verfügbar macht das Unternehmen wird angekündigt.Sie möchten alle Quellen in einer Silverlight-Anwendung zusammengestellt, die mit diesen Daten auf sinnvolle Weise arbeiten können.

In Silverlight-3 ist ein WCF-Datendienste-Clientbibliothek im Silverlight-SDK enthalten, die es einfacher für Silverlight-Anwendungen für die Kommunikation mit einem Dienst, der OData aktiviert ist.Klicken Sie dazu in Visual Studio aus einem Silverlight-Projekt mit der rechten Maustaste des Projekts, und wählen Sie Dienstverweis hinzufügen.Dies führt Sie durch den Prozess des Erstellens eines Dienstverweises.Die wichtigste Eingabe einen Dienstverweis ist der URI des Diensts, der von der Silverlight-Anwendung verwiesen wird.Abbildung 7 zeigt ein Beispiel der Beispieldienst OGDI einen Dienstverweis hinzufügen.

image: Add Service Reference for the OGDI Sample ServiceAbbildung 7 Add Service Reference für den Beispieldienst OGDI

Der Dienst-Verweis-Assistent erstellt eine clientseitige Kontextklasse, die für die Interaktion mit den Datendienst verwendet wird.Der Clientkontext abstrahiert die Details für das Arbeiten mit HTTP und URIs Weg von der Client-Programmiermodell und ermöglicht es dem Cliententwickler nur C#-Klassen und XAML beschäftigen.Der Clientkontext enthält auch eine Implementierung für LINQ-Anbieter, und folglich LINQ-Abfragen auf dem Proxy unterstützt werden.Der Dienstverweis hinzufügen-Assistent generiert auch einen Satz von Client-Proxyklassen, die die Typen, die von der referenzierten Dienst verfügbar gemacht werden, spiegeln.Nachdem Sie den Dienstverweis OGDI, auch erstelle einen Dienstverweis auf der SharePoint-und Codebeispielen ich erstellt haben.Dieser Code zeigt, wie die Kontexte erstellen, die für die Interaktion mit drei OData-Dienste verwendet werden:

// OGDI service context
OGDIService.dcDataService OGDIService = 
  new dcDataService(new Uri(OGDIServiceURI));

// SharePoint service context
AgentsReference.AgentsDataContext agentsService = 
  new AgentsReference.AgentsDataContext(new Uri(sharepointServiceURI));

// Listings Service context
ListingReference.ListingsEntities listingsService =
  new ListingReference.ListingsEntities(new Uri(listingsServiceURI));

Abbildung 8 zeigt die Gliederung der Silverlight-Immobilien Home Finder-Anwendung. Die Anwendung wird in SharePoint gehostet werden, damit Sie problemlos für meine vorhandene Benutzer verfügbar ist, die in der SharePoint-Umgebung arbeiten.

image: The Contoso Home Finder
Abbildung 8 der Finder Contoso-Startseite

Abbildung 9 enthält den Code der Programmlistendienst Abfragen und das Ergebnis an das Raster oben auf der Startseite Finder Silverlight-Anwendung binden.

Abbildung 9 Client-Proxy-Kontexte erstellen

private void getListings()
{
  DataServiceCollection<Listing> listings = new 
    DataServiceCollection<Listing>();

  listingsGrid.ItemsSource = listings;
  
  var query = from listing in
              listingsService.Listings.Expand("Property")
              select listing;
  listings.LoadAsync(query);
}

Der Code in Abbildung 9 erstellt eine DataServiceCollection, die eine nachverfolgte Auflistung und bindet die Auflistung der ItemsSource-Eigenschaft des Rasters Haupt-Auflistungen. Da diese Auflistung Änderungsnachverfolgung implementiert wird, werden alle Änderungen an den Elementen im Raster in Entitäten in der Auflistung von Auflistungen automatisch angezeigt. Die Änderungen im Raster können an den Dienst durch den Aufruf von BeginSaveChanges-Methode auf den Kontext für den Programmlistendienst beibehalten werden.

In Silverlight sind alle Netzwerkaufrufe asynchron vorgenommen, damit ausführen alle Vorgänge anhand eines Diensts mithilfe von WCF Data Services-Clientbibliothek umfasst, der erste Aufruf für den Betrieb und dann schreiben eine separate Rückrufmethode, die an die Methode zum Behandeln des Ergebnis des asynchronen Aufrufs übergeben wird. Zu diesem asynchronen optimieren wurde eine Methode der Klasse DataServiceCollection LoadAsync, hinzugefügt hat, der die Arbeit der Behandlung des asynchronen Rückruffunktion und laden die Ergebnisse in der Auflistung.

In der -Code Abbildung 9 ist die Auflistung an einem Raster gebunden, bevor der LoadAsync Aufruf erfolgt und die Werte wird nicht in der Auflistung erst nach Beendigung des asynchronen Aufrufs geladen werden. Die Auflistung löst Ereignisse Auflistung geändert, wenn die Ergebnisse vom Dienst zurückgegeben werden und das Raster werden diese Ereignisse abfangen und die Ergebnisse bei Beendigung des asynchronen Aufrufs.

Wenn eine Auflistung aus der Datentabelle ausgewählt ist, muss die SharePoint-Website erhalten Sie die Informationen zum Verwalten dieser Auflistung von Agenten abgefragt werden. In dieser Anwendungsarchitektur wird eine zweite Abfrage benötigt, da die Datenquellen für den Typ der Auflistung und der Agenttyp voneinander getrennt sind, und es keine explizite Beziehung zwischen den beiden gibt (Wenn Sie eine Person, die hinsichtlich der Modelle der Meinung sind, in diesem Beispiel zwei vollkommen getrennt Modelle umfasst und die Beziehung zwischen den Objektmodellen künstliche erstellt und durch den Client erzwungen wird).

Abbildung 10 zeigt, wie den SharePoint-Dienst für die Entität Agent Abfragen erhält den Namen des Agents. Eine Sequenz von ähnlichen Code zum OGDI-Daten für die Netzwerkumgebung Statistik im Diagramm am unteren Rand der Seite Start Finder abzufragen. Der Code bis zu diesem Zeitpunkt zeigt nur die Abfragefunktionen der Silverlight-Client, aber der Client nicht auf Abfragen nur beschränkt ist; er hat viele Möglichkeiten Zurückschreiben Änderungen an den Dienst vom Client.

Abbildung 10 führt eine asynchrone Abfrage

private void GetAgentData(string agentName)
{
    var query = agentsService.Agents.Where(a => a.FullName == agentName) as 
        DataServiceQuery;

    query.BeginExecute(
        AgentQueryCallBack, query);
}

private void AgentQueryCallBack(IAsyncResult result)
{
    Dispatcher.BeginInvoke(() =>
    {
        var queryResult = result.AsyncState as DataServiceQuery<AgentsItem>;
        if (queryResult != null)
        {
            var agents = queryResult.EndExecute(result);
            this.grdAgent.DataContext = agents.First();
        }
    });
}

OData in PowerPivot

PowerPivot ist ein neues in-Memory-Business Intelligence-Tool verwendet wird, die als ein Add-In für Microsoft Excel 2010 gesendet wird, finden Sie auf folgender powerpivot.com für Weitere Informationen. Das Tool bietet Unterstützung für das Importieren großen Datenmengen aus einer Datenquelle und komplexe Datenanalysen durchführen und Berichterstellung. PowerPivot kann Daten aus einer Reihe von verschiedenen Datenquellen, einschließlich direkt aus einem feed OData importieren. Der PowerPivot von Data Feeds Option (siehe Abbildung 11 ), akzeptiert einen Dienstendpunkt OData als Speicherort des Feeds importieren.

image: PowerPivot Imports from an OData Feed
Abbildung 11 PowerPivot Imports aus einen Feed OData

Abbildung 12 zeigt ein Diagramm, das sich aus der Zusammenfassung Straftat statistischen Kenngrößen in der OGDI Washington, D.C., Datenfeed an.

image: PowerPivot Chart from OData Feed
Abbildung 12 PowerPivot Diagramm von Feeds OData

Das Diagramm in Abbildung 12 vorgenommen, mit denselben Daten wie im vorherigen Beispiel die Immobilien-Anwendung zeigt eine Zusammenfassung aller Daten für jeden Bezirk. Ich empfehlen Sie für Excel 2010 PowerPivot downloaden und Importieren von Daten aus der OGDI-Website unter ogdi.cloudapp.net/v1/dc-, und sehen selbst, wie schnell Sie umfangreiche Datenanalyse über diese Daten durchführen müssen.

Die Open Data Protocol-Schnellansicht

Der Datendienst OGDI ist im Wesentlichen eine “ Blackbox ” an eine externe Entwickler, der von einer Anwendung erstellt, der die vom Dienst bereitgestellten Daten. Glücklicherweise macht OGDI-Dienst unter Verwendung des Protokolls OData, keine Notwendigkeit besteht, Informationen über die internen Details des Dienstes zur Interaktion mit Daten. Das Programmiermodell für den Dienst ist das OData-Protokoll. Der Dienstendpunkt beschreibt die Form der Daten und, wie ich Sie im vorherigen Abschnitt gezeigt wird, müssen Sie mit dem Dienst interagieren. Es ist jedoch oft hilfreich, um die Form der Daten in den Dienst und erhalten ein besseres Verständnis der Beziehungen zwischen Teilen des Diensts. Die Open Data Protocol-Schnellansicht wurde für genau diesen Zweck erstellt. Es steht über die Tools | Erweiterungs-Manager-Menüelement in Visual Studio 2010. Abbildung 13 zeigt zwei Ansichten von der Schnellansicht, die die Struktur des Dienstes OGDI angezeigt.

Abbildung 13 der Draufsicht zeigt den gesamten Dienst; die untere Ansicht nur vier der Felder in der Anzeige anzeigen vergrößert wird. Die Schnellansicht stellt Entität legt fest, wie Felder und Beziehungen zwischen Entitäten als Verbindungslinien zwischen die Feldern. Es ist aus der Draufsicht in Abbildung 13 , dass der Dienst OGDI ausschließlich flache und keine Beziehungen überhaupt enthält vorhanden sind keine Verbindungslinien zwischen allen Feldern. Dies ist nur eine Merkmale des Dienstes OGDI und nicht typisch für die meisten OData Dienste. Die untere Ansicht zeigt eine Nahaufnahme von vier der Entität im Dienst festgelegt. Nur aus der Untersuchung der Ansicht können Sie feststellen, dass der Dienst Daten über Feuer Stationen, Elementary Schule Anwesenheit, Dialysis Schulungen und staatliche-Speicherorte sowie die Eigenschaften und Schlüssel für jeden dieser Typen verfügbar macht.

image: Open Data Visualizer Views of the OGDI Sample Service
Abbildung 13 Open-Schnellansicht für Datenansichten von der Beispieldienst OGDI

Weitere Informationen

Dieser Artikel bietet eine Einführung in Open Data-Protokoll und das Ökosystem hinzufügen, erstellt worden ist WCF Data Services Framework einschließlich. Weitere Informationen finden Sie auf die Open Data Protocol--Website unter odata.org-. Weitere Informationen zu WCF Data Services finden Sie unter msdn.microsoft.com/data/bb931106 -oder blogs.msdn.com/astoriateam-Blog WCF Data Services.

Shayne Burgess* ist Programmmanager in der Data Modeling Group bei Microsoft, die speziell auf WCF Data Services sowie die Open Data Protocol. Burgess regelmäßig Blogs auf WCF-Datendienste Teamblog blogs.msdn.com/b/astoriateam-.*

Unser Dank gilt den folgenden technischen Experten für die Durchsicht dieses Artikels: Elisa Flasko und Mike Flasko