Jūs esate

C# Remote Object'o iškvietimas

KTU'ne per .NET modulį davė parašyti dvi programėles. Viena iškviečia kitos Remote Object'ą. Kitaip tariant: veikia programa-serveris. Jinai turi žiauriai gerą ir naudingą metodą, kuriuo baisiai nori pasinaudoti programa-klientas. Kaip tai padaryti? //-----------RemoteServer.cs--------------------------
using System;
using System.Runtime;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PirmasAtsiskaitymas
{
    public class RemoteServer : MarshalByRefObject
    {
        public RemoteServer() { }

        static void Main(string[] args)
        {
            HttpChannel chan1 = new HttpChannel(10000);

            ChannelServices.RegisterChannel(chan1);

            RemotingConfiguration.RegisterWellKnownServiceType(
                typeof(PirmasAtsiskaitymas.RemoteServer),
                "GrazintiSkaiciu",
                WellKnownObjectMode.Singleton);

            Console.ReadLine();
        }

        public int GrazintiSkaiciu()
        {
            Random random = new Random();
            int skaicius = random.Next();
            return skaicius;
        }
     }

}
//-----------------Program.cs--------------------
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using System.IO;
namespace PirmasAtsiskaitymas
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpChannel chan1 = new HttpChannel();
            ChannelServices.RegisterChannel(chan1);
            RemoteServer serveris =
                   (RemoteServer)Activator.GetObject(typeof(PirmasAtsiskaitymas.RemoteServer),
                   "http://localhost:10000/GrazintiSkaiciu");

            try
            {
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine("Nutoles serveris grazino: " + serveris.GrazintiSkaiciu());
                }
            }
            catch (IOException ex)
            {
                Console.WriteLine("Priemimo klaida!!!!");
            }
        }
    }
}
Kompiliavimas: csc RemoteServer.cs csc /reference:RemoteServer.exe Program.cs Tada paleidžiame RemoteServer.exe ir Program.exe. Na, ir žiūrim, ką šis programinės minties stebūklas pagamins :)

Komentarai

Gal ir įdomu, bet praktiškai nenaudinga šiais web servisų laikais ;)

Be to iš saugumo pusės tai hmf..

Nu joa. Šifravimo kaip minimum reikia ;///
Buvo kita tema su XML Web Service'ais. Bet davė Remote Object'us :)

Komentuoti