Hướng dẫn viết 1 chương trình minh họa Remoting với C#

Discussion in 'C & C++' started by Mickey, Dec 6, 2017.

  1. Mickey

    Mickey Hacking For Hacker Staff Member

    Sau khi hoàn tất bài thực hành này, bạn đạt được một solution với cấu trúc như sau

    [​IMG]

    Các bước thực hiện

    1. Xây dựng lớp xử lý nghiệp vụ (còn gọi là Remote Object)

    1.1/. Tạo project dạng Class Library đặt tên là DoituongNghiepvu
    1.2/. Tạo class có tên KHACHHANG kế thừa từ lớp MarshalByRefObject có nội dung như sau

    [​IMG]


    1.3/. Biên dịch project, bạn nhận được tập tin DoituongNghiepvu.dll

    2. Xây dựng lớp Server
    2.1/. Tạo mới project dạng Window Application đặt tên là TangServer

    - Đổi tên Form1 thành frmServer

    [​IMG]

    - Thiết kế frmServer có giao diện như hình sau

    [​IMG]

    Textbox:
    Name: txtTrangthai
    Button1:
    Name: btnKhoidong
    Text: Khởi động
    Button2:
    Name: btnTat
    Text: Tắt

    2.2/. Xử lý code

    - Add Reference tập tin DoituongNghiepvu.dll (kết quả bước xây dựng lớp nghiệp vụ)

    [​IMG]


    - Add reference namespace System.Runtime.Remoting

    [​IMG]


    - Kết quả sau khi tham chiếu hai thư viện

    [​IMG]

    - Trong cửa sổ code, using các thư viện như sau
    [​IMG]


    -Khai báo các biến dùng trong chương trình
    -
    [​IMG]

    - Xử lý sự kiện Load của form

    [​IMG]


    - Xử lý sự kiện Click của nút Khởi động (btnKhoidong)

    [​IMG]


    - Xử lý sự kiện Click của nút Tắt (btnTat)

    [​IMG]


    - Biên dịch project, nhận được tập tin TangServer.exe

    3. Xây dựng lớp Client
    3.1/. Tạo mới project dạng Window Application đặt tên là TangClient

    - Đổi tên Form1 thành frmClient

    [​IMG]

    - Thiết kế frmClient có giao diện như hình sau:

    [​IMG]

    Label1:
    Text: Tên máy chủ hoặc địa chỉ IP
    Textbox1:
    Name: txtIP
    Label2:
    Text: Số prt
    Textbox2:
    Name: txtPort
    Button:
    Name: btnKetnoi
    Text: Kết nối máy chủ
    Label3:
    Name: lblTrangthai
    Text: Trạng thái
    Textbox3:
    Name: txtTrangthai
    Enabled: False
    Textbox4:
    Name: txtKetqua

    3.2/. Xử lý code

    - Add Reference tập tin DoituongNghiepvu.dll (kết quả bước xây dựng lớp nghiệp vụ)

    [​IMG]


    - Add reference namespace System.Runtime.Remoting

    [​IMG]


    - Kết quả sau khi tham chiếu hai thư viện

    [​IMG]

    - Trong cửa sổ code, using các thư viện như sau

    [​IMG]


    - Khai báo biến dùng trong chương trình

    [​IMG]

    - Xử lý sự kiện Click nút Kết nối (btnKetnoi)

    [​IMG]


    - Xử lý sự kiện Validating của ô nhập tên (txtTrangthai)

    [​IMG]


    - Biên dịch project nhận được tập tin TangServer.exe

    4. Test ứng dụng

    4.1/. Chạy tập tin TangServer.exe.

    - Click nút “Khởi động”

    [​IMG]


    4.2/. Chạy tập tin TangClient.exe lần thứ 1

    - Nhập tên máy chủ hoặc địa chỉ IP máy chủ.
    - Nhập số Port
    - Click nút “Kết nối máy chủ”

    [​IMG]


    - Nhập tên của bạn thứ 1 vào ô và nhấn phím TAB

    [​IMG]


    4.3/. Chạy tập tin TangClient.exe lần thứ 2

    - Nhập tên máy chủ hoặc địa chỉ IP máy chủ.
    - Nhập số Port
    - Click nút “Kết nối máy chủ”
    - Nhập tên của bạn thứ 2 vào ô và nhấn phím TAB
    [​IMG]


    4.4/. Có thể thực hiện nhiều lần việc chạy tập tin TangClient.exe trên nhiều máy, quan sát kết quả. Nếu bạn là người thứ N thực thi, thì chương trình sẽ thông báo có (N-1) người trước bạn

    * Giải thích vấn đề:

    - Chúng ta xem lại TangServer, khi thực hiện đăng ký Remote Object, ta đăng ký với mode là Singleton, tức là 1 đối tượng của lớp KHACHHANG được sinh ra tại Server và phục vụ cho tất cả các lời triệu gọi từ các client.

    [​IMG]


    - Nếu bạn đăng ký với mode là SingleCall thì sẽ có N đối tượng của lớp KHACHHANG được tạo ra ứng với N lời triệu gọi từ N client (bạn có thể test)
    Theo Kist
     

Share This Page