Hướng dẫn viết 1 chương trình minh họa Remoting với C#
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 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
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
- Thiết kế frmServer có giao diện như hình sau
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ụ)
- Add reference namespace System.Runtime.Remoting
- Kết quả sau khi tham chiếu hai thư viện
- Trong cửa sổ code, using các thư viện như sau
-Khai báo các biến dùng trong chương trình
-
- Xử lý sự kiện Load của form
- Xử lý sự kiện Click của nút Khởi động (btnKhoidong)
- Xử lý sự kiện Click của nút Tắt (btnTat)
- 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
- Thiết kế frmClient có giao diện như hình sau:
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ụ)
- Add reference namespace System.Runtime.Remoting
- Kết quả sau khi tham chiếu hai thư viện
- Trong cửa sổ code, using các thư viện như sau
- Khai báo biến dùng trong chương trình
- Xử lý sự kiện Click nút Kết nối (btnKetnoi)
- Xử lý sự kiện Validating của ô nhập tên (txtTrangthai)
- 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”
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ủ”
- Nhập tên của bạn thứ 1 vào ô và nhấn phím TAB
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
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.
- 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)
[You must be registered and logged in to see this link.]