servicios wcf rest y soap simultaneamente - eledwin

7
Servicios WCF: Consumir por REST y SOAP simultaneamente Publicado el 17/05/2014 | 1847 visitas Regresando nuevamente de unos días con mucho trabajo quiero compartir con ustedes este tutorial paraconstruir un servicio web con tecnología WCF y lo expondremos por SOAP y REST simultáneamente. Antes de ir al código prestemos atención a la imagen anterior. Normalmente esto sería lo que yo hago si tuviera que exponer información hacia uno o varios aplicativos en mismas o diferentes plataformas y tecnologías. Para realizar este tutorial vamos a suponer que es un sistema de compras online y vamos a exponer una API publica para consulta de productos. Vamos a exponer por SOAP hacia una aplicación de escritorio y por REST hacia un sitio Web que consumiremos por Ajax.

Upload: vanesabm

Post on 06-Sep-2015

228 views

Category:

Documents


2 download

DESCRIPTION

REST, SOAP, Chrome

TRANSCRIPT

  • 24/7/2015 ServiciosWCF:ConsumirporRESTySOAPsimultaneamenteeledwin.com

    data:text/htmlcharset=utf8,%3Ch1%20style%3D%22margin%3A%200px%3B%20padding%3A%200px%3B%20fontfamily%3A%20Oswald%2C%20Ari 1/7

    ServiciosWCF:ConsumirporRESTySOAPsimultaneamente

    Publicadoel17/05/2014|1847visitas

    RegresandonuevamentedeunosdasconmuchotrabajoquierocompartirconustedesestetutorialparaconstruirunserviciowebcontecnologaWCFyloexpondremosporSOAPyRESTsimultneamente.

    Antesdeiralcdigoprestemosatencinalaimagenanterior.Normalmenteestoseraloqueyohagosituvieraqueexponerinformacinhaciaunoovariosaplicativosenmismasodiferentesplataformasytecnologas.

    PararealizarestetutorialvamosasuponerqueesunsistemadecomprasonlineyvamosaexponerunaAPIpublicaparaconsultadeproductos.

    VamosaexponerporSOAPhaciaunaaplicacindeescritorioyporRESThaciaunsitioWebqueconsumiremosporAjax.

  • 24/7/2015 ServiciosWCF:ConsumirporRESTySOAPsimultaneamenteeledwin.com

    data:text/htmlcharset=utf8,%3Ch1%20style%3D%22margin%3A%200px%3B%20padding%3A%200px%3B%20fontfamily%3A%20Oswald%2C%20Ari 2/7

    EntendiendolosconceptosbsicosWCF,SOAPyRESTYaquenoestemadeestetutorialcontextualizarnossobreestastecnologasvoysimplementeacitaralgunossitiosdondepodrnconocerencasodequenotenganniideadequesetrataesto.

    WCFQueesWindowsCommunicationFoundation[ingls]WindowsCommunicationFoundationWikipedia[ingls]

    SOAPSimpleObjectAccessProtocolWikipedia

    RESTRepresentationalStateTransfer

    Sabiendoesto,vamosainiciarlaconstruccindenuestropequeoproyectoenVisualStudio2010yFramework4.0osuperior.

    VamosacrearunanuevaaplicacinWebvaciaoASP.NETEmptyWebApplicationqueyollamarMiMercado.

    Eneste,creareunacarpetallamadaServicesyenestacarpetavoyacrearmiServicioWCFhaciendoclicderechosobrelacarpeta,Aadir,Nuevoelementoybuscamos"ServicioWCFHabilitadoparaAJAX"o"AJAXenabledWCFService"quellamaremos"MiMercadoService.svc".

  • 24/7/2015 ServiciosWCF:ConsumirporRESTySOAPsimultaneamenteeledwin.com

    data:text/htmlcharset=utf8,%3Ch1%20style%3D%22margin%3A%200px%3B%20padding%3A%200px%3B%20fontfamily%3A%20Oswald%2C%20Ari 3/7

    EstenoesmsqueunservicioWCFcomn,loquepasaalcrearunserviciohabilitadoparaAJAXesqueseaadenalgunosatributosadicionalesenelarchivodeconfiguracineInterfaz,propiedadesyconfiguracionesquepodemosaadirmanualmentesinningninconveniente.

    QuetenemosalcrearelnuevoservicioWCF?ArchivoMiMercadoService.svc.csEstearchivoeslaimplementacindelservicioweb.AquiseespecificancadaunodelosmtodosuOperacionesdecontrato(OperationContract).Cadaunodeestosmtodosserexpuestosiempreycuandotengalapropiedad[OperationContract]sobreelmismo.ComoejemplotenemoselmtodopublicvoidDoWork().

    Adicionalmente,veamosqueenladefinicindelaclasetenemosotraspropiedadesquesonServiceContractyAspNetCompatibilityRequirements,estesegundohabilitalacompatibilidadconASP.NET.

    ArchivoWeb.ConfigAquipodemosevidenciarquesehacreadounnuevoniveldeconfiguracinllamadosystem.serviceModel,aquseconfiguranlosserviciosWCF.

    Tenemoslosservicesquesonladefinicindecadaunodelosserviciosquetengamos,losbehaviorssonlaconfiguracindeloscomportamientosdeestosserviciosy

  • 24/7/2015 ServiciosWCF:ConsumirporRESTySOAPsimultaneamenteeledwin.com

    data:text/htmlcharset=utf8,%3Ch1%20style%3D%22margin%3A%200px%3B%20padding%3A%200px%3B%20fontfamily%3A%20Oswald%2C%20Ari 4/7

    finalmenteserviceHostingEnvironmentquenospermiteestablecerparmetrosdeconfiguracinparaelhostdeserviciosengeneral.

    ConfigurarEndPointRESTySOAPenWCFEnWCFexisteunconceptollamadoEndPoint,estoenpalabrassimplessonpuntosdeaccesoenelservidor,podemosverlocomoejecutarunescuchadordesolicitudes.EnestecasocrearemosunEndPointpararecibirlassolicitudesRESTyotroparalassolicitudesSOAP.Parahacerestonosubicamosenlaseccindeservicesdelarchivoweb.config.Encontraremosalgosimilaraesto:

  • 24/7/2015 ServiciosWCF:ConsumirporRESTySOAPsimultaneamenteeledwin.com

    data:text/htmlcharset=utf8,%3Ch1%20style%3D%22margin%3A%200px%3B%20padding%3A%200px%3B%20fontfamily%3A%20Oswald%2C%20Ari 5/7

  • 24/7/2015 ServiciosWCF:ConsumirporRESTySOAPsimultaneamenteeledwin.com

    data:text/htmlcharset=utf8,%3Ch1%20style%3D%22margin%3A%200px%3B%20padding%3A%200px%3B%20fontfamily%3A%20Oswald%2C%20Ari 6/7

    [DataContract]publicclassProducto{[DataMember]publicintProductoID{get;set;}[DataMember]publicstringNombre{get;set;}[DataMember]publicdoublePrecio{get;set;}}

    Alasclasesconlasquevamosatransportarinformacindebemosagregarlelapropiedad[DataContract]yacadaatributodelaclaseel[DataMember].

    Ahoravamosacrearunmtodoqueretorneunalistadeproductos.

    [WebGet(UriTemplate="/productos",ResponseFormat=WebMessageFormat.Json)][OperationContract]publicListListarProductos(){//CrearlistadeproductosyaadirelementosListproductos=newList();productos.Add(newProducto(){ProductoID=0,Nombre="MotorolaMotoG",Precio=4500000});productos.Add(newProducto(){ProductoID=1,Nombre="SonyVaioUltra",Precio=950000});

    Bien,tenemosunmtodocomnycorrientecondospropiedades"extraas":

    [OperationContract]quenospermitehabilitarelmtodoparaqueseaexpuestopormediodelservicio,estonosdicequesinestapropiedadnopodramosinvocarloyaquenoestaradisponible.

    [WebGet]exponeesteservicioparaunasolicitudHTTPGET(SilestesobreRESTsabrsmasomenosdequesetrata).ParaestoespecificamosunUriTemplateconvalor"/productos"paraquepormediodelaurlinvoquemoslocalhost/productosenlugardelocalhost/ListarProductos.

    Laconfiguracin[WebGet]y[WebInvoke]sonnicamenteparaREST,siquierestrabajarsimplementeconSOAPnonecesitasestablecerestaspropiedades.

  • 24/7/2015 ServiciosWCF:ConsumirporRESTySOAPsimultaneamenteeledwin.com

    data:text/htmlcharset=utf8,%3Ch1%20style%3D%22margin%3A%200px%3B%20padding%3A%200px%3B%20fontfamily%3A%20Oswald%2C%20Ari 7/7

    AhorapodemosprobarnuestromtododeconsultaejecutandonuestroproyectoWeb.

    CmoprobarservicioWebRESTySOAPParaprobarunservicioRESTexistenvariasherramientasdeusolibreymuybuenasquepodemosutilizar,entrelasqueheexploradoencuentrolassiguientescomoaplicacionesdeGoogleChrome:PostmanRestClient,RestConsole,AdvancedRestClient.EncontrarsmuchasmsynosoloparaGoogleChrome,tambinparaFirefoxyparaescritorio,escuestindebuscar.

    ParasolicitudesRESTdetipoGETtambinpuedesutilizarelexploradordeInternetas: