-
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: