Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Un derivativo es una entidad financiera cuyo valor se deriva de otro. Por ejemplo, el valor de las
acciones de Microsoft el 11 de octubre de 2005 era $24,41. Teniendo en cuenta que este valor,
se podría ofrecer una opción para comprar 1.000 de esas acciones por $ 25 cada uno, el 11 de
noviembre de 2005. Tal opción, que es conocida como una llamada, podría ser comprada por
alguien que anticipa que el precio de las acciones superará los 25 dólares el 11 de noviembre de
2005, y vendida por alguien que anticipa que el precio de las acciones se reducirá. Esta llamada
es un derivativo, su valor se deriva del valor de Microsoft.
Asignar un precio a un derivativo es una tarea compleja. De hecho, la estimación del valor de los
derivativos es quizás el problema más conocido en la microeconomía moderna.
Ejercicio 1
Crear una nueva solución en blanco (Otros Proyectos, Solución en Blanco), llamada
CalculadoraDeDerivativos.
namespace ServicioCalculadoraDerivativos
{
[ServiceContract]
public interface ICalculadoraDerivativos
{
[OperationContract]
Decimal CalcularDerivativo(int dias, string[] simboloss, string[]
funciones);
}
}
Agregar una clase, denominada Calculadora.cs al proyecto, modificar el contenido con el código:
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
namespace ServicioCalculadoraDerivativos
{
public class Calculadora : ICalculadoraDerivativos
{
#region Miembros de ICalculadoraDerivativos
#endregion
}
}
5. Construya el proyecto
Ejercicio 2
using ServicioCalculadoraDerivativos;
namespace Anfitrion
{
class Program
{
static void Main(string[] args)
{
using (ServiceHost anfitrion = new ServiceHost(typeof(Calculadora),
new Uri("http://localhost:8080/Derivativos/Calculadora")))
{
anfitrion.Open();
Console.WriteLine("El servicio de Calculadora de Derivativos está
corriendo... Para terminar presione una tecla");
Console.ReadKey();
}
}
}
}
5. Configurar el anfitrión
contract="ServicioCalculadoraDerivativos.ICalculadoraDerivativos"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="NewBehavior0">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
6. Probar el servicio
Construir la solución.
Ejercicio 3
2. Generar el proxy
Abra el explorador de Windows, diríjase a la carpeta debug del Anfitrión y ejecute el anfitrión
como Administrador.
En las propiedades del Cliente, clic derecho y escoger Agregar Referencia de Servicio...
namespace Cliente
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Presionar una tecla para iniciar...");
Console.ReadKey();
}
}
}
4. Pruebe la solución completa
Ejercicio 4
Ejercicio 5
1. Cree una nueva solución, con un proyecto de Biblioteca de Servicio WCF, denominada
ServicioCapitales.
2. Elimine los archivos IService1.cs y Service1.cs
3. Agregue un archivo de Interfaz denominado IInformacionPais.cs, modifique su
contenido con el siguiente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
namespace ServicioCapitales
{
[ServiceContract]
interface IInformacionPais
{
[OperationContract]
string ObtenerCapital(string pais);
}
}
namespace ServicioCapitales
{
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
class InformacionPais : IInformacionPais
{
public string ObtenerCapital(string pais)
{
Console.WriteLine("Contactando al servidor....");
if (pais == "Ecuador")
return "Quito";
else if (pais == "Colombia")
return "Bogota";
return "Pais Desconocido";
}
}
}
using System.ServiceModel;
using ServicioCapitales;
namespace Cliente
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Uso de WCF");
System.Threading.Thread servidor = new
System.Threading.Thread(ServicioCapitales.Program.Main);
servidor.IsBackground = true;
servidor.Start();
System.Threading.Thread.Sleep(100);
ChannelFactory<ServicioCapitales.IInformacionPais> canal;
canal = new ChannelFactory<ServicioCapitales.IInformacionPais>(
new NetTcpBinding(),
"net.tcp://localhost:8080");
ServicioCapitales.IInformacionPais interfaz;
interfaz = canal.CreateChannel();
while (true)
{
Console.Write("Ingrese un país: ");
string pais = Console.ReadLine();
if (pais == "")
break;
string capital = interfaz.ObtenerCapital(pais);
Console.WriteLine("La capital es: " + capital);
}
(interfaz as ICommunicationObject).Close();
ServicioCapitales.Program.DeternerServidor();
}
}
}