Za prvé, služby RESTFUL se řídí architektonickým stylem známým jako Representational State Transfer (REST). Architektonický styl je soubor omezení, která lze použít při budování něčeho. A styl softwarové architektury je něco, co popisuje vlastnosti, které lze použít k vedení implementace softwarového systému. REST je architektonický styl, který lze použít k vytvoření softwaru, ve kterém mohou klienti (uživatelští agenti) zadávat požadavky na služby (koncové body). REST je způsob implementace architektonického stylu klient/server; ve skutečnosti je REST výslovně založen na architektonickém stylu klient/server.
Muž jménem Roy Thomas Fielding poprvé vytvořil pojem REST jako koncept ve své doktorské práci („Styly architektury a návrh síťových softwarových architektur“). Byl jedním z lidí, kteří pracovali na specifikaci, která dnes řídí většinu internetu: Hypertext Transfer Protocol (HTTP). Normálně není pozadí lidí popisujících architektonický styl pro vysvětlení stylu relevantní, ale tady si to myslím je důležité, protože VĚŘÍM, že jedním z nejlepších způsobů, jak získat základní pochopení REST, je přemýšlet o webu a jeho fungování.
WCF a REST
WCF je rámec společnosti Microsoft pro vytváření aplikací, které komunikují po síti bez ohledu na protokol nebo styl. Koncepcí WCF bylo vytvořit rozšiřitelný, připojitelný rámec pro učení informací o programovacím a konfiguračním modelu, aby vývojáři mohli tyto znalosti aplikovat na mnoho různých typů distribuovaných systémů.
I když je pravda, že velká část WCF je orientována na RPC (pomocí SOAP), ve skutečnosti měla šanci odhalit a využívat služby REST od doby, kdy byla poprvé vydána jako součást .NET Framework 3.0. Se sestavením .NET Framework 3.5 System.ServiceModel.Web byl přidán programovací model a také některé části infrastruktury, které byly vytvořeny pro práci se stylem REST. A .NET Framework 3.5 SP1 přidává malá vylepšení, která usnadňují používání REST..
Programovací model se točí kolem dvou nových atributů, WebGetAttribute a WebInvokeAttribute, a mechanismu šablony URI, který vám umožňuje deklarovat URI a sloveso, na které bude každá metoda reagovat. Infrastruktura je zahrnuta ve formě vazby (WebHttpBinding) a chování (WebHttpBehavior), které poskytují správný síťový zásobník pro použití REST. Kromě toho existuje určitá pomoc s hostingovou infrastrukturou od vlastního ServiceHost (WebServiceHost) a ServiceHostFactory (WebServiceHostFactory).