{"id":743,"date":"2017-05-26T14:31:22","date_gmt":"2017-05-26T17:31:22","guid":{"rendered":"http:\/\/gianfratti.com\/?p=743"},"modified":"2017-05-26T14:33:06","modified_gmt":"2017-05-26T17:33:06","slug":"qual-a-diferencas-entre-wcf-webservice-e-webapi","status":"publish","type":"post","link":"https:\/\/gianfratti.com\/index.php\/qual-a-diferencas-entre-wcf-webservice-e-webapi\/","title":{"rendered":"Qual a diferen\u00e7as entre WCF, WebService e WebApi"},"content":{"rendered":"<p>Estudando um pouco sobre servi\u00e7os encontrei um POST interessante sobre a diferen\u00e7a de WCF, Webervice e WebApi, entendo que muita gente tem duvidas quanto a esse assunto, ent\u00e3o estou replicando a informa\u00e7\u00e3o<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-744\" src=\"http:\/\/gianfratti.com\/wp-content\/uploads\/2017\/05\/Web-APIs-v5_0.png\" alt=\"\" width=\"768\" height=\"471\" srcset=\"https:\/\/gianfratti.com\/wp-content\/uploads\/2017\/05\/Web-APIs-v5_0.png 768w, https:\/\/gianfratti.com\/wp-content\/uploads\/2017\/05\/Web-APIs-v5_0-300x184.png 300w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><!--more--><\/p>\n<p><strong>Web Service<\/strong><\/p>\n<ul>\n<li>\u00c9 baseado em SOAP e retorna os dados por padr\u00e3o em XML.<\/li>\n<li>Ele suporta apenas o protocolo HTTP.<\/li>\n<li>N\u00e3o \u00e9 open source, mas pode ser consumido por qualquer cliente que entende xml.<\/li>\n<li>Pode ser hospedado apenas no IIS.<\/li>\n<li>Possui bastante documenta\u00e7\u00e3o e possui f\u00e1cil integra\u00e7\u00e3o com outros frameworks baseados em .Net<\/li>\n<\/ul>\n<p><strong>WCF<\/strong><\/p>\n<ul>\n<li>Ele tamb\u00e9m \u00e9 baseado em SOAP e retorna os dados no padr\u00e3o XML.<\/li>\n<li>\u00c9 a evolu\u00e7\u00e3o do servi\u00e7o web (ASMX) e suporta v\u00e1rios protocolos como o TCP, HTTP, HTTPS, Pipes , MSMQ.<\/li>\n<li>O principal problema com WCF \u00e9, a sua configura\u00e7\u00e3o tediosa e extensa.<\/li>\n<li>N\u00e3o \u00e9 open source, mas pode ser consumido por qualquer cliente que entende xml.<\/li>\n<li>Ele pode ser hospedado no IIS ou usando window service.<\/li>\n<\/ul>\n<p><strong>WCF Rest<\/strong><\/p>\n<ul>\n<li>Para usar WCF como um servi\u00e7o WCF Rest basta voc\u00ea habilitar o webHttpBinding.<\/li>\n<li>Ele suporta HTTP GET e POST por atributos [WebGet] e [WebInvoke] respectivamente.<\/li>\n<li>Para permitir que outros verbos HTTP voc\u00ea tem que fazer configura\u00e7\u00f5es adicionais no IIS, o que pode ser um pouco custoso.<\/li>\n<li>Passando dados atrav\u00e9s de par\u00e2metros usando um WebGet o UriTemplate deve ser especificado e configurado.<\/li>\n<li>Ele suporta XML, JSON e formato de dados ATOM.<\/li>\n<\/ul>\n<p><strong>Web Api<\/strong><\/p>\n<ul>\n<li>Este \u00e9 o mais novo framework para a constru\u00e7\u00e3o de servi\u00e7os HTTP e possui uma proposta de ser mais simples e f\u00e1cil de utilizar.<\/li>\n<li>Web API \u00e9 open source e projetada para a constru\u00e7\u00e3o de servi\u00e7os REST-Ful com o .NET Framework.<\/li>\n<li>Ao contr\u00e1rio do servi\u00e7o WCF Rest, ele usa os recursos do HTTP (como URIs, pedido \/ resposta cabe\u00e7alhos, o cache, controle de vers\u00e3o, v\u00e1rios formatos de conte\u00fado)<\/li>\n<li>Ele tamb\u00e9m suporta os recursos MVC como routing, controllers, action results, filter, model binders, IOC container e tamb\u00e9m dependency injection,<\/li>\n<li>Ele pode ser hospedado como aplica\u00e7\u00e3o ou no IIS.<\/li>\n<li>\u00c9 uma arquitetura considerada \u201cleve\u201d e boa para dispositivos que a largura de banda \u00e9 limitada, como dispositivos m\u00f3veis por exemplo.<\/li>\n<li>As respostas s\u00e3o formatadas pelo MediaTypeFormatter em JSON, XML ou qualquer formato que voc\u00ea deseja adicionar como um MediaTypeFormatter.<\/li>\n<\/ul>\n<p><strong>Considera\u00e7\u00f5es finais:<\/strong><\/p>\n<ol>\n<li>Escolha WCF quando voc\u00ea quer criar um servi\u00e7o que deve suportar cen\u00e1rios especiais, tais como mensageria, filas de mensagens, comunica\u00e7\u00e3o duplex etc.<\/li>\n<li>Escolha WCF quando voc\u00ea quer criar um servi\u00e7o que pode usar canais de transporte r\u00e1pidas quando dispon\u00edveis, tais como TCP, Pipes, ou talvez mesmo UDP (em WCF 4.5).<\/li>\n<li>Escolha Web API quando voc\u00ea quer criar um servi\u00e7o sobre protocolo HTTP como Post , Get ou Put.<\/li>\n<li>Escolha Web API quando voc\u00ea deseja expor seu servi\u00e7o para uma ampla gama de clientes, incluindo navegadores, celulares, iphone e tablets.<\/li>\n<\/ol>\n<p>Esta \u00e9 a minha opini\u00e3o sobre qual servi\u00e7o escolher. Avalie bem o seu cen\u00e1rio, seus recursos e tempo dispon\u00edvel para cria\u00e7\u00e3o de cada projeto.<\/p>\n<p>Fonte: <a href=\"https:\/\/rodrigodotnet.wordpress.com\/2017\/05\/02\/qual-a-diferencas-entre-wcf-webservice-e-webapi\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/rodrigodotnet.wordpress.com\/2017\/05\/02\/qual-a-diferencas-entre-wcf-webservice-e-webapi\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Estudando um pouco sobre servi\u00e7os encontrei um POST interessante sobre a diferen\u00e7a de WCF, Webervice e WebApi, entendo que muita gente tem duvidas quanto a esse assunto, ent\u00e3o estou replicando a informa\u00e7\u00e3o<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2,15],"tags":[155,45,99,92],"class_list":["post-743","post","type-post","status-publish","format-standard","hentry","category-net-framework","category-back-end","tag-soa","tag-wcf","tag-webapi","tag-webservice"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/743","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/comments?post=743"}],"version-history":[{"count":3,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/743\/revisions"}],"predecessor-version":[{"id":747,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/743\/revisions\/747"}],"wp:attachment":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/media?parent=743"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/categories?post=743"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/tags?post=743"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}