Atom-Format (WCF Data Services)
Standardmäßig verwendet WCF Data Services die Atom-Veröffentlichung zum Veröffentlichen und Bearbeiten von Webressourcen.Dieses Protokoll stellt eine Standardmethode bereit, um Daten wie Entitäten und Beziehungen in ein XML-Format zu serialisieren, das in den Text der HTTP-Nachricht aufgenommen werden kann.
Hinweis
Mit WCF Data Services können Sie auch angeben, dass Anforderungen im JSON (JavaScript Object Notation)-Format zurückgegeben werden.Weitere Informationen finden Sie unter JSON-Format (WCF Data Services).
WCF Data Services definiert eine Standardzuordnung zwischen den Daten, die in Entitäten und Atom-Elementen enthalten sind.Im folgenden Beispiel wird der Text einer AtomPub-formatierten Antwortnachricht auf eine Anforderung an den Northwind-Beispieldatendienst für eine bestimmte Order gezeigt, die zu Customer 'ALFKI' gehört, wie durch den URI definiert: https://localhost:12345/Northwind.svc/Customers('ALFKI')/Orders?$filter=OrderID eq 10643.
<feed xml:base="https://localhost:12345/Northwind.svc/"
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<title type="text">Orders</title>
<id>https://localhost:12345/Northwind.svc/Customers('ALFKI')/Orders</id>
<updated>2009-07-20T19:18:56Z</updated>
<link rel="self" title="Orders" href="Orders" />
<entry>
<id>https://localhost:12345/Northwind.svc/Orders(10643)</id>
<title type="text" />
<updated>2009-07-20T19:18:56Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Orders" href="Orders(10643)" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Customers"
type="application/atom+xml;type=entry" title="Customers"
href="Orders(10643)/Customers" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Order_Details"
type="application/atom+xml;type=feed" title="Order_Details"
href="Orders(10643)/Order_Details" />
<category term="NorthwindModel.Orders"
scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:OrderID m:type="Edm.Int32">10643</d:OrderID>
<d:EmployeeID m:type="Edm.Int32">6</d:EmployeeID>
<d:OrderDate m:type="Edm.DateTime">1997-08-25T00:00:00</d:OrderDate>
<d:RequiredDate m:type="Edm.DateTime">1997-09-22T00:00:00</d:RequiredDate>
<d:ShippedDate m:type="Edm.DateTime">1997-09-02T00:00:00</d:ShippedDate>
<d:ShipVia m:type="Edm.Int32">1</d:ShipVia>
<d:Freight m:type="Edm.Decimal">30.0000</d:Freight>
<d:ShipName>Alfreds Futterkiste</d:ShipName>
<d:ShipAddress>Obere Str. 57</d:ShipAddress>
<d:ShipCity>Berlin</d:ShipCity>
<d:ShipRegion m:null="true" />
<d:ShipPostalCode>12209</d:ShipPostalCode>
<d:ShipCountry>Germany</d:ShipCountry>
</m:properties>
</content>
</entry>
</feed>
Elementdefinitionen
Die folgenden AtomPub-Elemente werden von WCF Data Services unterstützt; sie gehören zum Standard-XML-Namespace http://www.w3.org/2005/Atom:
Element |
Beschreibung |
---|---|
category |
Deklariert den Entitätstyp der entry-Ressource. |
content |
Enthält die Eigenschaftendaten der entry-Ressource. |
entry |
Stellt eine Ressource dar.Dies ist das Element der obersten Ebene, wenn durch den Entitätsschlüssel auf eine Ressource zugegriffen wird.In diesem Fall schließt der entry ein xml:base-Attribut ein, das den Basis-URI des Diensts definiert, der zum Auflösen anderer relativer URI-Werte im Feed verwendet wird. |
feed |
Dies ist das Stammelement, wenn aus einer Entitätenmenge auf Ressourcen zugegriffen wird.Einzelne Ressourcen werden als untergeordnete entry-Elemente ausgedrückt, die Entitätsdaten enthalten.Dieses Element schließt ein xml:base-Attribut ein, das den Basis-URI des Diensts definiert, der zum Auflösen anderer relativer URI-Werte im Feed verwendet wird. |
id |
Stellt den URI der entry-Ressource dar.Stellt bei Verwendung in einem feed-Element die Ressourcen in der Auflistung dar. |
link |
Enthält ein href-Attribut, das ein relativer URI ist, der sich auf den Eintrag bezieht.Es gibt vier Typen von unterstützten Links in einem Eintrag, jeder identifiziert durch einen der folgenden rel-Attributwerte:
|
title |
Enthält den Namen der Entitätenmenge der Ressourcen in der Auflistung, wenn es in einem feed-Element enthalten ist, ist jedoch standardmäßig in einem entry-Element leer. |
updated |
Enthält das aktuelle Datum und die aktuelle Uhrzeit, die vom Server zum Zeitpunkt der Anforderungsverarbeitung festgelegt wurden. |
WCF Data Services erweitert die AtomPub-Spezifikation, um zu definieren, wie Entitätsdaten in einem entry-Element beschrieben werden.Weitere Informationen finden Sie unter 2.2.6.2 im Spezifikationsdokument "Atom Publishing Protocol: Data Services URI and Payload Extensions" (in englischer Sprache).Die folgenden Elemente beschreiben Entitätsdaten in einer Ressource und gehören zu den XML-Namespaces m=https://schemas.microsoft.com/ado/2007/08/dataservices/metadata und d=https://schemas.microsoft.com/ado/2007/08/dataservices:
Element |
Beschreibung |
---|---|
m:count |
Enthält die Anzahl von Entitätsressourcen, die von der Abfrage zusammen mit den Entitätsdaten zurückgegeben werden.Diese Anzahl wird zurückgegeben, wenn die $inlinecount-Abfrageoption verwendet wird.Dies ist ein untergeordnetes Element eines feed-Elements der obersten Ebene. |
m:inline |
Enthält einen feed der verknüpften Ressourcen, wie vom übergeordneten link-Element definiert.Dies ermöglicht die Rückgabe verknüpfter Entitäten in der gleichen Antwort. |
m:properties |
Untergeordnetes Element eines entry-Elements, das die Eigenschaftenwerte einer Entität enthält. |
d:property |
Enthält den Wert einer Eigenschaft einer Entität.Das type-Attribut deklariert den Typ der Eigenschaft. |
Hinweis
WCF Data Services ermöglicht Ihnen die Anpassung der Atom-Serialisierung in einer Datendienstantwort, damit Eigenschaften einer Entität nicht verwendeten Elementen zugeordnet werden können, die im AtomPub-Protokoll definiert werden.Weitere Informationen finden Sie unter Atom-Feedsanpassung (WCF Data Services).
Verzögerte Inhalte
Um die Entitätsdaten zu reduzieren, die der Datendienst in einer bestimmten Antwort zurückgibt, erstellt WCF Data Services ein link-Element für verknüpfte und ausgelagerte Entitätsressourcen.
Verknüpfte Entitätsressourcen
Verknüpfte Entitätsressourcen sind Ressourcen, die sich auf ein zurückgegebenes entry-Element in einem Feed beziehen.Entry-Elemente sind verknüpft, wenn eine Beziehung durch eine Navigationseigenschaft zwischen den beiden Entitäten im Datenmodell definiert wird.Jedes link-Element zeigt auf die verknüpfte Ressource.Dies verzögert den Abruf des Inhalts, bis Sie die Ressource anfordern.Ein link zeigt möglicherweise auf eine Ressource, die eine Entitätenmenge oder eine einzelne Entitätsressource ist.Der Name der verknüpften Entitätenmenge wird im rel-Attribut an den URI angefügt.Um die verknüpften Ressourcen explizit zu laden, kann der Client eine Anforderung für diese Ressource an den Datendienst senden, indem er den relativen URI im link-Element mit dem base-URI im Stammelement kombiniert.Durch Hinzufügen des link-Elements zum base-Attribut des entry-Stammelements in der folgenden Atom-Antwort wird z. B. der URI https://localhost:12345/Northwind.svc/Customers('ALFKI')/Orders erstellt, der die verknüpften Orders zurückgibt:
<entry xml:base="http://myserver/Northwind.svc/"
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<id>http://myserver/Northwind.svc/Customers('ALFKI')</id>
<title type="text" />
<updated>2009-07-31T06:31:57Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Customers" href="Customers('ALFKI')" />
<link
rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders"
type="application/atom+xml;type=feed" title="Orders"
href="Customers('ALFKI')/Orders" />
<category term="NorthwindModel.Customers"
scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:CustomerID>ALFKI</d:CustomerID>
<d:CompanyName>Alfreds Futterkiste</d:CompanyName>
<d:ContactName>Peter Franken</d:ContactName>
<d:ContactTitle>Marketing Manager</d:ContactTitle>
<d:Address>Obere Str. 57</d:Address>
<d:City>Berlin</d:City>
<d:Region m:null="true" />
<d:PostalCode>12209</d:PostalCode>
<d:Country>Germany</d:Country>
<d:Phone>089-0877310</d:Phone>
<d:Fax>089-0877554</d:Fax>
</m:properties>
</content>
</entry>
WCF Data Services ermöglicht es Ihnen auch, Daten aus verknüpften Ressourcen in einer einzelnen Antwort zurückzugeben.Sie können verknüpfte Entitätenmengen, die in der Antwort enthalten sein sollen, mithilfe der $expand-Abfrageoption angeben.Weitere Informationen finden Sie unter ADO.NET Data Services-Systemabfrageoptionen.Wenn Sie diese Abfrageoption verwenden, enthält das verknüpfte link-Element ein feed-Element oder entry-Element, das die verknüpften Ressourcen enthält.Im folgenden Beispiel wird der Text einer entsprechenden AtomPub-formatierten Antwortnachricht auf eine Anforderung an den Northwind-Beispieldatendienst für eine bestimmte Order gezeigt, die auch den Customer 'ALFKI' umfasst, auf den verwiesen wird, wie durch den URI definiert: https://localhost:12345/Northwind.svc/Customers('ALFKI')/Orders?$filter=OrderID eq 10643&$expand=Customers.
<feed xml:base="https://localhost:12345/Northwind.svc/"
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<title type="text">Orders</title>
<id>https://localhost:12345/Northwind.svc/Customers('ALFKI')/Orders</id>
<updated>2009-07-21T04:47:39Z</updated>
<link rel="self" title="Orders" href="Orders" />
<entry>
<id>https://localhost:12345/Northwind.svc/Orders(10643)</id>
<title type="text" />
<updated>2009-07-21T04:47:39Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Orders" href="Orders(10643)" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Customers"
type="application/atom+xml;type=entry" title="Customers"
href="Orders(10643)/Customers">
<m:inline>
<entry>
<id>https://localhost:12345/Northwind.svc/Customers('ALFKI')</id>
<title type="text" />
<updated>2009-07-21T04:47:39Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Customers" href="Customers('ALFKI')" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders"
type="application/atom+xml;type=feed" title="Orders"
href="Customers('ALFKI')/Orders" />
<category term="NorthwindModel.Customers"
scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:CustomerID>ALFKI</d:CustomerID>
<d:CompanyName>Alfreds Futterkiste</d:CompanyName>
<d:ContactName>Peter Franken</d:ContactName>
<d:ContactTitle>Marketing Manager</d:ContactTitle>
<d:Address>Obere Str. 57</d:Address>
<d:City>Berlin</d:City>
<d:Region m:null="true" />
<d:PostalCode>12209</d:PostalCode>
<d:Country>Germany</d:Country>
<d:Phone>089-0877310</d:Phone>
<d:Fax>089-0877554</d:Fax>
</m:properties>
</content>
</entry>
</m:inline>
</link>
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Order_Details"
type="application/atom+xml;type=feed" title="Order_Details"
href="Orders(10643)/Order_Details" />
<category term="NorthwindModel.Orders"
scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:OrderID m:type="Edm.Int32">10643</d:OrderID>
<d:EmployeeID m:type="Edm.Int32">6</d:EmployeeID>
<d:OrderDate m:type="Edm.DateTime">1997-08-25T00:00:00</d:OrderDate>
<d:RequiredDate m:type="Edm.DateTime">1997-09-22T00:00:00</d:RequiredDate>
<d:ShippedDate m:type="Edm.DateTime">1997-09-02T00:00:00</d:ShippedDate>
<d:ShipVia m:type="Edm.Int32">1</d:ShipVia>
<d:Freight m:type="Edm.Decimal">30.0000</d:Freight>
<d:ShipName>Alfreds Futterkiste</d:ShipName>
<d:ShipAddress>Obere Str. 57</d:ShipAddress>
<d:ShipCity>Berlin</d:ShipCity>
<d:ShipRegion m:null="true" />
<d:ShipPostalCode>12209</d:ShipPostalCode>
<d:ShipCountry>Germany</d:ShipCountry>
</m:properties>
</content>
</entry>
</feed>
Ausgelagerte Entitätsressourcen
Wenn Paging im Datendienst aktiviert ist, ist die Anzahl von Einträgen im Feed, die der Datendienst zurückgibt, durch die Konfiguration des Datendiensts beschränkt.Seitenbeschränkungen können für jede Entitätenmenge separat festgelegt werden.Weitere Informationen finden Sie unter Konfigurieren des Datendiensts (WCF Data Services).Wenn dies auftritt, ist das abschließende Element im feed ein link-Element im URI, der eine $skiptoken-Abfrageoption enthält, die die nächste Datenseite zurückgibt.Im folgenden Beispiel wird ein feed gezeigt, der eine Seite ist, die nur eine einzelne Customers-Entität enthält, und ein link-Element, das einen URI enthält, der die nächste Customers-Entität zurückgibt:
<feed xml:base="https://localhost:12345/Northwind.svc/"
xmlns:d="https://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="https://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<title type="text">Customers</title>
<id>https://localhost:12345/Northwind.svc/Customers</id>
<updated>2009-08-08T03:22:38Z</updated>
<link rel="self" title="Customers" href="Customers" />
<entry>
<id>https://localhost:12345/Northwind.svc/Customers('ALFKI')</id>
<title type="text" />
<updated>2009-08-08T03:22:38Z</updated>
<author>
<name />
</author>
<link rel="edit" title="Customers" href="Customers('ALFKI')" />
<link rel="https://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders"
type="application/atom+xml;type=feed" title="Orders"
href="Customers('ALFKI')/Orders" />
<category term="NorthwindModel.Customers"
scheme="https://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:CustomerID>ALFKI</d:CustomerID>
<d:CompanyName>Alfreds Futterkiste</d:CompanyName>
<d:ContactName>Peter Franken</d:ContactName>
<d:ContactTitle>Marketing Manager</d:ContactTitle>
<d:Address>Obere Str. 57</d:Address>
<d:City>Berlin</d:City>
<d:Region m:null="true" />
<d:PostalCode>12209</d:PostalCode>
<d:Country>Germany</d:Country>
<d:Phone>089-0877310</d:Phone>
<d:Fax>089-0877451</d:Fax>
</m:properties>
</content>
</entry>
<link rel="next"
href="https://localhost:12345/Northwind.svc/Customers?$skiptoken='ALFKI'" />
</feed>