370 likes | 485 Views
RESTful Services ‘a la carte ’. Gustavo Javier Machado Arquitecto Tellago Inc . gustavo.machado@tellago.com http://thegsharp.wordpress.com. Agenda. REST REST & Microsoft WCF WebHttp WCF DataServices MVC 2 Cuando usar que ?. REST. ¿Porque REST?.
E N D
RESTfulServices ‘a la carte’ Gustavo Javier Machado Arquitecto Tellago Inc. gustavo.machado@tellago.com http://thegsharp.wordpress.com
Agenda • REST • REST & Microsoft • WCF WebHttp • WCF DataServices • MVC 2 • Cuandousarque?
¿Porque REST? • Representational StateTransfer. • Estilo de arquitectura. • Mejor usode HTTP. • Menor complejidad. • Mayor interoperabilidad. ¿Que significa? ¿Que es? ¿Por qué rest?
REST - Principios • Identificar recursos con Uris • Utilizar verbos de http • Conectar recursos utilizando links • Presentar en multiples formatos (XML,json,etc) • Comunicación stateless
REST – Principio 1 “Los recursos son identificadosmediante Uris” Ejemplos: http://miservicio/Salas Podria ser la Uri paraacceder a la lista de salas de un edificio. http://miservicio/Salas/3 Podria ser la Uri paraacceder a la representacion de la Salanumero 3. http://miservicio/Colores/rojo Podria ser la Uri paraacceder al color rojo. http://miservicio/Transaccion/1145001 En un serviciounatransaccionpuede ser considerada un recurso. En este caso estamos referenciando a la transaccion 1145001.
REST – Principio 2 “Utilizar verbos de HTTP” • GET: Retorna la representacion del recurso. • PUT: Actualiza el estado de un recurso. • POST: Crea un nuevorecurso. • DELETE: Borra un recurso.
REST – Principio 3 “Conectar recursos utilizando links” <order self=’http://example.com/orders/1234’> <amount>23</amount> <product ref=’http://example.com/products/4554’ /> <customer ref=’http://example.com/customers/1234’ /> </order>
REST – Principio 4 “Presentar en multiples formatos” GET /accounts('UBS') Host: restsamples.com Accept: application/atom+xml … GET /accounts('UBS') Host: restsamples.com Accept: application/json …
REST – Principio 5 “Comunicacion stateless” GET /accounts('ubs') Host: restsamples.com Accept: application/account+xml <account><contact ref="/contacts('ubs-12345')">...</contact></account> … GET /contacts('ubs-12345') Host: restsamples.com Accept: application/contact+xml <contact id="ubs-12345">...</contact>
RESTfulness SOAPers vs RESTafaris RESTafaris
Microsoft y REST WCF WebHttp Public class Service: IContract { [WebGet] Type Operation1(parameters….); . . . [WebInvoke] Type Operationn(parameters….); } XML JSON Atom
Microsoft y REST WCF DataServicesnosdioOData Public class MyContext : IUpdatable { IQueryable<T1> field1; . . . IQueryable<Tn> fieldn; } ODATA AtomP JSON
Microsoft y REST Y no nosolvidemos de ASP .NET MVC Public class Service : Controller { ActionResult Action1(parameters…); . . . ActionResultActionn(parameters…); XML JSON Atom
WCF Webhttp • Programming Model de WCF quenosbrinda mayor control sobre Uri, formatos y protocolos a la hora de desarrollarservicios HTTP quepueden ser REST o no.
WCF Webhttp En .NET 3.5 • Podemosencontrarlasclases en System.ServiceModel.Web. • Para desarrollarclientes de servicios REST podemosrecurrir al WCF REST Starter Kit. • Debemosbajar el WCF REST Starter kit (CODEPLEX). • UtilizamosMicrosoft.Http y Microsoft.Http.Extensions. En .NET 4.0
Hello world! El request… (GET) http://miservicio/Greetings/Gustavo El response <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Hello Gustavo</string>
Codigo… • Uri template • Http Verb • Help page • Format • Links • Error codes
WCF Dataservices Si pudiesemosir de nuestrainterfaz a unainterfazmasgenerica… • …Estariamosdefiniendo un protocolo REST propiopara ABMs…
WCF Dataservices … y Si pudiesemosexponer un iqueryable<T> … • …Estariamosdefiniendo un protocolo REST propioconsultas...
WCF Dataservices Public class MyContext : IUpdatable { IQueryable<T1> field1; . . . IQueryable<Tn> fieldn; } ODATA AtomP JSON
WCF Dataservices Public class MyContext : IUpdatable { . }
WCF Dataservices Public class MyContext : IUpdatable { IQueryable<T1> field1; . . . IQueryable<Tn> fieldn; } ODATA AtomP JSON
Codigo… • Custom Container • EF client/servidor • AccessRules • Service Operations
ASP .NET MVC Public class Service : Controller { ActionResult Action1(parameters…); . . . ActionResultActionn(parameters…); XML JSON Atom
ASP .NET MVC • Web • Uris • Format
Participá del DEMOFEST Los mejores proyectos de las células Microsoft, los grupos de investigación de estudiantes, son seleccionados para participar en el espacio del DEMOFEST. ¡Conocélos!
Necesitamos tu Feedback! • Completá los FORM de avaluación que estarán en nuestra WEB: www.codecamp.com.ar • Necesitamos de tu feedback para mejorar.
© 2008 Microsoft Corporation. Todos los derechosreservados. Microsoft, Windows, Windows Vista y otrosnombres de producto son y pueden ser marcasregistradas y registros en EstadosUnidos y en otrospaíses. La informacióncontenida en el presenteessólopara fines informativos y representa la visión actual de Microsoft Corporation a la fecha de estapresentación. Debido a que Microsoft debe responder a lascambiantescondiciones del mercado, no se debeinterpretarcomo un compromisopor parte de Microsoft, y Microsoft no puedegarantizar la precisión de ningunainformaciónprovistadespués de la fecha de estapresentación. MICROSOFT NO OFRECE GARANTÍA ALGUNA, EXPRESA, IMPLÍCITA O DE LEY, RESPECTO A LA INFORMACIÓN EN ESTA PRESENTACIÓN.