You are on page 1of 23

1.

Crear y consumir servicios web en Silverlight (Parte 1)


Cuando desarrollas una aplicacin en la mayora de los casos es necesario que para su
correcto funcionamiento deba obtener su informacin desde una fuente en especfico,
puedes hacerlo desde una fuente RSS con un archivo XML o un archivo JSON, pero si tu
necesidad va mas all y debes consumir tu informacin desde una base de datos, tus
opciones se limitan a una sola posibilidad, consumir un servicio web.
Los servicios web no son nada mas que intermediarios entre la aplicacin Silverlight y la
base de datos, dado que Silverlight se ejecuta en el lado cliente no le es posible estar en
contacto con la base de datos, la cual se encuentra en el lado servidor, dado que el
servicio web se encuentra alojado en el servidor, puede acceder a la base de datos,
solicitar la informacin y enviarla a nuestra aplicacin, si lo vemos en un diagrama, el
resultado si lo quieres ver de la forma mas bsica es algo como esto.

Bien, ya habiendo explicado de esta forma el funcionamiento, puedo comenzar a entrar en


materia, hay dos tecnologas principales para poder crear un servicio web bajo el entorno
Microsoft, y lo encierro en ese campo para descartar otras plataformas, como Java y PHP
que son muy recurridas para esta funcionalidad tambin (y que Silverlight puede consumir
sin problema).
Las dos tecnologas que te menciono son los servicios web ASP y WCF, ambos tienen
caractersticas particulares que los hacen nicos, vamos viendo cuales pueden ser.
Servicios ASP.NET
Son los primeros que aparecieron, en la actualidad no fueron incluidos como parte del
Framework 4.0 de .NET para dar paso a sus sucesores (WCF), pero an puedes incluirlos
dentro de una solucin como parte de esta (a m no me late hacerlo, siempre he optado por

tener el servicio web en una solucin y la aplicacin en otra, al menos en entornos


productivos). La razn por la que debas utilizarlos obedece sencillamente a que el servidor
donde vas a publicar tu servicio web an no cuenta con el Framework 4.0 pues de lo
contrario la mejor recomendacin ser usar un servicio WCF.
Servicios WCF
Son la nueva herramienta para intercambio de informacin, abismalmente mas equipados
con herramientas y funcionalidades, tantas que son considerados como aplicaciones, es
decir, aplicaciones orientadas a servicios, fueron creados efectivamente para reemplazar a
los servicios ASP.NET y dotarlos de mejor funcionalidad, enseguida veremos cuales son.
Para comenzar a hacer pruebas lo primero que debes hacer es crear una base de datos,
nada del otro mundo, simplemente crea una tabla que contenga los siguientes datos.

Recuerda que el campo ID debe tener la propiedad de Identidad. Ya que tengas la tabla
completa, ahora llnala con unos cuantos registros.

Esta tabla ser la misma que utilizaremos en ambos servicios, as que ya podemos dejar
de lado a SQL, y comenzar con la creacin de los servicios. As que tu escoges hacia
donde ir ahora.

2. Crear y publicar un servicio web ASP.NET (Parte 2)


En la primer entrada de esta mini serie de artculos relacionados vimos la introduccin de la
manera de como podemos vincular bases de datos con Silverlight, vamos a continuar con
los servicios web ASP.NET.
Crea un nuevo proyecto en Visual Studio, de tipo Web Service Application Aguas! Debes
haber seleccionado el Framework 3.5.

Al aparecer el proyecto generado obtendrs una pantalla como la siguiente.

Como puedes ver el mtodo lleva antes el prefijo [WebMethod] y es pblico, debes
considerar estos dos elementos para poder hacer tu mtodo accesible desde la web, y es
aqu en donde nos encargaremos de crear tres mtodos, uno de consulta, uno de edicin y
uno de actualizacin (el de borrar quedar de tarea Te late?).
Antes de continuar, debo aclarar algo muy importante, ser un tanto injusto al crear
estos servicios comparados con los WCF pero quiero hacerlo de la forma mas bsica
para que de paso puedas cubrir una gama mas amplia de tecnologas, pero para
calmar mi conciencia debo decirte que puedes mezclar tecnologas sin problemas.
Lo primero que insertaremos aqu ser un mtodo privado que nos permitir el acceso a
nuestra cadena de conexin.
private string cadenaConexion()
{
string cadena = "Data Source=SERVIDORAMIN;Initial
Catalog=Directorio;Integrated Security=True;";
return cadena;
}

Consultar informacin
Este mtodo nos dar toda la informacin de nuestros contactos.
[WebMethod]
public List<string> MostrarTodosLosContactos()
{
List<string> listaClientes = new List<string>();
SqlConnection conexion = new SqlConnection(cadenaConexion());
SqlDataAdapter adaptador;
string Consulta = "SELECT * FROM Contacto";
DataTable datos = new DataTable();
adaptador = new SqlDataAdapter(Consulta, conexion);
adaptador.Fill(datos);
foreach (DataRow registros in datos.Rows)
{
listaClientes.Add(registros["ID"].ToString() + "|" +
registros["Nombre"].ToString() + "|" +
registros["APELLIDOS"].ToString() +
"|" + registros["TELEFONO"].ToString() + "|" +
registros["EMAIL"].ToString());
}
return listaClientes;
}

Creamos una lista de tipo string y por medio de los datos que obtenemos de la consulta
vamos llenando la lista, as de simple.
Insertar registros
Este mtodo nos dar la posibilidad de insertar nuevos registros en nuestra tabla.
[WebMethod]
public int InsertarNuevaFecha(string Nombre, string Apellidos,
string Telefono, string Email)
{
string cadenaActualizar = "INSERT INTO Contacto (Nombre,
APELLIDOS, TELEFONO, EMAIL) values (@nombre, @apellidos,
@telefono, @email)";
int t = 0;
using (SqlConnection conexion = new
SqlConnection(cadenaConexion()))
{
SqlCommand comando = new SqlCommand(cadenaActualizar, conexion);
conexion.Open();
comando.Parameters.AddWithValue("@nombre", Nombre);
comando.Parameters.AddWithValue("@apellidos", Apellidos);
comando.Parameters.AddWithValue("@telefono", Telefono);
comando.Parameters.AddWithValue("@email", Email);
t = comando.ExecuteNonQuery();
conexion.Close();
}
return t;
}

Como puedes ver, lo que hacemos es simplemente recibir los parmetros y en base a ellos
insertar un nuevo elemento en nuestra tabla, como es obligatorio que TODOS los mtodos
accesibles desde web regresen un valor, en este caso regresamos el valor de las
operaciones realizadas.
Actualizar registros
Este mtodo nos dar la posibilidad de modificar a los registros que ya tenemos, ya sea en
uno solo o en todos sus atributos.
[WebMethod]
public int ActualizarContacto(string ID, string Nombre, string
Apellidos, string Telefono, string Email)
{
string cadenaActualizar = "UPDATE Contacto SET Nombre=@nombre,
APELLIDOS=@apellidos, TELEFONO=@telefono, EMAIL=@email WHERE (ID
=" + ID + ")";
int t = 0;
using (SqlConnection conexion = new
SqlConnection(cadenaConexion()))

{
SqlCommand comando = new SqlCommand(cadenaActualizar, conexion);
conexion.Open();
comando.Parameters.AddWithValue("@nombre", Nombre);
comando.Parameters.AddWithValue("@apellidos", Apellidos);
comando.Parameters.AddWithValue("@telefono", Telefono);
comando.Parameters.AddWithValue("@email", Email);
t = comando.ExecuteNonQuery();
conexion.Close();
}
return t;}
Aqu de una forma muy parecida al mtodo anterior recibimos todos los argumentos y con
la sentencia SQL actualizamos los datos en funcin de su campo ID.
Bien, si ya tienes los mtodos completados y ejecutas tu servicio web, el resultado ser
muy similar a esto.

Vamos a hacer una pequea prueba y seleccionar el mtodo MostrarTodosLosContactos,


veras una pantalla as.

Si pruebas en los otros dos mtodos notars que te piden que llenes informacin, esto es
debido a los parmetros que los mtodos necesitan para poder operar de manera
adecuada. En el caso del mtodo que usamos, presiona el botn Invocar y tu resultado
debe ser este.

As es, nada mas que un XML que nos estar regresando la informacin que le solicitamos.
Hasta aqu ya tenemos nuestro servicio web realizado, pero para que Silverlight pueda
consumirlo, deberemos publicarlo en nuestro IIS, as que vamos para eso.
Publicar mi servicio en IIS
En la ruta C:\inetpub\wwwroot (debes tener instalado IIS para esto), crea una nueva
carpeta.

Ya con la carpeta creada, vete al administrador de tu equipo. (Presiona la tecla de Windows


+ R y escribe el comando compmgmt.msc), selecciona al administrador de IIS, expande los
nodos de la derecha hasta llegar a la posicin de la siguiente imagen.

Al seleccionar la opcin marcada te aparecer una ventana como la de abajo, solo da clic
en aceptar.

Y ahora vers que tu antigua carpeta se ver de la siguiente forma.

Ahora podremos regresar a Visual Studio y seleccionar en el men de Build la opcin de


Publish Service.

En el cuadro de dilogo escoge la opcin de File System en la opcin de Publish method y


en la de Target Location presiona el botn de Examinar (el de los tres puntitos pues).

Al presionar el botn de examinar, tendrs en pantalla ahora la siguiente ventana (si no te


apareci es porque no ests corriendo tu Visual Studio en modo administrador), ah
simplemente selecciona la carpeta que acabas de crear.

Tu cuadro de dilogo inicial quedar de la siguiente forma.

Solo basta que presiones Publish y veas en la esquina inferior izquierda y en tu ventana
de Output los siguientes mensajes.

Ya que tienes ese letrero, puedes escribir la url de tu sitio con la siguiente secuencia
http://NombreDeTuServidor/NombreDeTuCarpeta/NombreDeTuServicio, en mi caso qued
as http://localhost/ServicioASP/Service1.asmx.

3. Crear y publicar una aplicacin WCF (Parte 3)


En la primer entrada de esta mini serie de artculos comenzamos a ver las bases para crear
una base de datos que utilizaramos, en la segunda entrada vimos como crear y publicar un
servicio web ASP.NET, ahora la idea es hacer exactamente lo mismo pero con una
aplicacin WCF para abarcar diferentes escenarios.
As que vamos a comenzar por crear la aplicacin WCF
Escoge la opcin de WCF Service Application, recuerda en esta ocasin escoger el
Framework 4.

La estructura de tu proyecto quedar de la siguiente manera.

La clase IService.cs nos servir como interfaz de nuestro proyecto, es decir, aqu ser en
donde coloquemos las funciones pblicas que permitiremos que puedan ser accedidas va
web. La clase Service1.svc.cs ser la encargada de colocar toda la funcionalidad requerida
de nuestro servicio, por ahora esas dos clases son las que nos interesan. Para continuar da
clic derecho en tu proyecto y selecciona la opcin Add>New Item, ah en la seccin Data
elige Linq to SQL Classes.

La pantalla en blanco te servir para comenzar a crear tu modelo de datos simplemente


arrastrando tus tablas (para esto debiste haber creado ya una conexin a tu base de datos
desde tu pestaa de Server Explorer).

Ya con tu modelo creado y tu tabla agregada, entonces podremos comenzar a crear los
mismos tres mtodos que vimos en el artculo anterior, comenzaremos en la clase
Service1.svc.cs creando las operaciones.
Para empezar podrs notar que la clase hereda las propiedades de la clase IService1, es
por ello que trabajan de una forma muy vinculada.
Como mencion en el artculo anterior, en el servicio web ASP.NET mostr una forma
de hacerlo completamente diferente, pero aclaro que de esta manera tambin podra
ser hecho, mi intencin es demostrar la forma mas antigua y bsica que hay as
como la que a mi gusto no solo es la mas nueva, sino que la mas sencilla.
Lo primero que debemos hacer es declarar un objeto de tipo ModeloDatosDataContext,
esta clase puede variar de acuerdo a como nombraste a tu modelo anterior y ser
justamente eso, un contexto, un comunicador entre tus tablas inlcuidas dentro de tu modelo
y tus operaciones. La sintaxis es la siguiente.
ModeloDatosDataContext contexto;
Consultar informacin
Este mtodo nos dar toda la informacin de nuestros contactos.
public List<Contacto> MostrarTodosLosContactos()
{
contexto = new ModeloDatosDataContext();
List<Contacto> listaResultado = (from l in
contexto.Contactos
select l).ToList();
return listaResultado;
}
Creamos un mtodo que nos regresar una lista del mismo tipo de la clase que
necesitamos obtener, de esta forma y utilizando una sentencia LINQ muy sencilla obtendrs
todos los registros.
Insertar registros
Este mtodo nos dar la posibilidad de insertar nuevos registros en nuestra tabla.

public bool InsertarContacto(Contacto nuevoContacto)


{
contexto = new ModeloDatosDataContext();
contexto.Contactos.InsertOnSubmit(nuevoContacto);
contexto.SubmitChanges();
return true;
}
Esto es sumamente sencillo, utilizando el argumento recibido, el mtodo InsertOnSubmit de
la clase Contactos de nuestro modelo se encargar de agregar la nueva entidad y
mantenerla en espera de poder ser ingresada y le mtodo SubmitChanges termina la
operacin insertando los datos en la tabla correspondiente.
Actualizar registros
Este mtodo nos dar la posibilidad de modificar a los registros que ya tenemos, ya sea en
uno solo o en todos sus atributos.
public bool ActualizarContacto(Contacto contactoActualizado)
{
contexto = new ModeloDatosDataContext();
ModeloDatosDataContext contextoOriginal = new
ModeloDatosDataContext();
Contacto contacto = (from c in contextoOriginal.Contactos
where c.ID == contactoActualizado.ID
select c).Single();
contexto.Contactos.Attach(contactoActualizado, contacto);
contexto.SubmitChanges();
return true;
}
Aqu debido a utilizaremos un contexto para consultar nuestra informacin, simplemente
debemos crear un objeto del mismo tipo para que uno pueda consultar y el otro se pueda
encargar de ingresar la informacin, la mecnica es la misma que en el mtodo de
insercin, pero utilizars el mtodo Attach junto a sus dos parmetros requeridos.
Ya que tenemos los tres mtodos que estars utilizando, vete ahora a tu clase IService.cs y
aqu debes crear los contratos para permitir a tus mtodos ser operaciones accesibles
desde la web. Tu clase debe quedar de la siguiente forma.
[ServiceContract]
public interface IService1
{
[OperationContract]
List<Contacto> MostrarTodosLosContactos();
[OperationContract]
bool InsertarContacto(Contacto nuevoContacto);
[OperationContract]

bool ActualizarContacto(Contacto
contactoActualizado);
}
Ya teniendo todo esto listo, presiona F5 para ejecutar tu servicio (ten la pestaa de
IService1.cs en pantalla) y el resultado ser as.

Selecciona la ruta remarcada en la imagen de arriba y lo que obtendrs ser esta pantalla.

La primer diferencia que notars con respecto a los servicios ASP.NET es que estos no
exponen los mtodos que contienen, la nica forma de poder acceder a ellos es mediante
un cliente, y eso es justamente lo que haremos, detn la ejecucin y ahora ejecuta de
nuevo, pero con la clase Service1.svc.cs en primer plano, de esta manera ejecutars de
manera automtica una aplicacin llamada WCF Test Client, que te permitir ver tus
mtodos y trabajar con ellos.

Si todo est en orden, entonces podrs publicar tu aplicacin. El proceso es exactamente el


mismo que en el artculo anterior, para no redundar en la informacin puedes ver la seccin
Publicar mi servicio en IIS, pero hay una diferencia al momento de convertir tu carpeta en
aplicacin.

Cuando aparece el cuadro de dilogo de Agregar aplicacin, en este caso debers


cambiar el Grupo de aplicaciones con el que publicars, en lugar de utilizar DefaultAppPool
selecciona ASP.NET v4.0 como se ve en la imagen.

Si ya tienes tu carpeta virtual lista, sigue el mismo procedimiento que en el servicio web
ASP.NET para publicar va Visual Studio 2010. Cuando tu servicio web haya sido
satisfactoriamente publicado, ve a un explorador y escribe una direccin con los siguientes
trminos http://NombreDeTuServidor/NombreDeTuCarpetaVirtual/NombreDeTuServicio.svc
en mi caso el resultado qued como http://servidoramin/ServicioWCF/Service1.svc.

4.

Consumir servicios web ASP.NET y WCF en Silverlight (Parte 4)

Este artculo es la cuarta parte de una mini serie que intenta ensearte como crear, publicar
y ahora consumir servicios web, el primer artculo habla de la base de datos que has
estado usando, puedes ver aqu como crear servicios web ASP.NET y aqu como crear
servicios WCF.
Creo que la mejor manera de manejar ambos servicios anteriormente creados es en una
sola aplicacin, para ahorrar la parte del diseo te dejo una imagen gua.

Pero para ahorrar an mas, puedes descargar aqu el proyecto de inicio.


Ya con el proyecto inicial, en Visual Studio, da clic derecho sobre tu proyecto y selecciona la
opcin de Agregar referencia de servicio.

En el cuadro de dilogo, comienza con el servicio web ASP.NET, recuerda la URL, algo as
como

http://localhost/ServicioASP/Service1.asmx y despus presiona Go, debers ver algo


as.

Despus de presionar Ok, repite la misma operacin pero ahora con la liga del servicio
WCF.

Hasta aqu, como puedes ver, el procedimiento es exactamente el mismo para ambos tipos
de servicios, la diferencia comenzar de aqu en adelante, vamos primero a declarar cada
uno de los objetos de los servicios.
//servicioASP
ServicioDatosASP.Service1SoapClient servicioASP = new
ServicioDatosASP.Service1SoapClient();
//servicioWCF
ServicioDatosWCF.Service1Client servicioWCF = new
ServicioDatosWCF.Service1Client();

Como puedes ver, la diferencia es grande desde aqu, el protocolo de servicio de ASP.NET
es SOAP, cuando en WCF utilizas un cliente sin ese protocolo, en los manejadores de
eventos para consultar informacin, tendrs las diferentes lneas.
Consultar Informacin
Para el servicio ASP.NET necesitas crear primero una clase, de la siguiente forma.
public
{
public
public
public
public
}

class NombreContacto
string
string
string
string

Nombre { get; set; }


Apellidos { get; set; }
Telefono { get; set; }
Email { get; set; }

Y ya con la clase creada, poder usar un evento clic para poder consultar al servicio web.

private void btnObtenerContactosASP_Click(object sender,


System.Windows.RoutedEventArgs e)
{
servicioASP.MostrarTodosLosContactosCompleted += new
EventHandler&lt;ServicioDatosASP.MostrarTodosLosContactosCompletedEventA
(servicioASP_MostrarTodosLosContactosCompleted);
servicioASP.MostrarTodosLosContactosAsync();
}

void servicioASP_MostrarTodosLosContactosCompleted
(object sender, ServicioDatosASP.MostrarTodosLosContactosCompletedEventA
{
if (e.Error == null)
{
List listaContactos = new List();
foreach (string entidad in e.Result)
{
NombreContacto contacto = new NombreContacto();
contacto.Nombre = entidad.Split('|')[1];
contacto.Apellidos = entidad.Split('|')[2];
contacto.Telefono = entidad.Split('|')[3];
contacto.Email = entidad.Split('|')[4];
listaContactos.Add(contacto);
}
dgDatosASP.ItemsSource = listaContactos;
}
}
Por el lado de WCF tendrs lo siguiente.
private void btnObtenerContactosWCF_Click(object sender,

System.Windows.RoutedEventArgs e)
{
servicioWCF.MostrarTodosLosContactosCompleted += new
EventHandler&lt;ServicioDatosWCF.MostrarTodosLosContactosCompletedEventA
(servicioWCF_MostrarTodosLosContactosCompleted);
servicioWCF.MostrarTodosLosContactosAsync();
}
void servicioWCF_MostrarTodosLosContactosCompleted(object sender,
ServicioDatosWCF.MostrarTodosLosContactosCompletedEventArgs e)
{
if (e.Error == null)
{
dgDatosWCF.ItemsSource = e.Result;
}
}
Como ves? Una gran diferencia no es as? Bueno, tambin debes considerar que por el
lado de XAML hay una diferencia con los DataGrid que ests usando.
Este es el DataGrid que estamos usando para el servicio web ASP.NET.

Este es el DataGrid que estamos usando para el servicio WCF.


<sdk:DataGridTextColumn Width="130" Header="Apellidos"
Binding="{Binding APELLIDOS}"/>
<sdk:DataGridTextColumn Width="130" Header="Telfono"
Binding="{Binding TELEFONO}"/>
<sdk:DataGridTextColumn Width="130" Header="Correo
electrnico" Binding="{Binding EMAIL}"/>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
Si lo pongo en palabras sencillas, la lista que recibimos del servicio WCF es la misma lista
que alimenta al DataGrid, solo que al hacer un enlazado de datos le estars diciendo a que
columna debe ir que informacin.
Insertar Informacin
Para hacer esta operacin los mtodos requeridos son los siguientes, primero vamos con el
servicio web ASP.NET.
private void btnIngresarASP_Click(object sender, System.Windows.RoutedEventArgs

{
servicioASP.InsertarNuevoContactoCompleted += new EventHandler&lt;
ServicioDatosASP.InsertarNuevoContactoCompletedEventArgs&gt;
(servicioASP_InsertarNuevoContactoCompleted);
servicioASP.InsertarNuevoContactoAsync(txtNombreNuevoASP.Text,
txtApellidosNuevoASP.Text, txtTelefonoNuevoASP.Text, txtCorreoNuevoASP.Text);
}
void servicioASP_InsertarNuevoContactoCompleted(object sender,
ServicioDatosASP.InsertarNuevoContactoCompletedEventArgs e)
{
if (e.Error == null)
{
txtNombreNuevoASP.Text = string.Empty;
txtApellidosNuevoASP.Text = string.Empty;
txtTelefonoNuevoASP.Text = string.Empty;
txtCorreoNuevoASP.Text = string.Empty;
MessageBox.Show("Tu nuevo contacto ha sido agregado");
}
}
En el caso del servicio WCF, ser de la siguiente forma.
private void btnIngresarWCF_Click(object sender, System.Windows.RoutedEventArgs
{
servicioWCF.InsertarContactoCompleted += new
EventHandler&lt;ServicioDatosWCF.InsertarContactoCompletedEventArgs&gt;(
servicioWCF_InsertarContactoCompleted);
ServicioDatosWCF.Contacto nuevoContacto = new ServicioDatosWCF.Contacto();
nuevoContacto.Nombre = txtNombreNuevoWCF.Text;
nuevoContacto.APELLIDOS = txtApellidosNuevoWCF.Text;
nuevoContacto.TELEFONO = txtTelefonoNuevoWCF.Text;
nuevoContacto.EMAIL = txtCorreoNuevoWCF.Text;
servicioWCF.InsertarContactoAsync(nuevoContacto);
}
void servicioWCF_InsertarContactoCompleted(object sender,
ServicioDatosWCF.InsertarContactoCompletedEventArgs e)
{
if (e.Error == null)
{
txtNombreNuevoWCF.Text = string.Empty;
txtApellidosNuevoWCF.Text = string.Empty;
txtTelefonoNuevoWCF.Text = string.Empty;
txtCorreoNuevoWCF.Text = string.Empty;
MessageBox.Show("Tu nuevo contacto ha sido agregado");
}
}
Actualizar informacin

Para poder modificar elementos de nuestros contactos lo primero que debes hacer es
manejar el manejador para el evento SelectionChanged de los respectivos DataGrid.
En el caso de ASP.NET te debe quedar as.
private void dgDatosASP_SelectionChanged(object sender,
System.Windows.Controls.SelectionChangedEventArgs e)
{
contactoElegidoASP = new NombreContacto();
contactoElegidoASP = dgDatosASP.SelectedItem as NombreContacto;
txtNombreModificarASP.Text = contactoElegidoASP.Nombre;
txtApellidosModificarASP.Text = contactoElegidoASP.Apellidos;
txtTelefonoModificarASP.Text = contactoElegidoASP.Telefono;
txtCorreoModificarASP.Text = contactoElegidoASP.Email;
}
Y en el caso de WCF ser as.
private void dgDatosWCF_SelectionChanged(object sender,
System.Windows.Controls.SelectionChangedEventArgs e)
{
contactoElegidoWCF = new ServicioDatosWCF.Contacto();
contactoElegidoWCF = dgDatosWCF.SelectedItem as
ServicioDatosWCF.Contacto;
txtNombreModificarWCF.Text = contactoElegidoWCF.Nombre;
txtApellidosModificarWCF.Text = contactoElegidoWCF.APELLIDOS;
txtTelefonoWCF.Text = contactoElegidoWCF.TELEFONO;
txtCorreoModificarWCF.Text = contactoElegidoWCF.EMAIL;
}
Y en el caso del evento clic de los respectivos botones, te debe quedar de la siguiente
manera.
Para el evento del botn de ASP.
private void btnModificarASP_Click(object sender,
System.Windows.RoutedEventArgs e)
{
servicioASP.ActualizarContactoCompleted +=
servicioASP_ActualizarContactoCompleted;
servicioASP.ActualizarContactoAsync(contactoElegidoASP.ID,
txtNombreModificarASP.Text, txtApellidosModificarASP.Text,
txtTelefonoModificarASP.Text, txtCorreoModificarASP.Text);
}
void servicioASP_ActualizarContactoCompleted(object sender,
ServicioDatosASP.ActualizarContactoCompletedEventArgs e)
{
if (e.Error == null)
{

txtNombreModificarASP.Text = string.Empty;
txtApellidosModificarASP.Text = string.Empty;
txtTelefonoModificarASP.Text = string.Empty;
txtCorreoModificarASP.Text = string.Empty;
MessageBox.Show("Tu registro ha sido actualizado");
}
}
Y para el evento del botn WCF.
private void btnModificarWCF_Click(object sender,
System.Windows.RoutedEventArgs e)
{
servicioWCF.ActualizarContactoCompleted += new
EventHandler&lt;ServicioDatosWCF.ActualizarContactoCompletedE
ventArgs&gt;
(servicioWCF_ActualizarContactoCompleted);
servicioWCF.ActualizarContactoAsync(contactoElegidoWCF);
}
void servicioWCF_ActualizarContactoCompleted(object sender,
ServicioDatosWCF.ActualizarContactoCompletedEventArgs e)
{
if (e.Error == null)
{
txtNombreModificarWCF.Text = string.Empty;
txtApellidosModificarWCF.Text = string.Empty;
txtTelefonoWCF.Text = string.Empty;
txtCorreoModificarWCF.Text = string.Empty;
MessageBox.Show("Tu registro ha sido actualizado");
}
}

You might also like