viernes, 6 de julio de 2012

Desarrollo de un servicio json sobre ASP.NET para consumo desde Jquery

Enunciado:

Necesitamos un servicio web que responda en formato JSON para poderlo leer desde Jquery.

En este ejemplo partiremos del resultado otro servicio web WCF "directorio", pero podríamos estar devolviendo los resultados de una consulta linq o cualquier otra fuente serializable

Solución

Añadir un Servicio WCF con AJAX habilitado.
IMPORTANTE: En el Web.config sección system.servicemodel ELIMINAR o comentar las referencias a este servicio  . En mi caso que el servicio se llamaba MAC eliminé las líneas: el behavior  enablewebScript


      
        
             
            
      
      
    
    
    
      
        
      
    

Luego editamos el archivo de etiquetado (.svc) añadiendo el atributo Factory apundando a la clase System.ServiceModel.Activation.WebServiceHostFactory.
<%@ ServiceHost Language="VB" Debug="true" Service="myAplication.MAC" CodeBehind="MAC.svc.vb" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
En el archivo de código MAC.svc.vb definiremos los metodos con el atributo WebInvoke especificando el método (GET o POST) y el formato de la respuesta (JSON).
Imports System.ServiceModel
Imports System.ServiceModel.Activation
Imports System.ServiceModel.Web



Public Class MAC

    
    
    Public Function NomIdEmpresa(term As String) As directorio.EmpresaIdentificada()
        'ahora llamo a la clase proxy de mi servicio WCF.
        Dim servicio = New directorio.IdirectorioClient
        Dim resultado As directorio.EmpresaIdentificada() = servicio.SugerenciasNombreIdEmpresa(term, 20) 
        servicio.Close()
        Return resultado
    End Function
End Class

No hay comentarios: