Freigeben über


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:

  • edit - der Link zum aktuellen Eintrag für Lesen/Schreiben.

  • edit-media - der Eintrag ist ein Medienlinkeintrag, und der Link verweist auf eine Medienressource, die Binärdaten enthält.

  • next - der Link ist ein Überspringungstoken, das den nächsten Satz ausgelagerter Antwortdaten zurückgibt.Weitere Informationen finden Sie unter Konfigurieren des Datendiensts (WCF Data Services).

  • self - der Link zum aktuellen Eintrag, der schreibgeschützt ist.

  • relatedEntityUri- der Link gibt verknüpfte Entitäten zurück, auf die von einer Navigationseigenschaft zugegriffen wird.Dieser Typ von link-Element enthält möglicherweise auch untergeordnete inline-Elemente, wenn die $expand-Option verwendet wird, um mit der angeforderten Ressource verknüpfte Entitäten zurückzugeben.

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>

Siehe auch

Weitere Ressourcen

Nutzlastformate (WCF Data Services)