domingo, 29 de junio de 2008

REMOTING

A continuación algunos conceptos básicos de remoting.

Remoting nos permite llamar objetos que existentes en diferentes maquinas ,solo si residen en la misma aplicación .Los objetos son pasados desde un application domain a otro.


Tipos de Remote Objects :

Existen dos tipos de objetos del tipo Server-Activated (Single call y Singleton).Estos manejan la vida de los objetos remotos en el Server .El tipo Client-Activated maneja la vida en el cliente.
Tipos de Objetos :

  • Single Call : Los objetos implican una sola llamada en la que el estado no se mantiene entre las llamadas de los métodos .Solo una petición es atendida a la vez y cuando el objeto no es utilizado , este es descartado.(Se crean y destruyen en cada llamada)
  • Singleton : Estos objetos son usados para servir múltiples clientes y mantienen el estado entre las llamadas al método .Este tipo tiene ventaja a nivel de performance cuando el costo de crear objetos todo el tiempo es alto.(el estado del objeto permanece para todos los cliente ,solo hay un objeto)
  • Client-Activate : Estos objetos solo se activan cuando son llamados por el cliente.

Hosting a Remote Server Application :

Es el responsable de registrar los objetos ,en el cual escucharemos las llamadas de los clientes. Existen 4 opciones para hostear un remote object.

  • Console Application
  • Windows Executable
  • ASP.NET application
  • Windows Services

Seleccionando un canal de Comunicación :

Los canales son usados para conectar los objetos remotos y realizar el transporte de los mensajes .Existen tres tipos de canales:

  • TCP : Procesa los mensajes en forma binaria .Es la mejor opción si la aplicación corre en una intranet.
  • HTTP : Este usa el protocolo SOAP para transportar mensajes .Este utiliza el xml serealizer para procesar los mensajes.
  • IPC: Es la mejor opción para cuando el proceso de comunicación es dentro de la misma maquina.

martes, 24 de junio de 2008

Manejar estados en un WebService

Esto nos sirve para mantener valores entre las llamadas a los metodos , para esto contamos con dos formas de hacerlo Application o Session Objects.

Application Object :

Es usado para guardar un valor , que puede ser accedido por todas las sesiones que atienda nuestro WebService.
Por ejemplo , esto nos puede servir para llevar un contador de los metodos que son solicitados y este valor
va a poder ser visto desde cualquier WebMethod.Esto aplica a todos los metodos que NO tengan el atributo EnableSession=true
Dicho valor va a estar vivo dentro del servicio mientras que el IIS
(o en donde alojemos nuestro servicio) este levantado.


Ejemplo :


[WebMethod(Description="Ejemplo Application Object"]
public void InicializoApplicationObject()
{
Application["MiContador"] = 1;
}


Session Object :

En este caso el valor es especifico para cada usuario.Por ejemplo se puede usar para guardar el id del usuario.
Sin embargo para que un metodo pueda utilizar dicha valor debe definir el Atributo Enablesession en true
Al implementar session Objects nesesitamos definir cookies del lado del cliente para identificar la sesion
asociada con el estado de la session.estas cookies las debemos crear mediante codigo en el cliente.
Tener muy en cuenta este punto al pensar en implementar cookies.


Ejemplo :

[WebMethod(Description="Ejemplo session Object",EnableSession=true)]
public void InicializoSessionObject(string valor)
{
Session["UserId"] = 1;
}



A continuación les dejo un ejemplo un poco mas completo , en este caso utilizaremos Session Object.


Codigo WebService :


public class Service : System.Web.Services.WebService
{

// Asigno valor a mi variable de Session
[WebMethod(Description="Ejemplo session Object",EnableSession=true)]
public void InicializoSessionObject(string valor)
{
if (Session["MiVariableDeSesion"] == null)
{
Session.Add("MiVariableDeSesion", valor);
}
else
{
Session["MiVariableDeSesion"] = valor;
}
}

// Devuelvo valor de varible de session
[WebMethod(Description = "Ejemplo obtner valor de session Object", EnableSession = true)]
public string ValorSessionObject()
{
if (Session["MiVariableDeSesion"] == null)
return "Variable de Sesion sin Inicializar";

return (string)Session["MiVariableDeSesion"];
}


}


Codigo del cliente :

protected void Button1_Click(object sender, EventArgs e)
{
//Instancio el servicio
Service ws = new Service();

// Genero cookie
System.Net.CookieContainer cookie = new System.Net.CookieContainer();
ws.CookieContainer = cookie;

// Invoco metodo del WS
ws.InicializoSessionObject("Hola !");

// Asigno nuestra cookie con la variable de Session del WS
Session.Add("MiVariableDeSesion", cookie);

Label1.Text = "Valor de Session : " + ws.ValorSessionObject() ;

}

domingo, 15 de junio de 2008

Visual Studio 2005 : A donde fueron a parar los templates ?

De un día para el otro…..se me fueron los queridos templates del VS 2005 , el único que había quedado era el de ASP.NET Ajax …y los demás ?

No había caso no los encontraba , hasta que me tope con otro blog , en el cual comentaba que después de instalar el VS 2008 …mágicamente desaparecían los templates del 2005.

Solución :

Copiar los ítems existentes en la carpeta

C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ProjectTemplates

en

C:\ Users\Mi Usuario\My Documents\Visual Studio 2005\Templates\ProjectTemplates

Copiar los ítems existentes en la carpeta

C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates

en

C:\ Users\Mi Usuario\ My Documents\Visual Studio 2005\Templates\ItemTemplates

Y listo ,los templates han vuelto a casa…..

jueves, 12 de junio de 2008

Instalando la Base de Datos AdventureWorks

Dado que muchos de los ejemplos que voy a subir utilizaran la base de datos AdventurWorks (base de datos que nos propone Microsoft para llevar a cabo los ejemplos en sus cursos) , pasare a explicar como se instala la misma.

1- Bajar la Base de Datos AdventureWorks , la pueden encontrar en el siguiente Link .

2- Abrir el Enterprise del SQL Server 2005 dirigrirnos hacia la carpeta Base de Datos , boton derecho y click sobre la opcion Adjuntar (Esta es una de las formas de levantar la base en nuestro servidor SQL)



3- Ahora nos dirigimos hacia el directorio en donde nos dejo los archivos el instalador y seleccionamos el archivo .MDF




4- Veremos que en el dialogo cargo los archivos .MDF (archivo de datos) y .LDF (archivo de registro)




5- Aceptamos y podremos ver como se ajunto la base de datos AdventureWorks en nuestro Sql Server 2005





Listo , ya tenemos una Base de datos completita para hacer nuestras pruebas .....

Saludos
Maxi




Sonando : Ricardito Iorio - Cualquiera de su obra

Inicio

Me presento soy Maxi , estoy hace ya un largo tiempo trabajando como desarrollador .Actualmente me dedico al desarrollo de aplicaciones bajo la plataforma .NET 2.0 utilizando el lenguaje c#.
El propósito del blog , es ir subiendo info respecto a distintos temas de programación en .NET , como así también distintos cosas que voy descubriendo en el trabajo diario.
La idea es que este espacio me sirva como machete virtual y de paso compartirlo con quien se tope con los mismos problemas.

Advierto que los post van a tratar de ser lo mas simple y entendibles para mas que nada exponer conceptos y soluciones , simple como un machete….


Nos estamos leyendo....



p.d. : Todo este blog es dedicado a Laly , mi esposa , que me banca las horas y horas que me paso frente a la notebook investigando , diseñando,testeando,puteando..... y por sobretodo el alentarme a seguir creciendo...


Music : Compañera-Ariel Minimal