Khái niệm Socket

Một phần của tài liệu Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet (Trang 53 - 57)

Trên thực tế, mô hình Client/Server có một phạm vi ứng dụng rất rộng nhng đều gắn liền với hạ tầng mạng truyền thông. Hay nói một cách khác, mô hình Client/Server chỉ chứng tỏ đợc vai trò to lớn của nó trong môi trờng mạng.

Tính toán phân tán trên mạng giờ đây không còn là vấn đề xa lạ.Với những bài toán lớn, việc thực hiện trên một máy tính hẳn không thể bằng thực hiện trên nhiều máy tính khác nhau. Và cũng có những bài toán hay ứng dụng có thể chia nhỏ thành các phần khác nhau ví dụ nh phần tính toán hay phần xử lý dữ liệu và phần ra kết quả hay phần trình diễn. Ngời ta cũng nghĩ rằng có thể thực hiện những chức năng này trên những máy khác nhau. Một máy tính có tốc độ nhanh, tài nguyên mạnh sẽ đảm nhiệm chức năng tính toán, xử lý dữ liệu đó chính là phần Server, và một máy tính cần có hỗ trợ giao diện đồ hoạ đẹp, tơng tác với ngời sử dụng một cách thuận tiện sẽ đảm nhận chức năng trình diễn ứng dụng đó chính là máy Client. Giữa Server và Client sẽ hình thành nên một sợi dây liên hệ với nhau. Server và Client cũng không nhất thiết phải nằm trên những máy khác nhau nếu nh một máy tính có tất cả các chức năng này.

Thực ra đó cũng không phải là điểm mấu chốt của vấn đề, khi mà một máy Server có thể đảm nhiệm các chức năng cho nhiều Client. Khi cần, một Client sẽ gửi yêu cầu tới Server và đợi kết quả, Server sẽ nhận, phân tích và xử lý yêu cầu đó rồi gửi trả kết quả lại cho Client. Một ví dụ tiêu biểu cho bài toán này là ứng dụng CSDL. Khi có một lợng lớn dữ liệu cần cung cấp cho nhiều máy khác nhau, vậy thì phải làm thế nào ? giải pháp sao chép chúng cho mỗi máy khác nhau thực không hợp lý chút nào. Tuy rằng nó có thể đáp ứng việc sử dụng dữ liệu cho mỗi máy. Nhng một khi dữ liệu đã thay đổi thì lại phải làm lại từ đầu ? đó là cha kể đến việc tốn kém trong lu trữ và nhiều vấn đề khác. Vậy thì giải pháp sẽ là một máy sẽ quản lý CSDL đó chính Server, các máy khác đóng vai trò nh một Client, khi có nhu cầu sử dụng dữ liệu thì chỉ việc gửi yêu cầu tới Server, Server đảm nhận việc xử lý dữ liệu và gửi trả lại kết quả cho Client.

Mô hình Client/Server có một vai trò rất quan trọng và có một phạm vi ứng dụng rất lớn. Sau đây sẽ là một định nghĩa của mô hình Client/Server :

Client/Server là một công nghệ trong đó một công việc hay một ứng dụng đợc phân chia thành 2 phần : Client/Server. Mỗi phần này đợc coi nh là một modul chơng trình độc lập và từ một modul này mới phân nhỏ thành nhiều modul khác. Kiến trúc này thể hiện một dạng đặc biệt của mô hình xử lý hợp tác phân tán (Distributed Cooperative Processing), trong đó mối quan hệ giữa Client và Server là mối quan hệ giữa cả các thành phần phần cứng và phần mềm.

Xét trên quan hệ phần cứng thì Client/Server có thể là 2 máy tính khác nhau đợc nối với nhau qua một mạng máy tính.

Đỗ Đức Thảo -Tin Pháp K41 Trang 53

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet Còn trên quan hệ phần mềm , thì Client đảm nhiệm

chức năng giao tiếp với ngời sử dụng, là giao diện của ứng dụng, nơi khởi phát và gửi các yêu cầu về dịch vụ đến Server. Server đóng vai trò

Client Server

nh cái lõi của ứng dụng, là nơi nhận, phân tích, xử lý các yêu cầu, sau đó gửi các dữ liệu trả lời về Client. Server không bao giờ khởi tạo hội thoại cùng với Client. Sự phân biệt giữa Client và Server chỉ có tính chất tơng đối, nghĩa là một Server cũng có thể trở thành một Client khi nó cần yêu cầu tới một Server khác và ngợc lại.

II. Các mô hình Client/Server

Có 3 mô hình Client/Server chính là mô hình Host-based, mô hình Master-Slave và mô hình Client/Server.

II.1 Mô hình Host-based

Đây là mô hình tính toán đầu tiên, trong đó máy chủ (Host) đợc nối với đầu cuối (Terminal) không thông minh. Ngời sử dụng sẽ giao tiếp với máy chủ thông qua màn hình Terminal theo cơ chế dòng lệnh. Đầu cuối nhận đầu vào từ ngời sử dụng và gửi đến máy chủ, sau đó biểu diễn dữ liệu nhận từ máy chủ. Mô hình này bao gồm cả môi trờng Mainframe và các hệ thống Mini truyền thống.

II.2 Mô hình Master-Slave

So với mô hình Host-based thì các Slave thông minh hơn nhng vẫn phụ thuộc

vào hệ thống trung tâm gọi là Master. Các Slave có thể xử lý các ứng dụng địa ph- ơng trong một giới hạn nào đó nh soạn thảo, xử lý các phím chức năng,… Đây cũng là một phơng tiện làm việc khá hiệu quả.

II.3 Mô hình Client/Server

Mô hình này là mức phát triển cao hơn so với các mô hình ở trên. Các chơng trình ứng dụng bây giờ nằm trên cả Client lẫn Server. ứng dụng mang tính chất phân tán.

III. Vai trò của mô hình Client/Server

Công nghệ Client/Server có vai trò rất quan trọng, nhng không phải vì thế mà tất cả các ứng dụng đều có thể triển khai theo công nghệ này. Sau đây sẽ là một số phơng hớng có thể áp dụng :

√ Khi cần thực hiện một ứng dụng hỗ trợ nhiều ngời sử dụng

√ Khi cần thực hiện ứng dụng truy nhập từ xa

√ Khi cần viết các ứng dụng mạnh, khả chuyển và dễ dàng trong mở rộng, bảo trì.

√ Để giảm tắc nghẽn trên mạng : ví dụ với ứng dụng CSDL, một chơng trình máy khách (Client) cần tính toán trên một số lợng dữ liệu lớn, nó chỉ cần gửi yêu cầu này tới Server, Server sẽ nhận yêu cầu này, sau đó truy nhập CSDL, tính toán và gửi trả kết quả cho Client. Kết quả thờng ngắn hơn rất nhiều so với lợng dữ liêu cần để tính toán. Vì vậy, chơng trình máy khách vẫn tính đợc kết quả mà không

Đỗ Đức Thảo -Tin Pháp K41 Trang 54

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

cần phải lấy toàn bộ dữ liệu về. Điều đó sẽ giảm đợc tình trạng tắc nghẽn trên mạng.

IV. Các kiến trúc Client/Server

Kiến trúc Client/Server thực sự không đơn giản và có nhiều kiểu kiến trúc khác nhau. Sự lựa chọn giữa các kiểu kiến trúc này cũng là cả một vấn đề lớn. (adsbygoogle = window.adsbygoogle || []).push({});

Một ứng dụng có thể gồm 3 thành phần : trình diễn, xử lýdữ liệu. Kiến trúc Client/Server có thể phân chia các thành phần này thành các thực thể phần mềm và phân tán chúng trên mạng. Có nhiều cách phân chia các tài nguyên này và cũng tạo nên nhiều cách thực hiện kiến trúc Client/Server.

IV.1 Kiến trúc 2 tầng (Two - Tier Architecture)

Sơ đồ kiến trúc 2 tầng

Kiến trúc này gồm 2 thực thể phần mềm (hay tier) chính là ứng dụng máy khách

(Client Application) và máy chủ CSDL (Database Server). Chức năng trình diễn đợc thực hiện ở chơng trình máy khách, chức năng xử lý đợc tách ra giữa Client và Server, còn dữ liệu đợc lu trữ và truy nhập thông qua Server.

Yêu cầu từ Client gửi tới Server thờng là lời gọi SQL. Và để truy nhập đợc tới Server, Client phải biết đợc vị trí Server, và cú pháp lệnh truy nhập tới Server hay ngôn ngữ API (Application Program Interface).

u điểm :

- Có nhiều thuận lợi về tốc độ phát triển ứng dụng

- Đa số các công cụ cho kiến trúc 2 tầng là rất mạnh

- Làm việc tốt trong môi trờng đồng nhất, ít có biết động.

Nhợc điểm :

- Khó khăn trong phân tán và kiểm soát các phiên bản của ứng dụng.

- Việc đảm bảo an toàn hệ thống là khá phức tạp. Bởi mỗi ngời sử dụng đều cần password để truy nhập tới Database Server.

- Các công cụ máy khách và phần mềm trung gian có tính độc quyền cao và có thể biến đổi liên tục ảnh hởng đến tính lâu dài của ứng dụng.

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

IV.2 Kiến trúc 3 tầng (Three - Tier Architecture)

Sơ đồ kiến trúc 3 tầng

Kiến trúc 3 tầng có phần mềm dẻo hơn kiến trúc 2 tầng. Trong đó 3 chức năng chính đợc tách riêng thành các thực thể khác nhau. Tầng trình diễn có thể sử dụng cùng một công cụ của kiến trúc 2 tầng. Nhng chức năng xử lý, tính toán, đợc dồn chủ yếu vào tầng trung gian là Functionality Server (hay Application Server). Tầng này lại có thể tạo và gửi yêu cầu tới các Server khác (thờng là Database Server). Functionality Server cũng phải là đa tuyến, hay có thể đợc truy nhập bởi nhiều Client, và có tính linh động cao. Trong khi đó, ứng dụng phía client có thể áp dụng nhiều công nghệ khác nhau để truy nhập tới Server ở tầng trung gian nh RMI, Corba, HTTP,… thông thờng là phơng pháp gọi thủ tục từ xaRPC (Remote Procedure Call).

Ưu điểm :

- Phơng pháp RPC từ client tới server ở tầng trung gian là mềm dẻo hơn so với các lời gọi SQL trong kiến trúc 2 tầng. Và vì vậy cũng không đòi hỏi tầng thứ 3 (Client) phải hiểu đợc SQL. Điều này cũng cho phép sử dụng các công nghệ mới truy nhập dữ liệu một cách dễ dàng hơn mà không cần phải thay đổi lại các ứng dụng đầu cuối.

- Các thực thể phần mềm tách riêng cho phép phát triển song song các tầng bởi các chuyên gia ứng dụng.

- Cung cấp một sự định vị tài nguyên linh động. Các Functionality Server ở tầng trung gian có thể chuyển dịch đợc khi cần thay đổi lại tổ chức. Đồng thời cũng giảm lu thông dữ liệu thừa trên mạng, bởi các Functionality Server đã xử lý dữ liệu và chuyển thành cấu trúc xác định trớc khi phân tán nó cho các client.

- Khả năng tái sử dụng lại các modul của tầng trung gian bởi một vài ứng dụng khác. Tiết kiệm đợc thời gian phát triển các ứng dụng con, tối thiểu hoá việc bảo trì và giảm chi phí khi chuyển đổi các ứng dụng máy khách.

Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trờng mạng Internet

- Thuận lợi trong việc bổ sung thềm nhiều tính năng và hỗ trợ phát triển các ứng dụng phân tán.

Nhợc điểm :

- Tăng nhu cầu quản lý lu thông trên mạng, cân bằng tải server và các kiểm soát lỗi.

- Xây dựng các server ở tầng trung gian là khá phức tạp. Thực hiện các phơng tiện bảo trì là khó khăn.

IV.3 Kiến trúc đa tầng (Multi - Tier Architecture)

Kiến trúc đa tầng là một bớc phát triển cao hơn so với 2 kiến trúc ở trên. Trong đó một Functionality Server có thể kết nối tới nhiều Database Server hoặc nhiều Functionality Server khác. Kiến trúc này thực sự phức tạp và phục vụ trong môi tr- ờng phân tán đòi hỏi xử lý nhiều giao dịch với các nhiều kiểu thao tác khác nhau. (adsbygoogle = window.adsbygoogle || []).push({});

IV.4 Kết luận

Mặc dù kiến trúc Client/Server là rất phức tạp và nói chung đợc chia làm 2 kiến trúc hạ tầng khác nhau (2 tầng hoặc 3 tầng). Kiến trúc 2 tầng có thời gian phát triển nhanh hơn so với kiến trúc 3 tầng nhng bù lại chi phí bỏ ra cho sự bảo trì, nâng cấp lại lớn hơn rất nhiều so với kiến trúc 3 tầng. Sự lựa chọn giữa 2 kiến trúc này nên dựa trên phạm vi, tính phức tạp của dự án, thời gian hoàn thành, sự tăng trởng hay chu kỳ của hệ thống.

CHƯƠNG V LậP TRìNH SOCKET Và

MULTITHREADING

I. Khái niệm Socket

Socket là một giao diện lập trình gồm một tập các hàm và thủ tục cho phép truyền thông giữa các tiến trình trên cùng một máy tính hoặc trên các máy khác nhau của mạng.

Socket là một giao diện lập trình đợc phát triển bởi trờng đại học Berkeley, hỗ trợ cho nhiều giao thức khác nhau.

Socket đại diện cho một kênh truyền thông giữa 2 tiến trình đang chạy trên mạng. Mỗi Socket đợc cấu trúc bởi một địa chỉ cổng (Port) TCP và địa chỉ (Address) IP để tầng TCP có thể xác định đợc ứng dụng mà dữ liệu định gửi đến. Do đó mỗi tiến trình trên mạng đợc xác định một cách duy nhất thông qua Socket tơng ứng với nó. Một Socket có thể tham gia vào nhiều liên kết với các Socket ở xa khác nhau.

Một phần của tài liệu Xây dựng hệ thống phần mềm thao tác, hiển thị thông tin địa lý trên môi trường mạng Internet (Trang 53 - 57)