Benutzer:MovGP0/NET/Remoting

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
   MovGP0        Über mich        Hilfen        Artikel        Weblinks        Literatur        Zitate        Notizen        Programmierung        MSCert        Physik      

Contract
namespace DotNetRemoting.Contract
{
    public interface ICustomerManager
    {
        Customer GetCustomer(int id);
    }
}
using System;

namespace DotNetRemoting.Contract
{
    [Serializable]
    public class Customer
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public DateTime DateOfBirth { get; set; }

        public int Age
        {
            get
            {
                var timespan = DateTime.Today.Subtract(DateOfBirth);
                return timespan.Days / 356;
            }
        }
    }
}
Server
using System;
using DotNetRemoting.Contract;

namespace DotNetRemoting.Server
{
    public class CustomerManager : MarshalByRefObject, ICustomerManager
    {
        public Customer GetCustomer(int id)
        {
            return new Customer
            {
                FirstName = "John",
                LastName = "Doe",
                DateOfBirth = new DateTime(1980, 7, 4)
            };
        }
    }
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

namespace DotNetRemoting.Server
{
    class Program
    {
        static void Main()
        {
            var channel = new HttpChannel(1234);
            ChannelServices.RegisterChannel(channel, false);
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(CustomerManager), "CustomerManager.soap", WellKnownObjectMode.Singleton);

            Console.Write("Service has started. Press enter to cancel.");
            Console.ReadLine();
        }
    }
}
Client
using System;
using System.Globalization;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using DotNetRemoting.Contract;

namespace DotNetRemoting.Client
{
    class Program
    {
        static void Main()
        {
            var channel = new HttpChannel();
            ChannelServices.RegisterChannel(channel, false);
            var manger = (ICustomerManager)Activator.GetObject(typeof (ICustomerManager),"http://localhost:1234/CustomerManager.soap");

            var customer = manger.GetCustomer(4711);
            var age = customer.Age;
            Console.WriteLine("The age of the customer is {0} years.", age.ToString(CultureInfo.InvariantCulture));
        }
    }
}