intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Hệ quản trị cơ sở dữ liệu II: Điều khiển từ xa (Remoting) - Phan Hiền

Chia sẻ: Lavie Lavie | Ngày: | Loại File: PDF | Số trang:16

78
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Dưới đây là bài giảng Hệ quản trị cơ sở dữ liệu II: Điều khiển từ xa (Remoting) do Phan Hiền biên soạn. Mời các bạn tham khảo bài giảng để hiểu rõ hơn về cấu trúc, ảnh, đối tượng của điều khiển từ xa. Với các bạn chuyên ngành Công nghệ thông tin thì đây là tài liệu hữu ích.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Hệ quản trị cơ sở dữ liệu II: Điều khiển từ xa (Remoting) - Phan Hiền

  1. ĐIỀU KHIỂN TỪ XA (REMOTING) HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU II Phan Hiền
  2. CẤU TRÚC (TYPE)  Quản lý cấu trúc của lớp (không có giá trị)  Quản lý nội dung lệnh của các hành vi (mã nguồn)  Cú pháp lấy cấu trúc  typeof (kiểu_dữ_liệu)  Type.GetType(tên_dữ_liệu)  Đốitượng.GetType()  Ví dụ  Type t = typeof(int);  Type t = Type.GetType(“System.String”);  ChuNhat cn = new ChuNhat(); Type t = cn.GetType();
  3. ẢNH (REFLECTION)  Mô tả thông tin phản ảnh thành phần lớp hay hàm hay thuộc tính, …, quản lý nội dung lệnh của các hành vi.  Ảnh này được tạo bởi từ cấu trúc của lớp (đương nhiên không có giá trị các thuộc tính – vì là lớp).  Một đối tượng thật được hình thành từ cấu trúc (cùng ảnh của lớp) và giá trị của các thuộc tính hay đối tượng.  Các lớp mô tả ảnh:  MethodInfo  FieldInfo  PropertyInfo  ContructorInfo  EventInfo  MemberInfo
  4. ĐỐI TƯỢNG (OBJECT)  Là lớp chung cho tất cả các đối tượng.  Mọi lớp đều được kế thừa từ lớp Object.  Mọi đối tượng đều có thể ép về Object để lưu giá trị mà không thể hiện rỏ cấu trúc chính xác. ACTIVATOR  Lớp tạo dữ liệu đối tượng từ cấu trúc với ảnh của khởi tạo. Activator.CreateInstance(Type cấu_trúc, object[] mãng_giá_trị_cho_khởi_tạo_tương_ứng ) Activator.CreateInstance(Type cấu_trúc) Trả về object (đối tượng theo lớp Object, lưu dữ liệu nhưng không thể hiện cấu trúc theo lúc tạo một cách rỏ ràng.)
  5. ẢNH (REFLECTION) namespace myReflection { public class thuvien { public int giatri = 2; public thuvien() { } public thuvien(int _gt) { giatri = _gt; } public string ghepchuoi(string s) { string kq = ""; for (int i = 0; i < giatri; i++) kq += s; return kq; } } }
  6. ẢNH (REFLECTION) Type t = Type.GetType("myReflection.thuvien"); MethodInfo mi = t.GetMethod("ghepchuoi", new Type[]{typeof(string)}); //object o = Activator.CreateInstance(t); object o = Activator.CreateInstance(t, new object[]{5}); string s = mi.Invoke(o, new object[]{ "chao " }) .ToString().Trim(); ---------------------- Nếu khởi tạo không tham số thì kết quả là “chao chao ” Nếu khởi tạo có tham số thì kết quả là “chao chao chao chao chao ”
  7. ẢNH (REFLECTION) - INVOKE  Hàm Invoke dùng để gọi nội dung lệnh của hàm với đối tượng có dữ liệu.  Cơ chế thực thi này hào toàn dựa vào cấu trúc (ảnh của hành vi) và đối tượng dữ liệu tổng quan (object, do Activator tạo ra).  Điều này tạo nên một hình thức gọi hàm mới với các tham số chủ yếu là chuỗi định danh.  Người ta gọi đây là gọi hàm qua ảnh của hàm.
  8. ASSEMBLY  Dùng để load nội dung từ một tập tin dll.  Lấy ra cấu trúc từ Assembly  Tạo được đối tượng từ Assembly. Dùng hàm CreateInstance(…) Ví dụ: Assembly ass = Assembly.LoadFrom("aaa.dll"); Type t = ass.GetType();  Bạn có thể load nội dung từ dll do người dùng chép vào (không cần đăng ký reference)
  9. ĐIỀU KHIỂN TỪ XA (REMOTING)  Là cơ chế kích hoạt đối tượng (hành vi) từ xa (ở một máy khác).  Lớp được điều khiển từ xa bắt buộc phải kế thừa lớp đặc biệt MarshalByRefObject.  Đối tượng trong tham số hàm bắt buộc phải có sự kế thừa lớp Serializable.  Bên bị điều khiển (Gọi là nơi cung cấp hành vi cho điều khiển từ xa).  Bên điều khiển (Gọi là nơi đưa yêu cầu thực thi hành vi từ xa)
  10. ĐIỀU KHIỂN TỪ XA (REMOTING) Ứng dụng gọi (Client) Nền .Net Bên bị điều khiển - Server Công khai Nhận kết quả Lớp cho Remote (MarshalByRefObject) Gọi từ xa • Hành vi cho remote • Hành vi cho remote Tìm kiếm Công khai bên ngoài qua: + Định danh mạng + Cổng giao tiếp (Port) + Tên riêng của Server Phải có các giao diện Dll (Hàm không nội dung) Giao diện (Interface) Dll (Hàm không nội dung)
  11. VÍ DỤ GỌI TỪ XA - SERVER Tạo lớp phân số cho tham số truyền namespace server { [Serializable] public class phanso { public int ts, ms; public phanso() { ts = 0; ms = 1; } public phanso(int _ts, int _ms) { ts = _ts; ms = _ms; } } }
  12. VÍ DỤ GỌI TỪ XA - SERVER Tạo lớp hành vi cho phép gọi từ xa namespace server { public class remotechucnang : MarshalByRefObject { public remotechucnang() { } public phanso nhan(phanso p) { p.ts = p.ts * 2; return p; } public int cong(int x) { return x + 2; } } }
  13. VÍ DỤ GỌI TỪ XA - SERVER  Công khai các hành vi cho điều khiển từ xa. try { int port = 9955; HttpChannel httpc = new HttpChannel(port); // dang ky port + kenh o tren may ChannelServices.RegisterChannel(httpc); // dang ky dinh danh cho remote RemotingConfiguration. RegisterWellKnownServiceType( typeof(remotechucnang),"serverremote01", WellKnownObjectMode.Singleton); } catch (Exception ex) {}  Dịch ứng dụng Server thành tập tin chạy
  14. VÍ DỤ GỌI TỪ XA – INTERFACE OF SERVER Tạo lớp giao diện cho server, hay hành vi không nội dung Cùng tên với ứng dụng Server, cùng tên namespace namespace server { [Serializable] public class phanso { public int ts, ms; public phanso() { ts = 0; ms = 1; } public phanso(int _ts, int _ms) { ts = _ts; ms = _ms; } } }
  15. VÍ DỤ GỌI TỪ XA – INTERFACE OF SERVER namespace server { public class remotechucnang : MarshalByRefObject { public remotechucnang() { } public phanso nhan(phanso p) { return null } public int cong(int x) { return 0; } } }  Dịch giao diện Server thành DLL, chép DLL vào bên ứng dụng gọi (Client).
  16. VÍ DỤ GỌI TỪ XA - CLIENT  Tìm kiếm hành vi cho điều khiển từ xa, nhận về tham chiếu. try { server.remotechucnang rem = (server.remotechucnang) Activator.GetObject( typeof(server.remotechucnang), “http://phvn:9955/serverremote01” ); server.phanso p = new server.phanso(3, 4); server.phanso p2 = rem.nhan(p); int x = rem.cong(8); } catch (Exception ex) {}
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2