Frage

Wenn man darüber nachdenkt, nicht das REST-Paradigma der ressourcenorientierten einkochen ist objektorientiert zu sein (mit eingeschränkter Funktionalität und nutzt HTTP so viel wie möglich)?

Ich bin nicht unbedingt sagen, es ist eine schlechte Sache, sondern vielmehr, dass, wenn sie im Wesentlichen der gleich sehr ähnlich dann ist es viel einfacher wird, REST und die Auswirkungen zu verstehen, dass eine solche Architektur bringt.

Update: Hier sind weitere spezielle Informationen:

  1. REST-Ressourcen entsprechen öffentliche Klassen. Privatunterricht / Ressourcen sind einfach nicht ausgesetzt.
  2. Resource Zustand entspricht Klasse öffentlichen Methoden oder Felder. Private Methoden / Felder / Zustand ist einfach nicht ausgesetzt (dies bedeutet nicht, es ist nicht da).
  3. Es ist zwar wahr, dass REST nicht kundenspezifischen Zustand über Anforderungen nicht behalten, es hat beibehalten Ressourcenstatus für alle Kunden. Ressourcen Haben Zustand die gleiche Art und Weise Klassen Zustand.
  4. REST-Ressourcen sind global eindeutig durch einen URI in der gleichen Art und Weise, dass die Server-Objekte identifiziert global eindeutig identifiziert werden durch ihren Datenbank-Adresse, Tabellennamen und Primärschlüssel. Zugegeben ist es (noch) nicht eine URI dies vertreten, aber man kann man sich leicht konstruieren.
War es hilfreich?

Lösung

REST ist ähnlich wie OO, dass sie beiden Modelle der Welt, als Entitäten, die Nachrichten (das heißt, Methoden) akzeptieren, aber darüber hinaus, dass sie anders ist.

Objektorientierung betont Einkapselung von Zustand und Opazität , unter Verwendung von so vielen verschiedenen Methoden notwendig, sich auf den Zustand zu betreiben. REST ist über Übertragung von (Darstellung) Zustand und Transparenz . Die Anzahl der Methoden in REST verwendet wird eingeschränkt und gleichmäßig über alle Ressourcen. Die am nächsten kommt, in OOP ist die ToString() Methode, die auf eine HTTP-GET sehr grob entspricht.

Objektorientierung ist Stateful - Sie auf ein Objekt beziehen und Methoden auf sie anrufen können, während in einer Sitzung beibehalten Zustand, in dem das Objekt noch im Gültigkeitsbereich befindet. REST ist staatenlos -. Alles, was Sie mit einer Ressource tun mögen, ist in einer Mitteilung angegeben und alles, was Sie jemals wissen müssen, dass die Nachricht in Bezug auf zurück in einer einzigen Antwort gesendet

In der Objektorientierung, gibt es kein Konzept der universellen Objektidentität - Objekte entweder bekommen Identität aus ihrer Speicheradresse zu einem bestimmten Zeitpunkt, ein Rahmen spezifischen UUID oder aus einer Datenbank Schlüsseln. In REST alle Ressourcen werden mit einem URI identifiziert und müssen nicht instanziiert oder entsorgt werden - sie existieren immer in der Cloud, wenn der Server mit einem reagiert 404 Not Found oder 410 Vorbei , in whch Fall, dass Sie wissen, dass es keine Ressource mit diesem URI.

REST hat Garantien von Sicherheit (zB wird kein GET Nachrichtenstatus ändern) und idempotence (zB eine PUT-Anfrage gesendet mehrfach gleiche Wirkung hat wie nur einmal). Obwohl einige Richtlinien für bestimmte objektorientierte Technologien etwas zu sagen haben, wie bestimmte Konstrukte Zustand beeinflussen, gibt es wirklich nichts über Objektorientierung, die etwas über Sicherheit und idempotence sagt.

Andere Tipps

Ich denke, es gibt einen Unterschied zwischen einem Konzept zu sagen in Bezug auf Objekte ausgedrückt werden kann und sagen, das Konzept ist das gleiche als Objektorientierung.

OO bietet eine Möglichkeit, REST-Konzepte zu beschreiben. Das bedeutet nicht, REST selbst implementiert OO.

Sie haben Recht. Dan Connolly schrieb einen Artikel etwa im Jahr 1997. das Fielding Dissertation spricht auch über sie.

Objekte Bündel Zustand und Funktion zusammen. Resource-Orientierung wird über explizit modelliert Zustand (Daten), die Funktion zu vordefinierten Verben mit universeller Semantik Begrenzung (Im Fall von HTTP GET / PUT / POST / Löschen), und verläßt den Rest der Verarbeitung auf das Client.

Es gibt keine Entsprechung für diese Konzepte in der Objektorientierung Welt.

Nur wenn Ihre Objekte sind DTOs ( Data Transfer Objects ) - da kann man nicht wirklich hat Verhalten anders als Persistenz.

Ja, die parallel zur Objektorientierung korrekt ist.

Die Sache ist, die meisten Web Service (REST, RESTful, SOAP, ..) Informationen in Form von Objekten passieren kann, so dass ist nicht das, was sie von anderen unterscheidet. SOAP neigt dazu, weniger Dienstleistungen mit mehr Methoden zu führen. REST neigt dazu, mehr Dienstleistungen (1 pro Ressourcentyp) mit ein paar Anrufe je.

führen

Ja, REST ist über Übertragung von Objekten. Aber es ist nicht das ganze Objekt; nur das aktuelle Zustand des Objekts. Die implizite Annahme ist, dass die Klassendefinitionen auf beiden Seiten des Rests sind potentiell ähnliche; sonst das Objekt Zustand hat sich in einigen neuen Objekt dazu gezwungen worden.

REST kümmert sich nur um 4 Ereignisse im Leben auf einem Objekt erstellen (POST), abrufen (GET), update (PUT) und löschen. Sie sind bedeutende Ereignisse, aber es gibt nur diese vier.

Ein Objekt kann in vielen anderen Veranstaltungen mit vielen anderen Objekten teilnehmen. Der ganze Rest dieses Verhalten ist völlig außerhalb der REST-Ansatz.

Es gibt eine enge Beziehung - REST Objekte bewegt -. Aber sie sind die gleichen reduziert Ihre Objekte zu passiven Sammlungen von Bits ohne Methoden sagen

REST ist nicht nur über Objekte, sein auch über Eigenschaften :: eine Post-Anforderung an / users / john / phone_number mit einer neuen Telefonnummer wird ein neues Objekt nicht hinzufügen, das eine Eigenschaft des Benutzerobjekt ‚john‘ Einstellung

Das ist nicht einmal der ganze Zustand des Objekts, sondern nur eine Änderung auf einen kleinen Teil des Staates.

Es ist sicherlich nicht ein. 1: 1 Ursache

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top