Está en la página 1de 3

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ClsCalcular
{
public class Calculadora : MarshalByRefObject
{
public Calculadora()
{
}
public int suma(int a, int b)
{
return a + b;
}
}
}

MarshalByRefObject : Esta es la condición que permite que las instancias de una clase dada puedan ser manejadas
como por medio de un control remoto o mando a distancia.
System.Runtime.Remoting
Proporciona información de referencia acerca de los tipos que se pueden utilizar para ejecutar
.NET Remoting.
System.Runtime.Remoting.Channels.Tcp
Contiene clases que definen canales que utilizan el protocolo TCP para transportar mensajes y
objetos a ubicaciones remotas, o viceversa.
TcpChannel
Es el conducto por el que un cliente y su servidor remoto intercambian mensajes.
RegisterWellKnownServiceType
Este metodo anuncia la disponibilidad de una instancia de la clase Cliente (del proyecto Negocio).
SingleCall
Cada vez que un cliente realice una llamada remota, el servidor creara una instancia, que sera
destuida cuando termine la llamada. No se preservara información de estado de una llamada a la
siguiente.

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels.Tcp;
using ClsCalcular;
namespace SerRemoto
{
class Program
{
[STAThread]
static void Main(string[] args)
{
RemotingConfiguration.RegisterWellKnownServiceType(typeof(ClsCalcular.Calculadora),
"Calculadora", WellKnownObjectMode.SingleCall);
TcpChannel chnl = new TcpChannel(1235);
Console.WriteLine("Servidor Remoto Activado");
Console.ReadLine();
}
}
}

using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ClsCalcular;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
namespace Cliente
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();

1
}
private void button1_Click(object sender, EventArgs e)
{

Calculadora Opera=new Calculadora();


int n1, n2;
n1 = Int16.Parse(textBox1.Text);
n2 = Int16.Parse(textBox2.Text);
this.textBox3.Text = Opera.suma(n1, n2).ToString();
}

private void Form1_Load(object sender, EventArgs e)


{
TcpClientChannel chanel = new TcpClientChannel();
ChannelServices.RegisterChannel(chanel, false);
RemotingConfiguration.RegisterWellKnownClientType(typeof(Calculadora),
"tcp://localhost:1235/Calculadora");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
namespace Negocio
{
public class ClsClientes:MarshalByRefObject
{
public DataSet DatosCliente(string codigo)
{
SqlConnection con = new SqlConnection();
string cad = "Data
Source=SERVER7\\SQLEXPRESS;Initial Catalog=BDTAISI;Integrated
Security=True";
con.ConnectionString = cad;
con.Open();
SqlCommand cmd = new SqlCommand("pa_Clientes_Buscar_Codigo",con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@codigo", codigo);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
try
{
da.Fill(ds);
}
catch (Exception ex)
{
throw ex;
}
con.Close();
return ds;
}
}
}
ServidorRemBD

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels.Tcp;
using Negocio;

namespace ServidorRemBD
{
class Program
{
[STAThread]
static void Main(string[] args)
{
RemotingConfiguration.RegisterWellKnownServiceType(typeof(ClsClientes),
"ClsClientes", WellKnownObjectMode.SingleCall);
TcpChannel chnl = new TcpChannel(1235);
Console.WriteLine("Servidor Remoto Activado");
Console.ReadLine();

2
}

}
}

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
using Negocio;
namespace ClienteBD
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)


{
TcpClientChannel chanel = new TcpClientChannel();
ChannelServices.RegisterChannel(chanel, false);
RemotingConfiguration.RegisterWellKnownClientType(typeof(ClsClientes),
"tcp://localhost:1235/ClsClientes");

}
private void button1_Click(object sender, EventArgs e)
{
ClsClientes Buscar = new ClsClientes();
DataSet ds = new DataSet();
DataTable dt;
DataRow dr;
ds = Buscar.DatosCliente("" + this.txtcodigo.Text + "");
dt = ds.Tables[0];
dr = dt.Rows[0];
txtNombres.Text = Convert.ToString(dr["nombres"]);
txtApellidos.Text = Convert.ToString(dr["apellidos"]);
txtDireccion.Text = Convert.ToString(dr["direccion"]);
txtTelefono.Text = Convert.ToString(dr["telefono"]);
}
}
}

También podría gustarte