Tulajdonképpen HTTP-t használhattunk volna múltkori példánknál is, a helyi hálózat esetében. Ezt csak azért nem tettük, mert a kommunikáció a két alkalmazás között TCP-n keresztül gyorsabb, így amikor csak lehet, ezt használjuk távoli hívások esetén.
Mostani példánkban teljes egészében a múlt héten készült példát használjuk fel, így csak azokat a részeket tárgyaljuk, melyek különböznek attól. A példa teljes megértéséhez ezért szükséges a múlt heti példa ismerete.
A szerver objektumunkban most nem egy TcpChannel osztályt kell használnunk, hanem egy HttpChannel-t. Ennek konstruktorában éppen úgy mint múltkor, a használandó port számát kell megadnunk.
HttpChannel hc = new HttpChannel(9002);
ChannelServices.RegisterChannel(hc);
Ehhez hasonlóan a kliens objektumában is ezen osztályra van szükség a kapcsolatfelvétel érdekében.
HttpChannel hc = new HttpChannel();
ChannelServices.RegisterChannel(hc);
Mivel most HTTP-n keresztül megy a kapcsolat, így az objektumunkat is egy HTTP kéréssel érhetjük el: http://localhost:9002/Multiple.
rc = (RemoteClass)Activator.GetObject(typeof(RObject.RemoteClass), "http://localhost:9002/Multiple");
Ezek után a szükséges függvény meghívása már ugyanúgy történik, mintha csak egy, a saját alkalmazásunkban lévő lokális függvényről lenne szó.
private void button1_Click(object sender, System.EventArgs e)
{
label2.Text=rc.MultipleMethod(Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text));
}