Bài 4: Middleware

Middleware che dấu/ cung cấp cái gì – Cung cấp sự trong suốt về vị trí: • Một lập trình viên có thể gọi một method mà không cần biết method đó thực sự đang tồn tại ở đâu (cùng máy, khác máy) – Che dấu nghi thức truyền thông bên dưới • UDP hay TCP – Che dấu chi `ết về quá trình marshall tự động – Độc lập với OS – CORBA cho phép các ngôn ngữ lập trình khác nhau có thể “nói chuyện) với nhau • Sử dụng interface defini`on language (IDL)

pdf48 trang | Chia sẻ: lylyngoc | Lượt xem: 1827 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài 4: Middleware, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Middleware   Tham  khảo  :  Dr  Simon  Blake   Middleware     • Middleware  che  dấu/  cung  cấp  cái  gì   – Cung  cấp  sự  trong  suốt  về  vị  trí:     • Một  lập  trình  viên  có  thể  gọi  một  method  mà  không  cần  biết   method  đó  thực  sự  đang  tồn  tại  ở  đâu  (cùng  máy,  khác  máy)   – Che  dấu  nghi  thức  truyền  thông  bên  dưới   • UDP  hay  TCP   – Che  dấu  chi  `ết  về  quá  trình  marshall  tự  động   – Độc  lập  với  OS   – CORBA  cho  phép  các  ngôn  ngữ  lập  trình  khác  nhau  có  thể     “nói  chuyện)  với  nhau   • Sử  dụng  interface  defini`on  language  (IDL)   Interfaces   •   interface  là  gì  ?   – Không  phải  là  GUI   – Interface  là  các  phương  `ện  kết  nối  hai  hệ  thống  khác  nhau   Interfaces   private  void  myCalc(){      System.out.println(sumNumbers(10,10));      System.out.println(sumNumbers(5,7));   }   public  int  sumNumbers(int  a,  int  b){        return  a+b;   }   Phương  thức  cộng  hai  số  nguyên   Phương  thức  tham  chiếu  đến  và   gọi  phương  thức  ở  trên.   Interfaces   • Interfaces   – Gọi  method  mà  không  cần  biết  code  của  nó  được  viết  thế  nào     – Chỉ  cần  interface  không  đổi  thì  vẫn  có  thể  gọi  như  cũ   private  void  myCalc(){      System.out.println(sumNumbers(10,10));      System.out.println(sumNumbers(5,7));   }     public  int  sumNumbers(int  a,  int  b){        int    result  =  a+b;        return  result;   }   Chúng  ta  thay  đổi  cài  đặt  của  thuật  toán  cộng  hai   số  nguyên   Tuy  vậy,  không  thay  đổi  ở  cách  gọi  phương  thức   cũ   Interfaces   • Interfaces  trong  hệ  thống  thông  `n  phân  tán   – Không  truyền  tham  chiếu     – Các  đối  số  hoặc  là  đối  số  Input  hoặc  Output     • Input    đối  số  chứa  các  giá  trị  sẽ  được  server  sử  dụng   • Output  đối  số  được  dùng  để  server  trả  giá  trị  cho  client   – Việc  truy  xuẩ  trực  `ếp  là  không  được  phép   • Mọi  trao  đổi  thông  qua  thông  điệp  (messages)   Interfaces     • Interfaces  trong  HTTT  phân  tán   – IDL:  Interface  Defini`on  Language   • Cung  cấp  một  sự  thỏa  thuận  để  mô  tả  interfaces  giữa  các  methods   • Bao  gồm  việc  phân  biệt  giữa  tham  số  Input  và  Output     Interfaces     • Một  ví  dụ  về  CORBA  IDL   struct  Person  {        string  name;        string  place;        long  year;   };   Interface  PersonList{        readonly  aŒribute  string  listname;        void  addPerson(in  Person  p);        void  getPerson(in  string  name,  out  Person  p);        long  number();   };   Contains  marshalling   informaSon   Interfaces     • An  example  CORBA  IDL   struct  Person  {        string  name;        string  place;        long  year;   };   Interface  PersonList{        readonly  aŒribute  string  listname;        void  addPerson(in  Person  p);        void  getPerson(in  string  name,  out  Person  p);        long  number();   };   And  also  remote  method   interfaces   Truyền  thông  giữa  các  đối  tượng  phân  tán   • Mô  hình  đối  tượng   – Đối  tượng  có  dữ  liệu  và  phương  thức   – Các  đối  tượng  tương  tác  với  nhau  thông  qua  phương  thức   – Các  đối  tượng  có  thể  cho  phép  đối  tượng  khác  truy  xuất  đến  dữ  liệu   bên  trong  của  nó   • Tuy  vậy  trong    DIS  các  đối  tượng  ở  trên  các  máy  khác  nhau     data   methods   class   Mô  hình  đối  tượng  phân  tán   • Trong  mô  hình  đối  tượng   – Chỉ  truy  xuất  thông  qua  interfaces   – Các  đối  tượng  có  thể  thực  thi  trong  các  `ến  trình  phân  biệt   • Các  đối  tượng  phân  tán  cũng  thực  thi  như  các  `ến  trình  độc  lập   và  truyền  thông  thông  qua  interfaces   • Tuy  vậy,  trong  các  `ến  trình  trong  DIS  có  thể  chạy  trên  các  máy   khác  nhau   – Truyền  thông  có  thể  thông  qua  RMI   • Trong  một  DIS  một  chương  trình  có  thể  sử  dụng  một  chuỗi  các   `ến  trình  cục  bộ  hoặc  từ  xa   Các  đối  tượng  phân  tán   RI   A   RI  =  Remote  InvocaSon   LI  =  Local  InvocaSon    =  an  object    =  a  message   client   RI   RI   LI   LI   LI   C   B   E   F   D   G   server   •  Một  ví  dụ  client  server     Mô  hình  đối  tượng  phân  tán   (The  Distributed  Object  Model)       • Các  đối  tượng  có  thể  được  định  nghĩa  để   nhận  các  yêu  cầu  cục  bộ  hay  từ  xa   • Để  tạo  một  lời  gọi  từ  xa,  người  gọi  phải  có   một  tham  chiếu  đối  tượng  từ  xa   • Các  đối  tượng  từ  xa  phải  có  một   interfaces  từ  xa  trong  đó  xác  định  rõ  các   method  có  thể  gọi  từ  xa   The  Distributed  Object  Model       • Remote  interface  example     Data   Remote  object   m4   m5   m6   ImplementaSon  of   methods   m1   m2   m3   Remote   interface   A  process   A  process   RMI  (Remote  Method  InvocaSon)   • RMI  được  cài  đặt  thế  nào?   – RMI  tổ  hợp  nhiều  đối  tượng  và  modules   • Module  truyền  thông   • Module  tham  chiếu  từ  xa   • Phần  mềm  RMI     – Proxy   – Dispatcher   – Skeleton   • binder   • Garbage  collec`on   • Ac`va`on  mechanisms   • And  there  are  more   RMI   – >>>  PICTURE  HERE  <<<   – Client   • Chứa  các  proxies  đại  diện  cho  các  đối  tượng  từ  xa   • Module  tham  chiếu  từ  xa   • Cũng  có  thể  có  một  binder  đến  cấc  đối  tượng  từ  xa   • Một  modue  truyền  thông   – Server   • Chứa  các  skeletons  và  các  dispatchers   • Module  truyền  thông   request   reply   Skeleton,   dispatcher   for  B   Remote   reference   module   Remote   reference   module   Proxy   For  B   CommunicaSon  module   B  A   Ví  dụ:  đối  tượng  A  tạo  một  lời  gọi  từ  xa  đến  đối  tượng    B   RMI   • RMI  được  cài  đặt  như  thế  nào  ?   request   reply   Skeleton,   dispatcher   for  B   Remote   reference   module   Remote   reference   module   Proxy   For  B   B  A   Ví  dụ:  Đối  tượng  A  thực  hiện  lời  triệu  gọi  từ  xa  một  phương  thức  của    đối   tượng  B   RMI   • Module  truyền  thông   – Cái  đặt  các  nghi  thức  yêu  cầu-­‐trả  lời  (Request-­‐Reply)  dùng  trong  truyền   thông   • Module  tham  chiếu  từ  xa   – Xác  định  các  tham  chiếu  là  cục  bộ  hay  từ  xa   – Đảm  nhiệm  việc  tạo  các  tham  chiếu  đối  tượng   – Chứa  bảng  các  đối  tượng  từ  xa   RMI   • Proxy   – Làm  cho  các  methods  trong  suốt  với  các  `ến  trình  cục  bộ   – Tham  chiếu  đối  tượng  từ  xa  trực  `ếp  gởi  đến  proxy  để   chuyển  chúng  đến  các  method  từ  xa   – proxy  sẽ  chuyển  đổi  dữ  liệu  theo  dạng  ngoài  (marshals)  và   chuyển  đổi  kết  quả  thành  dạng  dữ  liệu  trong  (un-­‐marshals)   – The  proxy  chứa  các  interfaces  của  các  methods  từ  xa  và  gởi   lời  gọi  đến  chúng  thông  qua  các  interface  này   RMI   • Dispatcher   – Nhận  thông  điệp  từ  module  truyền  thông,  chọn  và   chuyển  thông  điệp  đến  đúng  skeleton  cho  đối  tượng   từ  xa   • Skeleton   – Un-­‐marshals  yêu  cầu  và  gọi  các  method  từ  xa  liên   quan   – Marshals  câu  trả  lời     – Gởi  câu  trả  lời  đến  Proxy  yêu  cầu  (thông  qua   module  truyền  thông)   RMI   • Servant   –   cung  cấp  cài  đặt  cho  một  lớp  từ  xa.   – Chạy  trên  một  `ến  trình  server  process   – là  một  biên  nhận  cho  yêu  cầu  từ  xa  phát  ra   skeleton   RMI   – An  example  of  a  request   request   reply   Skeleton,   dispatcher   for  B   Remote   reference   module   Remote   reference   module   Proxy   For  B   B  A   Example:  Objects  A  makes  a  remote  method  invoca`on  of  object  B   RMI   • Triệu  gọi  tỉnh   – Các  Proxies  được  tạo  trước  khi  thực  hiện  sử  dụng   interfaces  từ  xa   • Triệu  gọi  động   – Thường  dùng  khi  tất  cả  các  methods  từ  xa  là  chưa   xác  định  lúc  thiết  kế   – Client  cung  cấp  một  tham  chiếu  đối  tượng  từ  xa   (remote  object  reference),  tên  method  và  các  đối  số   – Rồi  middleware  sẽ  xác  định  đối  tuong  từ  xa  nào   đươc  triệu  gọi   RMI   • Binder   – Một  service  ở  client  nhận  và  lưu  trữ  các  tham  chiếu  đối   tượng  từ  xa   • Java  RMIregistry,  CORBA  Naming  service   – Ánh  xạ  từ  tên  đến  tham  chiếu  của  đối  tượng  từ  xa   – Servers  cần  đăng  ký  các  dịch  vụ  đang  được  cung  cấp  cho   binder   • Sever   – Có  thể  chọn  thực  hiện  một  thread  cho  mỗi  RMI   RMI   Kích  hoạt  đối  tượng  từ  xa   – Đối  tượng  chủ  động  và  bị  động   • Một  đối  tượng  chủ  động  (Ac`ve  object)  là  một  xuất  hiện  của  đối   tượng  trong  một  `ến  trình  thực  hiện   • Một  đối  tượng  thụ  động  (Passive  object)  là  đối  tượng  hiện  thời   không  hoạt  động  nhưng  có  thể  kích  hoạt   – Người  kích  hoạt  (Ac`vator)  có  nhiệm  vụ   • Ghi  nhận  các  passive  objects  sắn  sàng  được  kích  hoạt   • Theo  vết  các  vị  trí  các  servers  có  các  đối  tượng  đã  được  kích  hoạt   • Khởi  tạo  `ến  trình  xử  tên  và  kích  hoạt  các  đối  tượng   RMI   • Lưu  trữ  đối  tượng  bền  vững(Persistent  object  stores)   – Một  đối  tượng  sống  giữa  các  lần  kích  hoạt  của  các  `ến  trình  được  gọi  là   persistent  Object     – Lưu  trữ  trạng  thái  của  một  đối  tượng  ở  dạng  marshalled  (serialised)   xuống  đĩa   • Recall  in  Java  the  implements  serialisable     • Dịch  vụ  định  vị  (Loca`on  service)   – Các  đối  tượng  có  thể  di  chuyển(Migrate)từ  hệ  thống  này  đến  thệ  thống   khác   – Cần  giải  pháp  để  quản  lý  ánh  xạ  giữa  tham  chiếu  của  đối  tượng  với  vị  trí   thật  của  đối  tượng   CORBA       • CORBA  là  gì?   “CORBA  is  a  middleware  that  allows  applica6on  programs  to  communicate  with   one  another  irrespec6ve  of  their  programming  languages,  their  hardware  and   so=ware  pla>orms,  the  networks  they  communicate  with  and  their   implementers”   [Coulouris  et  al,  2001]   – Được  OMG  hỗ  trợ  OMG  (Object  Modelling  Group)   CORBA  căn  bản   • Các  thành  phần  chính:   – ORBs   – IDL   – CORBA  Services   CORBA:  Kiến  trúc   • Key  concepts   – ORB  core   – Object  adaptor   – Skeletons   – Client  stub/proxies   – And  some  others:   • Repositories  (implementa`on  &  interface)   • Dynamic  invoca`on  interface   • Dynamic  interface   CORBA:  Kiến  trúc   • Object  Request  Broker  (ORB)   – ORB  cho  phép  clients  gọi  các  phương  thức  của  các  đối   tượng  từ  xa   – Các  đối  tượng  từ  xa  được  gọi  là  các  đối  tượng  CORBA   được  bao  trong  CORBA  IDL   – Clients  gởi  yêu  cầu  đến  ORB   – ORB  có  trách  nhiệm:     • Xác  định  vị  trí  của  đối  tượng,     • Kích  hoạt  đối  tượng   • Và  gởi  yêu  cầu  của  client  đến  đối  tượng   CORBA:  Kiến  trúc   CORBA:  Kiến  trúc   • ORB  cung  cấp:   – Trong  suốt  về  truy  xuất  (Access  transparency)   • Phương  thức  của  đối  tượng  được  gọi  theo  cùng  một  cách  cho  dù   chúng  là  cục  bộ  hay  từ  xa   – Trong  suốt  vị  trí  (Loca`on  transparency)   – Trong  suốt  cài  đặt  (Implementa`on  transparency)   – Trong  suốt  về  kiến  trúc  phân  tán   CORBA:  Kiến  trúc   • Skeletons   – Thông  điệp  được  gởi  thông  qua  skeletons  để  đến  đúng  server  cần  đến   (servants)   – Skeletons  `ến  hành  un-­‐marshalling  và  marshalling   • Client  stubs/proxies   – Stubs  dùng  cho  ngônng  ngữ  thủ  tục   – Proxies  dùng  cho  ngôn  ngữ    OO  languages   – Marshal  các  đối  số  client  trong  lời  triệu  gọi   CORBA:  Kiến  trúc   • The  Object  Adaptor   – Cầu  nối  giữa  CORBA  IDL  và  ngôn  ngữ  lập  trình   – Trách  nhiệm:   • Tạo  đối  tượng  từ  xa  tham  chiếu  đến  các  đối  tượng  CORBA   • Phân  gỉai  lời  triệu  gọi  thông  qua  skeleton   • Kích  hoạt  đối  tượng   CORBA:  Kiến  trúc   ORB   core   ORB   core   Object   Adaptor   Skeletons   Proxy   for  A   Servant  A  Client   program   request   reply   CORBA:  Architecture   "Distributed  Object  CompuSng  with  CORBA,"  htp://www.cs.wustl.edu/~schmidt/corba-­‐overview.html   CORBA:  IDL   • CORBA  IDL   – Is  used  to  define  the  remote  methods  for  use  by  clients   – Servers  define  IDL  for  the  methods  that  will  use  the  ORB   – Server  implements  the  IDL   – Clients  program  to  the  IDL  specifica`on   – Provides  facili`es  for  defining  modules,  interface  types,  aŒributes  and   method  signatures   Interface  Stock{        readonly  aŒribute  double  stockPrice;        readonly  aŒribute  string  stockCode;        void  getStockPrice(in  string  stockCode,  out  double  stockPrice);   }   Defines:      1  method      2  aŒributes   A  Server  must  then  implement  the  method   A  Client  may  call  the  server  method  using  the  IDL  signature   IDL:  more  complex   1  excep`on  NoCashExcep`on  {   2        string  reason;   3  };   4   5  interface  Account  {   6        readonly  aŒribute  double  balance;   7        readonly  aŒribute  string  owner;   8        void  add(in  double  amount);   9        void  remove(in  double  amount)  raises  (NoCashExcep`on);   10  };   13  module  bank  {   14        excep`on  OpenExcep`on  {   15              string  reason;   16        };   17   18  interface  Posi`on  {   19        void  open(in  string  name,in  double  init)  raises  (OpenExcep`on);   20        double  close(in  ::Account  account);   21        ::Account  get(in  string  name);   22        };   23  };   Microso¦  DDE  đến  DCOM   •  Lịch  sử   –  DDE  (Dynamic  Data  Exchange)   –  OLE  (Object  Linking  and  Embedding)   –  COM  (Compound  Object  Model)   –  Ac`veX   –  DCOM  (Distributed  Compu`ng  Environment  DCE  +  COM)   •  Chúng  ta  sẽ  §m  hiểu  tổng  quan  vềCOM  và  DCOM   DCOM   •  Distributed  COM  (DCOM)  extends  COM  for  distributed   systems  allowing  remote  calls   •  Based  on  Distributed  Communica`on  Exchange  (DCE)   •  Can  uses  proxies  and  stubs   •  Can  also  use  the  DCOM  network  protocol   DCOM   •  The  DCOM  intra-­‐network  model   Security   DCE  RPC   LPC   Client   Proxy   Stub   Server   DCOM  network   protocol   Security   DCE  RPC    LPC   SOAP       • SOAP  (Simple  Object  Access  Protocol)     • A  scheme  for  using  XML  as  RR  messages   • Services  are  offered  through  web  standards   • SOAP  is  built  on  XML  and  uses  HTTP   • Underneath  that  is  TCP/IP  and  network  protocols   Client   Server   SOAP   XML   HTTP   SOAP       • Interoperability  through  wrapping   • Wrap  other  technologies  in  SOAP  messages   CORBA   JAVA   .NET   DCOM   LEGACY   SOAP   SOAP       • Tại  sao  SOAP?   – Không  cho  phép  kết  nối  trực  `ếp  giữa  các  hệ  thống  con  để   tăng  độ  an  toàn   – Các  hệ  thống  con  sử  dụng  các  middleware  khác  nhau   – Các  hệ  thống  chia  sẽ  tài  nguyên  sử  dụng  Web  service  sử   dụng  SOAP  như  giải  pháp  công  nghệ  để  «nh  hợp   SOAP       SOAP  header   SOAP  body   Security  context   Signatures   Name  of  procedure   Input  param  1   Input  param  2   SOAP  message   env:envelope  xmlns:env  =  namespace  URI  for
Tài liệu liên quan