jueves, 12 de junio de 2014

La arquitectura basada en Mensajes


La arquitectura para desarrollar aplicaciones distribuidas es la basada en mensajes. Esta tecnología es asincrónica. Lo que significa que el cliente puede seguir con el procesamiento mientras espera la respuesta del servidor.

Utiliza mensajes en vez de llamadas a funciones.


ventajas

  • Tolerancia a fallos.
  • Escalabilidad.
  • puede usarse como respaldo en caso de caída del receptor

Desventajas:

  • Procesamiento del Mensaje:
    • El programador debe manejar en el código el empaquetamiento y desempaquetamiento de los mensajes. Además debe controlar su validez (baja integración).
  • Interoperatividad:
    • Los sistemas de mensajería utilizan tecnología propietaria. Se necesita software para permitir el envío de mensajes y la comunicaron los distintos sistemas.
  • Flujo de Carga y secuenciamiento de los mensajes:
    • Se necesita de algún mecanismo para coordinar el flujo y la secuencia de los mensajes. Por ejemplo, no se puede realizar un cobro sin antes no se ha realizado una compra.
  • No son soluciones interesantes para aplicaciones que trabajen en tiempo real o que estén orientadas a comunicaciones síncronas.



Lo maravilloso de este tipo de arquitectura es que puede servir de respaldo en los casos de perdida de comunicación, el cual puede ayudar a aprovechar los recursos disponibles y asegurar que el mensaje puede enviarse después de restablecerse una conexión perdida.


Referencias

www.itescam.edu.mx


Solucion al Error: No se pudo encontrar el tipo 'XXXXXXXX' proporcionado como el valor del atributo Service en la directiva ServiceHost, o proporcionado ... en web services WCF

Cuando se crea servicios WCF con Visual Studio suele ocurrir este error:

-------------------------------------------------------------------------------------------

Error de servidor en la aplicación '/'.

No se pudo encontrar el tipo 'Architecs.QuejasService.service1' proporcionado como el valor del atributo Service en la directiva ServiceHost, o proporcionado en el elemento de configuración system.serviceModel/serviceHostingEnvironment/serviceActivations.

Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.InvalidOperationException: No se pudo encontrar el tipo 'Architecs.QuejasService.service1' proporcionado como el valor del atributo Service en la directiva ServiceHost, o proporcionado en el elemento de configuración system.serviceModel/serviceHostingEnvironment/serviceActivations.

Error de código fuente:

Se ha generado una excepción no controlada durante la ejecución de la solicitud Web actual. La información sobre el origen y la ubicación de la excepción pueden identificarse utilizando la excepción del seguimiento de la pila siguiente.

Seguimiento de la pila:


[InvalidOperationException: No se pudo encontrar el tipo 'Architecs.Que
jasService.service1' proporcionado como el valor del atributo Service 
en la directiva ServiceHost, o proporcionado en el elemento de configu
ración system.serviceModel/serviceHostingEnvironment/serviceActivations.]
   System.ServiceModel.Activation.ServiceHostFactory.CreateServiceHost(
String constructorString, Uri[] baseAddresses) +59318
   System.ServiceModel.HostingManager.CreateService(String normalizedV
irtualPath, EventTraceActivity eventTraceActivity) +1434
   System.ServiceModel.HostingManager.ActivateService(ServiceActivatio
nInfo serviceActivationInfo, EventTraceActivity eventTraceActivity) +52
   System.ServiceModel.HostingManager.EnsureServiceAvailable(String no
rmalizedVirtualPath, EventTraceActivity eventTraceActivity) +598

[ServiceActivationException: El servicio '/QuejaServiceMessage.svc' no 
se puede activar debido a una excepción durante la compilación.
 

-------------------------------------------------------------------------------------------
Este error ocurre cuando se ha cambiado el nombre del archivo manualmente, sin haber actualizado las referencias.

Es muy fácil de solucionar , se debe ingresar al archivo .svc de tu proyecto


-------------------------------------------------------------------------------------------



Cuando aparesca el marcado, le aparecerá algo así:

<%@ ServiceHost Language="C#" Debug="true" Service="Architecs.QuejasService.service1" CodeBehind="QuejaServiceMessage.svc.cs" %>

se debe cambiar por algo así:

<%@ ServiceHost Language="C#" Debug="true" Service="Architecs.QuejasService.QuejaServiceMessage" CodeBehind="QuejaServiceMessage.svc.cs" %>

donde Architecs.QuejasService.service1 se cambio por Architecs.QuejasService.QuejaServiceMessage el cual es el nombre real del archivo, del servicio y del espacio de nombres.


y así se soluciona este error, si se hizo todo bien le aparecerá algo parecido:

Servicio de QuejaServiceMessage

Creó un servicio.
Para probarlo, deberá crear un cliente y usarlo para llamar al servicio. Para ello, puede usar la herramienta svcutil.exe en la línea de comandos con la siguiente sintaxis:

svcutil.exe http://localhost:62070/QuejaServiceMessage.svc?wsdl
También puede tener acceso a la descripción del servicio como un solo archivo:
http://localhost:62070/QuejaServiceMessage.svc?singleWsdl
Esto generará un archivo de configuración y un archivo de código que contiene la clase de cliente. Agregue los dos archivos a la aplicación cliente y use la clase de cliente generada para llamar al servicio. Por ejemplo:
C#
class Test
{
    static void Main()
    {
        QuejaServiceMessageClient client = new QuejaServiceMessageClient();

        // Use la variable 'client' para llamar a operaciones en el servicio.

        // Cierre siempre el cliente.
        client.Close();
    }
}



Saludos



Java Remote Method Invocation


Imagen obtenida de www.gitam.edu
En esta ocasión les voy a explicar sobre un tema relacionado a integración de aplicaciones distribuidas, se trata de Java Remote Method InvocationTambién conocida como JAVA RMI, es una forma de trabajo exclusivo para java en el cual invoca a un metodo de manera remota. Esta incluido en el lenguaje de Java, y es uno de los mecanismos para comunicación de servidores en aplicaciones distribuidas.


Características

  • Usa los puertos TCP
  • Crea objetos para ser usados (orientado a objetos)
  • Portable a traves de plataformas con soporte JAVA. 
  • Soporta paso de objetos por referencia y/o valor.
  • recolección de basura distribuida (Garbage Collector distribuido )


Ventajas


  • Es mas orientado a java, y la forma de uso es similar a la acostumbrada.
  • preserva la seguridad proporcionada en el ambiente Java

Desventajas

  • Solo es exclusivo para Java (no soporta otros lenguajes)


Comparación con DCOM (tecnología parecida)




  • En DCOM Existe una buena integración con VisualBasic, C# y JAVA, RMI solo acepta Java
  • En DCOM Microsoft depende de su funcionamiento. En  RMI es soportado por mas plataformas
  • En DCOM Hay muy poco soporte en plataformas no-windows. En unix no es lo suficientemente estable.
  • En DCOM No existe una limpieza aceptable de los objetos, por lo que una referencia a un servicio se puede mantener en memoria, pese a que se haya terminado. En RMI la recolección de basura que ya viene incorporada es más eficiente.






Referencias



  • http://profesores.elo.utfsm.cl/~agv/elo330/2s05/projects/CesarVasquez/sitio_web/index.html

  • http://es.wikipedia.org/wiki/Java_Remote_Method_Invocation

  • http://www.programacion.com/articulo/invocacion_remota_de_metodos_rmi_107/2

Servidor SQLSERVER en la nube (De Prueba)

Realizando una investigación para hacer pruebas de grupo, he encontrado un servidor de pruebas para sqlserver en el cual pueden hacer trabajo colaborativo. les hablo del servicio de un proveedor: SOMEE, cuya página es https://somee.com/default.aspx, este proveedor nos ofrece una base de datos gratuita por un tiempo limitado.


Lo que ofrece:
  • MS SQL database size:15MB
  • MS SQL log size:20MB
  • Backup storage size:40MB
lo suficiente para realizar pruebas



Ahora les enseñare como acceder a este servicio:


manual rápido de como acceder a este servicio


Pagina de bienvenida

Imagen 1


Nuevo login

Imagen 2



Llenar los datos solicitados

Imagen 3



Una ves confirmado el nuevo usuario ingresar al login (imagen 1)


Imagen 4

Seleccionar el servicio gratuito que ofrece

Imagen 5

aceptar los check  y dar "continue"

Imagen 6

Administrador de tu espacio gratuito 
Imagen 7


Creación de base de datos nueva: incluye la versión que deseas seleccionar (2005, 2008 R2 y 2012) 


Imagen 8


Ver detalle de tu base de datos: acá te ofrece las credenciales para acceder a la base de datos a través del Management Studio del SQLSERVER 

Imagen 9

Incluso te ofrece espacio para publicar tu pagina web pero esa es otra historia. 

Saludos