Como crear un Servicio Web con WCF y VS Facil

Como crear un Servicio Web con WCF y VS Facil

Vamos a ver como crear un servicio web para cualquiera que sea el proposito ( en mi caso lo hare para manejar una base de datos desde una aplicacion android mediante json, pero eso lo veremos mas adelante :yum: ), utilizaremos visual studio 2013, windows communication foundation y C#. Un sencillo y facil ejemplo pero que nos ayudara a crear un servicio web basico y funcional, ademas de comprender como es el proceso de creacion y configuracion del servicio web en visual studio, asi que vamos ya a la explicacion :bowtie: ..

Escenario

Queremos crear un servicio web para x proposito, utilizaremos:

Que es WCF?

Windows Communication Foundation es un modelo para el desarrollo de Aplicaciones con Arquitectura SOA ( Orientada a Servicios ) de comunicacion mediante mensajes, tienen un conjunto de bibliotecas para desarrollar sistemas que envian mensajes entre servicios y clientes sobre mecanismos de transporte.

En el Modelo de WFC existe uno o varios clientes que inician la comunicacion con el servicio, este servicio espera las peticiones  y responde a ellas.

Pasos basicos para crear un Servicio Web con WCF..


¿Sabías que?

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.

Udemy

  1. Definir la Interfaz del Contrato ( ServiceContract )
  2. Implementar el Contrato ( ServiceContract )
  3. Configurar el Servicio ( Endpoints y metadatas ) en el archivo web.config o app.config

Crear un Servicio Web en VS

Abrimos Visual Studio 2013 y seleccionamos

File -> New -> Project

Como crear un Servicio Web con WCF y VS 1

 

En Installed -> Templates -> Visual C# -> WCF -> WCF Service Application y escribimos un nombre de proyecto, en mi caso MiServicioWeb :yum:

Una vez que se nos genere el proyecto veremos que se nos crean algunos archivos, entre ellos IService1 y Service1 los cuales eliminaremos

Como crear un Servicio Web con WCF y VS 2

Como crear un Servicio Web con WCF y VS

Despues vamos a crear un nuevo servicio web ( eliminamos los anteriores para ver el proceso completo de creacion de un servicio web :yum: ), para esto vamos a dar click derecho sobre el proyecto y luego:

Add -> New Item ->

Como crear un Servicio Web con WCF y VS 3

Ahora modificamos la interfaz del servicio, en mi caso lo llame Servicio asi que la interfaz se llama IServicio.cs, quedara asi:

[ServiceContract]
public interface IServicio
{
   [OperationContract]
   [WebInvoke(Method="GET",
   ResponseFormat=WebMessageFormat.Json,
   BodyStyle=WebMessageBodyStyle.Wrapped,
   UriTemplate="holaMundo/{nombre}")]
   String holaMundo(String nombre);
}

donde definimos una funcion que recibi un String ( el nombre de la persona a la que se le saludara ) y regresa un String con el Formato «Hola Mundo {nombre} !»

Despues modificamos la implementacion de la interfaz  en Servicio.svc.cs para que quede de la siguiente  forma:

public class Servicio : IServicio
{
   public String holaMundo(String nombre)
   {
      return "Hola Mundo " + nombre + "!";
   }
}

Ahora solo nos falta configurar el servicio, para esto modificamos el archivo Web.config

Borramos la etiqueta < behaviors > y todo sus elementos dentro de esta, ahora nos quedara asi nuestro archivo de configuracion:

<?xml version="1.0"?>
<configuration>

<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>

//Aqui falta algo??

<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
</system.webServer>

</configuration>

Ahora en este espacio en blanco configuramos nuestro servicio de la siguiente manera:

<services>
<service name="MiServicioWeb.Servicio" behaviorConfiguration="serviceBehavior">
<endpoint address="" binding="webHttpBinding" contract="MiServicioWeb.IServicio" behaviorConfiguration="web"></endpoint>
</service>
</services>

y enseguida nuestros comportamientos

<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>

nuestro archivo de configuracion quedara asi:

<?xml version="1.0"?>
<configuration>

<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<services>
<service name="MiServicioWeb.Servicio" behaviorConfiguration="serviceBehavior">
<endpoint address="" binding="webHttpBinding" contract="MiServicioWeb.IServicio" behaviorConfiguration="web"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>

<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping> 
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
</system.webServer>

</configuration>

Ahora ejecutamos nuestro servicio y se abrira nuestro navegador, ahora escribiremos la url de nuestro servicio con el siguiente formato:

http://localhost:puerto/NombreTuServicio.svc/NombreTuMetodo/parametro

en nuestro caso

http://localhost:12138/Servicio.svc/holamundo/Jonathan

y obtendremos

Como crear un Servicio Web con WCF y VS 4

Ahora podemos comunicarnos con nuestro servicio web con wcf y vs para pedirle informacion o modificaciones a la informacion, en mi caso desde una aplicacion android que publicare mas adelante :yum:

Recuerda regalarnos un +1, like, tweet, share o comentario.

como crear un servicio web con wcf y vs

Clic para valorar esta información
[Total: 0 Promedio: 0]

12 Comentarios

          Deja un comentario

          Tu comentario será aprobado por un administrador en unos minutos, por favor no publiques de nuevo tu comentario.