Lời nói đầu Hiện nay, công nghệ thông tin đang phát triển và bùng nổ mạnh ở các nước phát triển và đang phát triển. Được áp dụng vào rất nhiều hệ thống, công ty để tăng năng suất lao động, tăng mức độ hiệu quả công việc cũng như chất lượng ngày càng cao hơn. Nhu cầu xây dựng các mô hình quản ngày càng tăng. Đặc biết trong vấn đề quản lý tài nguyên và xây dựng hệ thống phân tán tài nguyên. Để đáp ứng nhu cầu đó, mô hình clientserver đã ra đời và được sử dụng phổ biến và chấp nhận rộng rãi trong các hệ thống phân tán. Chính vì thế mà nhóm em đã chọn đề tài “Hoạt động của clientserver” để hiểu hơn về quá trình hoạt động của clientserver. Do thời gian có hạn nên đề tài không thể tránh được những thiếu sót, mong thầy góp ý để chúng em được hoàn thiện hơn. Phần I: Giới thiệu mô hình ClientServer 1. Mô hình ClientServer Mô hình được phổ biến nhất và được chấp nhận rộng rãi trong các hệ thống phân tán là mô hình clientserver. Trong mô hình này sẽ có một tập các tiến trình mà mỗi tiến trình đóng vai trò như là một trình quản lý tài nguyên cho một tập hợp các tài nguyên cho trước và một tập hợp các tiến trình client trong đó mỗi tiến trình thực hiện một tác vụ nào đó cần truy xuất tới tài nguyên phần cứng hoặc phần mềm dùng chung. Bản thân các trình quản lý tài nguyên cần phải truy xuất tới các tài nguyên dùng chung được quản lý bởi một tiến trình khác, vì vậy một số tiến trình vừa là tiến trình client vừa là tiến trình server. Các tiến trình phát ra các yêu cầu tới các server bất kỳ khi nào chúng cần truy xuất tới một trong các tài nguyên của các server. Nếu yêu cầu là đúng đắn thì server sẽ thực hiện hành động được yêu cầu và gửi một đáp ứng trả lời tới tiến trình client. Mô hình clientserver cung cấp một cách tiếp cận tổng quát để chia sẻ tài nguyên trong các hệ thống phân tán. Mô hình này có thể được cài đặt bằng rất nhiều môi trường phần cứng và phần mềm khác nhau. Các máy tính được sử dụng để chạy các tiến trình clientserver có nhiều kiểu khác nhau và không cần thiết phải phân biệt giữa chúng; cả tiến trình client và tiến trình server đều có thể chạy trên cùng một máy tính. Một tiến trình server có thể sử dụng dịch vụ của một server khác. 1.1. Client Trong mô hình clientserver: Nười ta còn định nghĩa cụ thể cho một máy client là một máy trạm mà chỉ được sử dụng bởi 1 người dùng với để muốn thể hiện tính độc lập cho nó. Máy client có thể sử dụng các hệ điều hành bình thường như Win, DOS, OS2... Bản thân mỗi một client cũng đã được tích hợp nhiều chức năng trên hệ điều hành mà nó chạy, nhưng khi được nối vào một mạng LAN, WAN theo mô hình clientserver thì nó còn có thể sử dụng thêm các chức năng do hệ điều hành mạng (NOS) cung cấp với nhiều dịch vụ khác nhau (cụ thể là các dịch vụ do các server trên mạng này cung cấp), ví dụ như nó có thể yêu cầu lấy dữ liệu từ một server hay gửi dữ liệu lên server đó... Thực tế trong các ứng dụng của mô hình clientserver, các chức năng hoạt động chính là sự kết hợp giữa client và server với sự chia sẻ tài nguyên, dữ liệu trên cả 2 máy vai trò của client trong mô hình clientserver, client được coi như là người sử dụng các dịch vụ trên mạng do một hoặc nhiều máy chủ cung cấp và server được coi như là người cung cấp dịch vụ để trả lời các yêu cầu của các clients. Điều quan trọng là phải hiểu được vai trò hoạt động của nó trong một mô hình cụ thể, một máy client trong mô hình này lại có thể là server trong một mô hình khác. Ví dụ cụ thể như một máy trạm làm việc như một client bình thường trong mạng LAN nhưng đồng thời nó có thể đóng vai trò như một máy in chủ (printer server) cung cấp dịch vụ in ấn từ xa cho nhiều người khác (clients) sử dụng. Client được hiểu như là bề nổi của các dịch vụ trên mạng, nếu có thông tin vào hoặc ra thì chúng sẽ được hiển thị trên máy client. 1.2. Server trong mô hình ClientServer: Được định nghĩa như là một máy tính nhiều người sử dụng (multiuser computer). Vì một server phải quản lý nhiều yêu cầu từ các client trên mạng cho nên nó hoạt động sẽ tốt hơn nếu hệ điều hành của nó là đa nhiệm với các tính năng hoạt động độc lập song song với nhau như hệ điều hành UNIX, WINDOWS... Server cung cấp và điều khiển các tiến trình truy cập vào tài nguyên của hệ thống. Các ứng dụng chạy trên server phải được tách rời nhau để một lỗi của ứng dụng này không làm hỏng ứng dụng khác. Tính đa nhiệm đảm bảo một tiến trình không sử dụng toàn bộ tài nguyên hệ thống. Vai trò của server. Như chúng ta đã bàn ở trên, server như là một nhà cung cấp dịch vụ cho các clients yêu cầu tới khi cần, các dịch vụ như cơ sở dữ liệu, in ấn, truyền file, hệ thống... Các ứng dụng server cung cấp các dịch vụ mang tính chức năng để hỗ trợ cho các hoạt động trên các máy clients có hiệu quả hơn. Sự hỗ trợ của các dịch vụ này có thể là toàn bộ hoặc chỉ một phần thông qua IPC. Để đảm bảo tính an toàn trên mạng cho nên server này còn có vai trò như là một nhà quản lý toàn bộ quyền truy cập dữ liệu của các máy clients, nói cách khác đó là vai trò quản trị mạng. Có rất nhiều cách thức hiện nay nhằm quản trị có hiệu quả, một trong những cách đang được sử dụng đó là dùng tên Login và mật khẩu 2. Các kiến trúc ClientServer 2.1. ClientServer hai tầng (twotier clientserver) Kiến trúc clientserver đơn giản nhất là kiến trúc hai tầng. Trong thực tế hầu hết các kiến trúc clientserver là kiến trúc hai tầng. Một ứng dụng hai tầng cung cấp nhiều trạm làm việc với một tầng trình diễn thống nhất, tầng này truyền tin với tầng lưu trữ dữ liệu tập trung. Tầng trình diễn thông thường là client, và tầng lưu trữ dữ liệu là server. Hầu hết các ứng dụng Internet như là email, telnet, ftp thậm chí là cả Web là các ứng dụng hai tầng. Phần lớn các lập trình viên trình ứng dụng viết các ứng dụng clientserver có xu thế sử dụng kiến trúc này. Trong ứng dụng hai tầng truyền thống, khối lượng công việc xử lý được dành cho phía client trong khi server chỉ đơn giản đóng vai trò như là chương trình kiểm soát luồng vào ra giữa ứng dụng và dữ liệu. Kết quả là không chỉ hiệu năng của ứng dụng bị giảm đi do tài nguyên hạn chế của PC, mà khối lượng dữ liệu truyền đi trên mạng cũng tăng theo. Khi toàn bộ ứng dụng được xử lý trên một PC, ứng dụng bắt buộc phải yêu cầu nhiều dữ liệu trước khi đưa ra bất kỳ kết quả xử lý nào cho người dùng. Nhiều yêu cầu dữ liệu cũng làm giảm hiệu năng của mạng. Một vấn đề thường gặp khác đối với ứng dụng hai tầng là vấn đề bảo trì. Chỉ cần một thay đổi nhỏ đối với ứng dụng cũng cần phải thay đổi lại toàn bộ ứng dụng client và server. Hình 1: ClientServer hai tầng 2.2. ClientServer ba tầng Ta có thể tránh được các vấn đề của kiến trúc clientserver hai tầng bằng cách mở rộng kiến trúc thành ba tầng. Một kiến trúc ba tầng có thêm một tầng mới tác biệt việc xử lý dữ liệu ở vị trí trung tâm. Hình 2: ClientServer ba tầng Theo kiến trúc ba tầng, một ứng dụng được chia thành ba tầng tách biệt nhau về mặt logic. Tầng đầu tiên là tầng trình diễn thường bao gồm các giao diện đồ họa. Tầng thứ hai, còn được gọi là tầng trung gian hay tầng tác nghiệp. Tầng thứ ba chứa dữ liệu cần cho ứng dụng. Tầng thứ ba về cơ bản là chương trình thực hiện các lời gọi hàm để tìm kiếm dữ liệu cần thiết. Tầng trình diễn nhận dữ liệu và định dạng nó để hiển thị. Sự tách biệt giữa chức năng xử lý với giao diện đã tạo nên sự linh hoạt cho việc thiết kế ứng dụng. Nhiều giao diện người dùng được xây dựng và triển khai mà không làm thay đổi logic ứng dụng. Tầng thứ ba chứa dữ liệu cần thiết cho ứng dụng. Dữ liệu này có thể bao gồm bất kỳ nguồn thông tin nào, bao gồm cơ sở dữ liệu như Oracale, SQL Server hoặc tài liệu XML. 2.3. Kiến trúc ntầng Kiến trúc ntầng được chia thành các tầng như sau: • Tầng giao diện người dùng: quản lý tương tác của người dùng với ứng dụng • Tầng logic trình diễn: Xác định cách thức hiển thị giao diện người dùng và các yêu cầu của người dùng được quản lý như thế nào. • Tầng logic tác nghiệp: Mô hình hóa các quy tắc tác nghiệp, • Tầng các dịch vụ hạ tầng: Cung cấp một chức năng bổ trợ cần thiết cho ứng dụng như các thành phần (truyền thông điệp, hỗ trợ giao tác). 3. Ưu nhược điểm của kiến trúc clientServer 3.1. Ưu điểm: • Giảm chi phí: Kiến trúc clientserver cho phép các công ty có thể sử dụng server là những máy tính cá nhân thay vì các máy tính lớn. Vì các phần mềm ngày nay được xây dựng chủ yếu chạy trên các máy tính cá nhân do đó chi phí các phần mềm tương đối rẻ. • Tốc độ nhanh: Giảm việc tắc nghẽn thông tin trong hệ thống mạng do phân chia các xử lý ra thành 2 nhánh. Các xử lý nào phức tạp tác động nhiều lên cơ sở dữ liệu sẽ được lưu trữ ngay trên server, các xử lý đơn giản sẽ được thực hiện ngay trong ứng dụng trên client. Chính vì thế hệ thống vận hành sẽ hiệu quả hơn. • Tính tương thích cao: Việc chọn lựa các phần mềm để phát triển ứng dụng có thể hoàn toàn độc lập từ ngôn ngữ lập trình đến hệ cơ sở dữ liệu quan hệ và các thiết bị phần cứng. Ta có thể chọn các thành phần tối ưu nhất khi xây dựng một hệ thống ứng dụng. 3.2. Nhược điểm: • Một trong những vấn đề nảy sinh trong mô hình này đó là tính an toàn và bảo mật thông tin trên mạng. Do phải trao đổi dữ liệu giữa 2 máy ở 2 khu vực khác nhau cho nên dễ dàng xảy ra hiện tượng thông tin truyền trên mạng bị lộ. • Dễ dàng lợi dụng các lỗ hổng bảo mật của server