Thursday, February 23, 2012

LESSON 07: .NET REMOTING

EXERCISES: Tạo mới Folder tên Exercise07Soln
Exercise 01 : Tạo mới Solution tên ServerChannelSoln
·        Thêm Console  Application vào Solution tên là TcpServerRemotingPro
·        Thêm Class tên RemoteClass
·        Kế thừa từ Class MarshalByRefObject cho RemoteClass
   public class RemoteClass : MarshalByRefObject
·        Khai báo Constructor và in ra màn hình chuỗi “This is Constructor
           public RemoteClass()
        {
            Console.WriteLine("This is Constructor ");          
        }

·        Khai báo phương thức Public HelloRemoteClass và in ra chuỗi “This is method of RemoteClass
public void HelloRemoteClass()
        {
            Console.WriteLine("This is method of RemoteClass");
   }
·        Khai báo phương thức Public HelloRemoteClass nhận vào tham số là message và in ra chuỗi “This is method of RemoteClass”+ message
public void HelloRemoteClass(string message)
        {
            Console.WriteLine("This is method of RemoteClass" + message);
        }
//code example
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TcpServerRemotingPro
{
    public class RemoteClass : MarshalByRefObject
    {
        public RemoteClass()
        {
            Console.WriteLine("This is Constructor ");          
        }

        public void HelloRemoteClass()
        {
            Console.WriteLine("This is method of RemoteClass");
        }
        public void HelloRemoteClass(string message)
        {
            Console.WriteLine("This is method of RemoteClass" + message);
        }
    }
}

Exercise 02 : Tiếp tục với Project TcpServerRemotingPro
·        Add Reference System.Runtime.Remoting; trong tab .NET
·        Khai báo using trong Class Program
o       using System.Runtime.Remoting;
o       using System.Runtime.Remoting.Channels;
o       using System.Runtime.Remoting.Channels.Tcp;
·        trong phương thức Main
o       Khai báo biến cho TcpServerChannel và khởi tạo với port 2010
TcpServerChannel tcpServerChannel = new TcpServerChannel(2010);
o       Đăng ký TcpServerChannel này và cấu hình nó
ChannelServices.RegisterChannel(tcpServerChannel, false);

RemotingConfiguration.RegisterWellKnownServiceType(
typeof(RemoteClass),"QuocHung",
WellKnownObjectMode.Singleton);
o       In ra màn hình chuỗi “Server is running,please press any ky to termiate
//code example
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

namespace TcpServerRemotingPro
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpServerChannel tcpServerChannel = new TcpServerChannel(2010);
            ChannelServices.RegisterChannel(tcpServerChannel, false);
            try
            {
                RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteClass),
                    "QuocHung"WellKnownObjectMode.Singleton);
                Console.WriteLine("Server is running,please press any ky to termiate");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();
            ChannelServices.UnregisterChannel(tcpServerChannel);
        }
    }
}

Exercise 03 : Tạo mới Solution tên ClientChannelSoln
·        Thêm Console  Application vào Solution tên là TcpClientRemotingPro
·        Copy Class RemoteClass từ TcpServerRemotingPro và đổi namespace
·        Xóa Constructor
·        Xóa body trong phương thức HelloRemoteClass
·        Xóa body trong phương thức HelloRemoteClass có tham số là message
Exercise 04 : Tiếp tục với project TcpClientRemotingPro

·        Add Reference System.Runtime.Remoting; trong tab .NET
·        Khai báo using trong Class Program
o       using System.Runtime.Remoting;
o       using System.Runtime.Remoting.Channels;
o       using System.Runtime.Remoting.Channels.Tcp;
·        trong phương thức Main
o       Khai báo biến cho TcpClientChannel và lấy ra object từ port 2010
TcpClientChannel tcpClientChannel = new TcpClientChannel (2010);
o       Đăng ký TcpClientChannel này và cấu hình nó
RemoteClass remoteClass = (RemoteClass)Activator.GetObject(
typeof(RemoteClass),"tcp://localhost:2010/QuocHung");
                remoteClass.HelloRemoteClass();
                remoteClass.HelloRemoteClass(" HKG");
o       In ra màn hình chuỗi “Client is running,please press any ky to termiate
·        code example
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

namespace TcpClientRemotingPro
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpClientChannel tcpClientChannel = new TcpClientChannel();
            ChannelServices.RegisterChannel(tcpClientChannel, false);
            try
            {
                RemoteClass remoteClass = (RemoteClass)Activator.GetObject(typeof(RemoteClass),
                    "tcp://localhost:2010/QuocHung");
                remoteClass.HelloRemoteClass();
                remoteClass.HelloRemoteClass(" HKG");
                Console.WriteLine("Client is running,please press any ky to termiate");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }
    }
}

Exercise 05 : Tiếp tục với project TcpClientRemotingPro và TcpServerRemotingPro
o       F5(run) TcpServerRemotingPro và thấy in trên server và thấy chuỗi chuỗi “Server is running,please press any ky to termiate

o       F5(run) TcpClientRemotingPro và thấy :
o       In trên client chuỗi
§        Client is running,please press any ky to termiate

o       In trên server chuỗi
§        Server is running,please press any ky to termiate
§        This is Constructor
§        This is method of RemoteClass
§        This is method of RemoteClass message

o       Chèn phím bất kỳ trên client và server để kết thúc
Exercise 06 : Tiếp tục với ServerChannelSoln
·        Thêm Console  Application vào Solution tên là HttpServerRemotingPro
·        Thêm Class tên RemoteClass
·        Kế thừa từ Class MarshalByRefObject cho RemoteClass
   public class RemoteClass : MarshalByRefObject
·        Khai báo Constructor và in ra màn hình chuỗi “This is Constructor
           public RemoteClass()
        {
            Console.WriteLine("This is Constructor ");          
        }

·        Khai báo phương thức Public HelloRemoteClass và in ra chuỗi “This is method of RemoteClass
public void HelloRemoteClass()
        {
            Console.WriteLine("This is method of RemoteClass");
   }
·        Khai báo phương thức Public HelloRemoteClass nhận vào tham số là message và in ra chuỗi “This is method of RemoteClass”+ message
public void HelloRemoteClass(string message)
        {
            Console.WriteLine("This is method of RemoteClass" + message);
        }
//code example
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HttpServerRemotingPro
{
    public class RemoteClass : MarshalByRefObject
    {
        public RemoteClass()
        {
            Console.WriteLine("This is Constructor ");          
        }

        public void HelloRemoteClass()
        {
            Console.WriteLine("This is method of RemoteClass");
        }
        public void HelloRemoteClass(string message)
        {
            Console.WriteLine("This is method of RemoteClass" + message);
        }
    }
}

Exercise 07 : Tiếp tục với Project HttpServerRemotingPro
·        Add Reference System.Runtime.Remoting; trong tab .NET
·        Khai báo using trong Class Program
o       using System.Runtime.Remoting;
o       using System.Runtime.Remoting.Channels;
o       using System.Runtime.Remoting.Channels.Http;
·        trong phương thức Main
o       Khai báo biến cho HttpServerChannel và khởi tạo với port 2011
HttpServerChannel httpServerChannel = new HttpServerChannel (2011);
o       Đăng ký HttpServerChannel này và cấu hình nó
ChannelServices.RegisterChannel(httpServerChannel, false);

RemotingConfiguration.RegisterWellKnownServiceType(
typeof(RemoteClass),"QuocHung",
WellKnownObjectMode.Singleton);
o       In ra màn hình chuỗi “Server is running,please press any ky to termiate
//code example
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

namespace HttpServerRemotingPro
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpServerChannel httpServerChannel = new HttpServerChannel (2011);
            ChannelServices.RegisterChannel(httpServerChannel, false);
            try
            {
                RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteClass),
                    "QuocHung"WellKnownObjectMode.Singleton);
                Console.WriteLine("Server is running,please press any ky to termiate");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadLine();
            ChannelServices.UnregisterChannel(httpServerChannel);
        }
    }
}

Exercise 08 : Tiếp tục với ClientChannelSoln
·        Thêm Console  Application vào Solution tên là HttpClientRemotingPro
·        Copy Class RemoteClass từ HttpClientRemotingPro và đổi namespace
·        Xóa Constructor
·        Xóa body trong phương thức HelloRemoteClass
·        Xóa body trong phương thức HelloRemoteClass có tham số là message
Exercise 09 : Tiếp tục với project httpClientRemotingPro

·        Add Reference System.Runtime.Remoting; trong tab .NET
·        Khai báo using trong Class Program
o       using System.Runtime.Remoting;
o       using System.Runtime.Remoting.Channels;
o       using System.Runtime.Remoting.Channels.Http;
·        trong phương thức Main
o       Khai báo biến cho HttpClientChannel và lấy ra object từ port 2011
HttpClientChannel httpClientChannel = new HttpClientChannel (2011);
o       Đăng ký HttpClientChannel này và cấu hình nó
RemoteClass remoteClass = (RemoteClass)Activator.GetObject(
typeof(RemoteClass),"tcp://localhost:2010/QuocHung");
                remoteClass.HelloRemoteClass();
                remoteClass.HelloRemoteClass("  Http ");
o       In ra màn hình chuỗi “Client is running,please press any ky to termiate
·        code example
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

namespace TcpClientRemotingPro
{
    class Program
    {
        static void Main(string[] args)
        {
            HttpClientChannel httpClientChannel =
new HttpClientChannel ();
            ChannelServices.RegisterChannel(httpClientChannel, false);
            try
            {
                RemoteClass remoteClass = (RemoteClass)Activator.GetObject(typeof(RemoteClass),
                    "tcp://localhost:2011/QuocHung");
                remoteClass.HelloRemoteClass();
                remoteClass.HelloRemoteClass(" HKG");
                Console.WriteLine("Client is running,please press any ky to termiate");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }
    }
}

Exercise 05 : Tiếp tục với project HttpClientRemotingPro và HttpServerRemotingPro
o       F5(run) TcpServerRemotingPro và thấy in trên server và thấy chuỗi chuỗi “Server is running,please press any ky to termiate
o       F5(run) TcpClientRemotingPro và thấy :
o       In trên client chuỗi
§        Client is running,please press any ky to termiate
o       In trên server chuỗi
§        Server is running,please press any ky to termiate
§        This is Constructor
§        This is method of RemoteClass
§        This is method of RemoteClass message
o       Chèn phím bất kỳ trên client và server để kết thúc

Exercise 11 : Thêm mới Solution tên là RemotingSoln
·        Thêm mới Class Library Application vào Solution tên là RemotingClasses
·        Copy RemoteClass từ TcpServerRemotingPro hoặc HttpServerRemotingPro
·        Thay đổi namespace thành RemotingClasses
·        Build project thành dll tên RemotingClasses.dll
·        Xóa bỏ RemoveClass của TcpClientRemotingPro, TcpServerRemotingPro,           HttpClientRemotingPro, HttpServerRemotingPro
·        Add Reference đến RemotingClasses.dll tới 4 project trên
·        Chạy server và client và sẽ không xuất hiện lỗi
·        Code example
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace RemotingClasses
{
    public class RemoteClass : MarshalByRefObject
    {
        public RemoteClass()
        {
            Console.WriteLine("This is Constructor ");
        }

        public void HelloRemoteClass()
        {
            Console.WriteLine("This is method of RemoteClass");
        }
        public void HelloRemoteClass(string message)
        {
            Console.WriteLine("This is method of RemoteClass" + message);
        }
    }
}

0 comments:

Post a Comment