LỜI CẢM ƠN 1
MỤC LỤC 2
MỞ ĐẦU 7
PHẦN I - GIỚI THIỆU NỘI DUNG ĐỀ TÀI 8
I. GIỚI THIỆU ĐỀ TÀI 9
II. PHẠM VI VÀ MỤC ĐÍCH CỦA ĐỀ TÀI 10
III. TỔNG QUAN VỀ HỆ THỐNG INTERNET - GIS 11
PHẦN II - CƠ SỞ Lí THUYẾT 13
CHƯƠNG I – HỆ THỐNG THễNG TIN ĐỊA Lí (GIS) 13
I. KHÁI NIỆM VỀ GIS (GEOGRAPHIC INFORMATION SYSTEMS) 14
II. CÁC THÀNH PHẦN CƠ BẢN CỦA GIS 14
II.1 Cỏc thiết bị phần cứng 14
II.2 Phần mềm ứng dụng 14
II.3 Dữ liệu GIS 14
II.4 Đội ngũ nhõn sự 15
III. CÁC KIỂU DỮ LIỆU VÀ CÁC Mễ HèNH DỮ LIỆU GIS 15
III.1 Cỏc kiểu dữ liệu cơ bản của GIS 15
III.1.1 Dữ liệu khụng gian 15
III.1.2 Dữ liệu thuộc tớnh 15
III.1.3 Dữ liệu ảnh 16
III.2 Mụ hỡnh dữ liệu GIS 16
III.2.1 Mụ hỡnh dữ liệu raster 16
III.2.2 Mụ hỡnh dữ liệu Vector 16
IV. CÁC HỆ TOẠ ĐỘ VÀ HỆ QUY CHIẾU TRONG GIS 18
IV.1 Hệ toạ độ 18
IV.1.1 Hệ toạ độ phẳng – Cartesian : 18
IV.1.2 Hệ toạ độ cầu (trỏi đất) 19
IV.2 Cỏc hệ quy chiếu 19
V. GIỚI THIỆU VỀ BẢN ĐỒ 20
VI. CÁC PHẫP PHÂN TÍCH DỮ LIỆU TRONG GIS 21
VI.1 Truy vấn dữ liệu thuộc tớnh 21
VI.2 Truy vấn khụng gian 22
VI.3 Truy vấn kết hợp 23
VI.4 Một số kiểu phõn tớch khỏc của GIS 23
VI.4.1 Phộp phõn tớch mạng 23
VI.4.2 Phõn tớch và lập kiểu điạ hỡnh kỹ thuật số DTM (Digital Terrain Modeling and Analysis) 24
CHƯƠNG II – HỆ QUẢN TRỊ CSDL ORACLE 25
I. GIỚI THIỆU VỀ ORACLE 26
II. KIẾN TRÚC VÀ QUẢN Lí DỮ LIỆU CỦA HỆ QUẢN TRỊ CSDL ORACLE 26
II.1 Cấu trỳc CSDL Oracle 26
II.1.1 Cấu trỳc CSDL vật lý 26
II.1.2 Cấu trỳc CSDL logic 27
II.2 Oracle Instance 31
II.2.1 Cấu trỳc bộ nhớ Oracle 32
II.2.2 Kiến trỳc tiến trỡnh Oracle 33
III. TÍCH HỢP DỮ LIỆU GIS VỚI HỆ QUẢN TRỊ CSDL ORACLE (ORACLE SPATIAL) 35
III.1 Cỏc phần tử dữ liệu 35
III.2 Mụ hỡnh truy vấn 35
III.3 Cỏc phương phỏp đỏnh chỉ số khụng gian 36
III.4 Cỏc quan hệ khụng gian 37
III.5 Cỏc mụ hỡnh dữ liệu 38
III.5.1 Mụ hỡnh quan hệ - đối tượng (Object – Relational Model) 38
III.5.2 Mụ hỡnh quan hệ (Relational Model) 40
CHƯƠNG III – TRUYỀN THễNG MẠNG MÁY TÍNH 43
I. KHÁI QUÁT CHUNG VỀ MẠNG MÁY TÍNH 43
I.1 Định nghĩa 43
I.2 Cỏc yếu tố của mạng mỏy tớnh 43
I.3 Phõn loại mạng mỏy tớnh 43
II. KIẾN TRÚC PHÂN TẦNG VÀ Mễ HèNH OSI 44
II.1 Kiến trỳc phõn tầng 44
II.3 Phương thức hoạt động (Cú liờn kết và khụng liờn kết) 46
III. INTERNET 47
III.1 Giới thiệu về Internet 47
III.2 Giao thức TCP/IP 47
III.2.1 Giao thức IP (Internet Protocol) 47
III.2.2 Giao thức TCP (Transmission Control Protocol) 48
III.3 Cỏc dịch vụ thụng tin trờn Internet 49
CHƯƠNG IV – KIẾN TRÚC CLIENT/SERVER 50
I. KHÁI NIỆM 50
II. CÁC Mễ HèNH CLIENT/SERVER 51
II.1 Mụ hỡnh Host-based 51
II.2 Mụ hỡnh Master-Slave 51
II.3 Mụ hỡnh Client/Server 52
III. VAI TRề CỦA Mễ HèNH CLIENT/SERVER 52
IV. CÁC KIẾN TRÚC CLIENT/SERVER 52
IV.1 Kiến trỳc 2 tầng (Two - Tier Architecture) 52
IV.2 Kiến trỳc 3 tầng (Three - Tier Architecture) 53
IV.3 Kiến trỳc đa tầng (Multi - Tier Architecture) 54
IV.4 Kết luận 54
CHƯƠNG V – LẬP TRèNH SOCKET VÀ MULTITHREADING 55
I. KHÁI NIỆM SOCKET 55
II. CÁC LOẠI SOCKET 55
III. SỬ DỤNG SOCKET 55
IV. Mễ HèNH LẬP TRèNH SỬ DỤNG SOCKET 56
IV.1 Mụ hỡnh sử dụng Datagram Socket 56
IV.2 Mụ hỡnh sử dụng Stream Socket 56
V. MULTITHREADING 57
CHƯƠNG VI – NGễN NGỮ LẬP TRèNH VÀ CÁC CễNG NGHỆ TRấN WEB 59
I. NGễN NGỮ LẬP TRèNH VISUAL C++ 59
II. NGễN NGỮ LẬP TRèNH JAVA 60
II.1 Giới thiệu về ngụn ngữ lập trỡnh Java 60
II.2 Cỏc đặc tớnh của ngụn ngữ Java 61
II.3 Java Applet 62
II.3.1 Chu trỡnh hoạt động của một applet 62
II.3.2 Giới hạn của một Applet 63
II.3.3 Khả năng của một applet 63
III. GIỚI THIỆU MỘT SỐ CễNG NGHỆ TRấN WEB 64
III.1 Active X 64
III.2 Plug-In 64
III.3 Java Applet 64
PHẦN III - PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 65
CHƯƠNG VII - PHÂN TÍCH HỆ THỐNG 66
I. LỰA CHỌN KIẾN TRÚC THỰC HIỆN 66
II. LỰA CHỌN CễNG CỤ THỰC HIỆN 67
II.1 Lựa chọn phần mềm lưu trữ dữ liệu GIS 67
II.2 Lựa chọn cụng cụ cho tầng trung gian (Application Server) 68
II.3 Lựa chọn cụng cụ thực hiện tầng thứ 3 (Client Application) 70
III. XÁC ĐỊNH PHƯƠNG PHÁP TRUYỀN THễNG GIỮA CLIENT VÀ SERVER 70
IV. GIẢI PHÁP TỔNG THỂ 72
V. XÁC ĐỊNH KIỂU DỮ LIỆU SẼ TRUYỀN TỪ IGIS-CLIENT TỚI IGIS-SERVER 73
VI. SƠ ĐỒ PHÂN CẤP CHỨC NĂNG 73
VII. BIỂU ĐỒ LUỒNG DỮ LIỆU 75
VII.1 Biểu đồ luồng dữ liệu mức đỉnh 75
VII.2 Biểu đồ luồng dữ liệu mức dưới đỉnh 76
CHƯƠNG VIII – THIẾT KẾ TỔNG THỂ 78
I. HỆ THỐNG CUNG CẤP THễNG TIN ĐỊA Lí INTERNET-GIS 78
I.1 Cỏc khỏi niệm chung : 78
I.2 Quỏ trỡnh hoạt động của hệ thống Internet-GIS 78
I.2.1 Giai đoạn khởi tạo ứng dụng IGIS-Client 78
I.2.2 Giai đoạn kiểm tra quyền sử dụng (Login) 78
I.2.3 Giai đoạn sử dụng một chức năng GIS 79
I.2.4 Giai đoạn kết thỳc sử dụng 80
II. Mễ HèNH HOÁ HỆ THỐNG 80
CHƯƠNG IX - THIẾT KẾ CHI TIẾT 81
I. Mễ HèNH TRAO ĐỔI DỮ LIỆU GIỮA IGIS-CLIENT VÀ IGIS-SERVER 81
II. GIAO THỨC TRAO ĐỔI DỮ LIỆU GIỮA IGIS-CLIENT VÀ IGIS-SERVER 82
II.1 Giao thức tầng ứng dụng (IGIS-AP) 82
II.1.1 Cỏc trạng thỏi trong giao thức IGIS-AP 82
II.1.2 Cấu trỳc chung của một Request 83
II.1.3 Cấu trỳc chung của một Response 84
II.1.4 Nội dung cỏc chức năng cần thực hiện của hệ thống Internet-GIS 84
II.1.5 Cấu trỳc chi tiết của cỏc Request và Response 85
II.2 Giao thức tầng truyền thụng (IGIS-CP) 89
II.2.1 Giao thức IGIS-CP 90
II.2.2 Cấu trỳc tổng quỏt của một IGIS-Packet 90
II.2.3 Cỏc kiểu IGIS-Packet 90
II.2.4 Cỏch lưu trữ giỏ trị độ dài dữ liệu trong trường DataLength 91
III. Mễ HèNH THIẾT KẾ CSDL ĐỊA Lí 91
III.1 Mụ hỡnh dữ liệu 91
III.2 Xõy dựng CSDL cung cấp dịch vụ thụng tin địa lý 91
IV. PHƯƠNG PHÁP TRAO ĐỔI DỮ LIỆU GIỮA IGIS-SERVER VÀ ORACLE 92
V. THIẾT KẾ CHƯƠNG TRèNH ỨNG DỤNG IGIS-CLIENT 92
V.1 Giao diện chương trỡnh 92
V.2 Sơ đồ cỏc class chớnh trong chương trỡnh 94
V.3 Chức năng của cỏc class 95
VI. THIẾT KẾ CHƯƠNG TRèNH ỨNG DỤNG IGIS-SERVER 96
VI.1 Sơ đồ mụ tả hoạt động của IGIS-Server (trang sau) 96
VI.2 Sơ đồ mồ tả hoạt động của IGIS-Client thread () 98
VI.3 Xõy dựng tập cỏc modul chương trỡnh giao tiếp với Oracle và thực hiện cỏc chức năng GIS 98
VI.3.1 Phõn loại cỏc lớp theo từng chức năng 99
VI.3.2 Xuất dữ liệu vector thành file ảnh raster 99
VI.3.3 Sơ đồ minh hoạ quan hệ giữa cỏc lớp 100
PHẦN IV - CÀI ĐẶT CHƯƠNG TRèNH VÀ THỬ NGHIỆM 101
I. CÀI ĐẶT HỆ THỐNG 102
I.1 Cài đặt Oracle Server 102
I.2 Cài đặt Web Server 102
I.3 Cài đặt chương trỡnh IGIS-Client 102
I.4 Cài đặt chương trỡnh IGIS-Server 103
II. THỬ NGHIỆM 103
II.1 Chương trỡnh thử nghiệm 104
II.2 Một vài hỡnh ảnh trong quỏ trỡnh thử nghiệm 104
PHẦN V- KẾT LUẬN 108
I. ĐÁNH GIÁ CHUNG 109
II. PHƯƠNG HƯỚNG PHÁT TRIỂN 109
III. KẾT LUẬN 110
TÀI LIỆU THAM KHẢO 111
110 trang |
Chia sẻ: huong.duong | Lượt xem: 1147 | Lượt tải: 0
Bạn đang xem trước 20 trang 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
giao thức “không có liên kết”.
Hoạt động : Hoạt động của giao thức IP được tiến hành với sự phối hợp của một loạt các giao thức truyền tin khác : ICMP, ARP, Routing để đảm bảo việc truyền dữ liệu đạt hiệu quả.
Trước hết, giao thức ARP (Address Resolution Protocol) được sử dụng để tìm địa chỉ vật lý tương ứng với địa chỉ IP của máy nhận và gói vào trong gói tin của tầng vật lý.
Trong trường hợp địa chỉ IP nhận và địa chỉ IP gửi có địa chỉ mạng khác nhau, router được sử dụng để tìm ra đường đi từ nơi gửi tới nơi nhận tuỳ theo từng thuật toán tìm đường được sử dụng.
Vì giao thức IP là giao thức không có hình thức kiểm soát lỗi nên việc thông báo về lỗi tới người gửi được thực hiện bằng giao thức ICMP (Internet Control Message Protocol).
Địa chỉ IP : địa chỉ IP được chia làm 2 phần là địa chỉ mạng và địa chỉ nút. Địa chỉ IP (v4) là một số 4 bytes (32 bit) và chia thành các lớp sau :
class A : (1.x.x.x.x -> 126.x.x.x)
0 NetId (bit 24-30) HostId(bit 0-23)
class B : (128.1.x.x -> 191.254.x.x)
1 0 NetId (bit 16-29) HostId(bit 0-15)
class C : (192.0.1.x -> 223.255.254.x)
1 1 0 NetId (bit 8-28) HostId(bit 0-7)
class D : (224.0.0.0 -> 239.255.255.255)
1 1 1 0 Multicass Address
class E :
1 1 1 1 0 Reserved for future use
III.2.2 Giao thức TCP (Transmission Control Protocol)
TCP là một giao thức “có liên kết” nghĩa là cần phải thiết lập liên kết (logic) giữa một cặp thực thể TCP trước khi chúng trao đổi dữ liệu với nhau, và giải phóng liên kết khi kết thúc trao đổi dữ liệu.
Giao thức TCP cung cấp khả năng truyền dữ liệu một cách an toàn giữa các máy trạm trong mạng chuyển mạch gói. Nó cung cấp thêm các chức năng nhằm kiểm tra tính chính xác của dữ liệu khi đến và bao gồm cả việc gửi lại dữ liệu khi có lỗi xẩy ra.
III.3 Các dịch vụ thông tin trên Internet
DNS (Domain Name System) : Dịch vụ tên miền
Telnet : Dịch vụ đăng nhập từ xa
FTP (File Transfer Protocol) : Truyền tệp
E-Mail (Electronic Mail) : Gửi thư điện tử
News groups : Dịch vụ nhóm tin
Archie : Tìm kiếm tệp
Gopher : Tra cứu thông tin theo thực đơn
WAIS (Wide Area information Server ) : Tìm kiếm thông tin theo chỉ số.
World Wide Web (hay Web) : Công nghệ WWW dùng để xử lý các trang dữ liệu đa phương tiện và truy nhập trên mạng diện rộng như trên Internet. Bản chất của WWW là sự hết hợp của Internet, siêu văn bản và mulitmedia. WWW hoạt động theo mô hình Client/Server. Tại trạm Client người sử dụng sẽ dụng một chương trình Web Browser để truy nhập đến một Web Server thông qua một địa chỉ URL. Đây là một dịch vụ hấp dẫn nhất trên Internet và có khả năng tích hợp với các dịch vụ thông tin khác như FTP, Gopher,WAIS, Email,....
CHƯƠNG IV – kiến trúc CLIENT/SERVER
Trước khi tìm hiểu chi tiết về kiến trúc Client/Server chúng ta hãy cùng xem xét một chút về giai đoạn hình thành và phát triển của một công nghệ mới có tính đột phá và cũng là kết quả tất yếu – Công nghệ Client/Server. Đối với mỗi người, để có được những thành đạt trong cuộc sống hẳn cũng phải trải qua những thất bại, những bước vấp ngã trong những thuở ban đầu. Quá trình tìm ra một công nghệ mới cũng không phải là một ngoại lệ. Những nhà nghiên cứu cũng phải trải qua cả một giai đoạn khó khăn xây dựng, đánh giá, và tìm kiếm con đường đúng đắn nhất.
Khởi đầu từ một dự án nhỏ của một bộ quốc phòng Mỹ đã tạo nên một mạng máy tính toàn cầu Internet lớn như ngày nay. Và khi đã có mạng máy tính, làm thế nào để chúng ‘hiểu’ và ‘nói chuyện’ được với nhau ? Đó chính là điểm xuất phát để cho ra đời công nghệ một công nghệ mới – công nghệ Client/Server. Ngay trong giai đoạn đầu, công nghệ Client/Server đã thu hút được sự quan tâm, chú ý của rất nhiều người. Đã có nhiều mô hình Client/Server xuất hiện, trong đó mỗi mô hình đều có những ưu và nhược điểm riêng. Nhưng chúng đều đã chứng tỏ được một vai trò quan trọng mình. Và hiện nay, tất cả các ứng dụng trên mạng hầu như đều tuân theo mô hình Client/Server mà điển hình là Word Wide Web.
I. Khái niệm
Trên thực tế, mô hình Client/Server có một phạm vi ứng dụng rất rộng nhưng đề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. Nhưng một khi dữ liệu đã thay đổi thì lại phải làm lại từ đầu ? đó là chưa kể đến việc tốn kém trong lưu 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.
Request
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ò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ò
Result
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 nhưng 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, nhưng 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ầ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.
Một ứng dụng có thể gồm 3 thành phần : trình diễn, xử lý và 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 lưu 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.
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. Nhưng 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ừ xa RPC (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 lưu 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.
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ý lưu 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.
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 nhưng 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.
II. Các loại Socket
Có 2 loại Socket là Datagram Socket và Stream Socket. Cả 2 loại này đều là những luồng dữ liệu có thể truyền thông 2 chiều đồng thời (full-duplex).
Stream Socket : cung cấp một luồng dữ liệu không có ranh giới bản ghi hay luồng byte, được đảm bảo phân phối (delivered), tuần tự (sequenced) và không trùng lặp (unduplicated).
Stream phải dựa trên một kết nối tường minh, hay phải qua giai đoạn thiết lập kết nối trước khi trao đổi dữ liệu (ví dụ theo giao thức TCP).
Datagram Socket : hỗ trợ luồng dữ liệu hướng bản ghi, không đảm bảo sẽ được phân phối và có thể không tuần tự hoặc không trùng lặp.
Đây là Socket không hướng kết nối, nghĩa là có thể gửi hay nhận thông điệp từ một Socket xác định mà không cần phải tạo một kết nối (ví dụ tuân theo giao thức UDP).
Tính chất tuần tự có nghĩa là các gói tin được phát đi đúng như thứ tự gửi, còn tính không trùng lặp có nghĩa là các gói tin riêng biệt chỉ được nhận đúng một lần.
III. Sử dụng Socket
Các Socket được sử dụng chủ yếu trong 3 ngữ cảnh truyền thông sau :
Các mô hình Client/Server
Các ứng dụng ngang hàng (Peer – to Peer Scenarios) ví dụ : Chat Applications
Gọi thủ tục từ xa (RPC Remove Procedure Call) , các ứng dụng phiên dịch các thông điệp nhận được như lời gọi hàm.
IV. Mô hình lập trình sử dụng Socket
Một tiến trình muốn sử dụng Socket, trước hết nó phải tạo ra một đối tượng mô tả Socket (gồm loại địa chỉ, loại Socket và giao thức). Và để truyền thông được với một tiến trình khác nó phải thực hiện bind cấu trúc mô tả Socket của nó với một điạ chỉ Socket (gồm địa chỉ IP và số port). Sau khi đã được tạo ra , địa chỉ của Socket là không thể thay đổi.
Có 2 mô hình lập trình socket là mô hình sử dụng Datagram Socket và mô hình sử dụng Stream Socket.
IV.1 Mô hình sử dụng Datagram Socket
Server Socket
Client Socket
S=socket(AF_INET,SOCK_DGRAM,0)
S=socket(AF_INET,SOCK_DGRAM,0)
bind(S,ServerAddress)
bind(S,ClientAddress)
amount=recvfrom(S, buffer, from)
…
sento(S,”message”, ClientAddress)
…
sento(S,”message”, ServerAddress)
…
amount=recvfrom(S, buffer, from)
…
closesocket(S)
closesocket(S)
Mô hình lập trình sử dụng Datagram Socket
Cấu trúc SOCKET được xem là một đối tượng (object) được xây dựng nên bởi 3 thành phần (thông qua lời gọi hàm socket(…)) :
Họ địa chỉ (Address Family) : ví dụ AF_INET (Address Family Internet)
Kiểu của Socket (SOCK_DGRAM/SOCK_STREAM)
Giao thức (Protocol) được sử dụng : nếu bằng 0 hệ thống sẽ tự xác định giao thức thích hợp.
IV.2 Mô hình sử dụng Stream Socket
Mô hình này cũng gồm 2 phần là Client Socket và Server Socket.
Client Socket : cần tạo một kết nối tới server (bằng hàm connect())trước khi trao đổi dữ liệu (read(),write()).
Server Socket : sau khi đã tạo một socket, bắt đầu thực hiện chức năng nghe các kết nối thông qua hàm listen(). Hàm listen ngoài tham số thứ nhất xác định SOCKET còn tham số thứ 2 gọi là backlog cho biết số lượng tối đa các kết nối tại một thời điểm. Khi có một kết nối tới, Server sẽ thực hiện gọi hàm accept chấp nhận kết nối, lúc này server cũng cần tạo ra một phân tuyến riêng (thread) phục vụ cho kết nối này, sau đó lại tiếp tục quay lại trạng thái đợi kết nối.
Server Socket
Client Socket
S=socket(AF_INET,SOCK_STREAM,0)
bind(S, ServerAddress)
listen(S,5)
…
sNew=accept(S,from)
…
S=socket(AF_INET,SOCK_STREAM,0)
connect(S,ServerAddress)
n=read(sNew, buffer, amount)
…
write(sNew, buffer, length)
…
write(S, buffer, length)
…
n=read(S, buffer, amount)
…
closesocket(S)
closesocket(S)
Mô hình lập trình sử dụng Stream Socket
V. Multithreading
Không nói, hẳn chúng ta cũng đã biết những ích lợi to lớn mà một hệ điều hành đa nhiệm (như Window 9x, Window NT, Unix, …) đem lại. Khác hẳn với môi trường DOS với một cơ chế tuần tự cứng nhắc, làm việc trong một hệ điều hành đa nhiệm người sử dụng luôn cảm thấy rằng mình có thể thực hiện được nhiều việc hơn, tiết kiệm thời gian hơn, thoải mái hơn vì không phải ngồi đợi không trong lúc thi hành một tác vụ như trước nữa.
Đa nhiệm (Multitasking)
Một hệ điều hành gọi là đa nhiệm (Multitasking) nếu nó cho phép chạy nhiều ứng dụng tại cùng một thời điểm.
Người ta cũng phân biệt giữa môi trường đa nhiệm hợp tác (cooperative multitasking) và đa nhiệm ưu tiên (preemptive multitasking).
Trong môi trường đa nhiệm hợp tác các ứng dụng có thể chiếm lĩnh CPU cho tới khi đã kết thúc sử dụng nó. Môi trường Windows 16 bit như Window 3.1 là một trong những ví dụ của môi trường này.
Còn với đa nhiệm ưu tiên thì các ứng dụng có thể được ưu tiên xử lý sau một khoảng thời gian nhất định, không có một quy trình nào được phép chiếm giữ độc quyền điều khiển hệ thống. Các hệ Windows 32 bits (Windows 95, Window NT) đều là môi trường Preemptive Multitasking.
Tiến trình (Process)
Trong môi trường Preemptive Multitasking, Process là một chương trình ứng dụng đang thực thi trong hệ thống. Mỗi Process gồm ít nhất là một thread để thực hiện đoạn mã lệnh của nó. Thread là một đơn vị mã lệnh được quyền chiếm lĩnh thời gian hệ thống để thực thi một cách tương tranh với các đơn vị mã khác và phải nằm trong một process. Mỗi process có thể tạo ra nhiều thread và mỗi thread đều có thể tạo ra trong nó một hoặc nhiều thread khác nữa. Ngoài các thread ra, Process còn chứa mã lệnh, dữ liệu và một số tài nguyên khác cho chương trình như các bộ nhớ đã cấp phát, các file đã mở. Các tài nguyên này được tạo ra trong suốt quá trình sống của process và được giải phóng khi kết thúc process. Process sẽ kết thúc khi không còn một thread nào thuộc process đó đang thực thi.
Một chương trình được thực hiện khi trình lập biểu hệ thống (System Scheduler) đặt một trong các thread của nó vào trong một điều khiển thực thi (Execution Control). Trình Scheduler sẽ xác định thread nào sẽ được thực hiện thông qua mức ưu tiên (Priority) của mỗi thread. Thread nào có mức ưu tiên thấp thì phải đợi các thread có mức ưu tiên cao hơn hoàn thành thao tác của chúng.
Trên các máy đa bộ vi xử lý, trình Scheduler có thể di chuyển các thread riêng rẽ lên các bộ vi xử lý khác nhau nhằm cân bằng tải CPU.
Multithreading (Đa luồng)
Đa luồng là khả năng một chương trình có thể tạo ra nhiều thread trong một tiến trình đơn thực hiện các tác vụ khác nhau tại cùng một thời điểm. Ví dụ, sử dụng thread để quản lý đồng thời các thao tác như bàn phím, chuột. Một thread theo dõi đầu vào từ bàn phím, một thread theo dõi sự kiện chuôt. Một thread thứ ba cập nhật màn hình dựa trên dữ liệu từ 2 thread trên. Tại cùng một thời điểm có thể có nhiều thread truy nhập tới file trên đĩa hoặc nhận dữ liệu tại cổng truyền thông.
Các ứng dụng đa luồng có nhiều đòi hỏi khắt khe hơn so với các ứng dụng đơn luồng trong việc truy nhập tài nguyên hệ thống (dữ liệu, bộ nhớ,…). Bởi vì có nhiều thread khác nhau trong một ứng dụng có thể truy nhập vào cùng một tài nguyên tại cùng một thời điểm. Lúc này có thể dẫn đến tình trạng tranh chấp tài nguyên, ví dụ như các tranh chấp về dữ liệu (file, bộ nhớ) dùng chung.
CHƯƠNG VI – NGÔN NGữ LậP TRìNH Và CáC công nghệ TRÊN WEB
I. Ngôn ngữ lập trình Visual C++
Visual C++ là một sản phẩm phần mềm của hãng Microsoft, cung cấp một công cụ lập trình rất mạnh trên môi trường Windows.
Cú pháp lệnh của Visual C++ hoàn toàn giống với ngôn ngữ C++. Đó là ngôn ngữ lập trình hướng đối tượng nhưng được thực hiện trong môi trường DOS.
Đươc phát triển trên môi trường Windows, nên chương trình Visual C++ có thể sử dụng rất nhiều các tính năng hấp dẫn của một hệ điều hành đa nhiệm như tính đa luồng (multithreading), lập trình hướng sự kiện (Event – Oriented Programming) thông qua cơ chế truyền message, CSDL, …
Ngoài các thư viện cơ bản của C++, Visual C++ còn được bổ sung thêm rất nhiều các thư viện mới mà điển hình là thư viện MFC (Microsoft Foundation Class). MFC cho phép các lập trình viên giảm đi rất nhiều khối lượng lập trình bằng tập các lớp đã được viết sẵn.
Visual C++ cung cấp một tập rất nhiều các công cụ lập trình :
Active Template LibraryActiveX Data Objects (ADO)ATL TutorialsC Language ReferenceC++ Language ReferenceCompiler COM Supportiostream ReferenceLanguage Quick ReferenceMicrosoft Foundation ClassesMFC Tutorials
OLE DB
OLE DB TemplatesOpen Database Connectivity (ODBC)Preprocessor ReferenceRemote Data Objects (RDO)Run-Time Library ReferenceSamplesSQL ServerStandard C++ Template LibraryWin32 Programming
Môi trường Visual C++ gồm có Standard Editon, Professional Edition và Enterprise Edition.
Enterpisse Edition được xem là đầy đủ nhất, ngoài tất cả các chức năng của lần xuất bản Professional còn có thêm một số công cụ mới làm việc với CSDL, gỡ rối, Visual SourceSafe,…
II. Ngôn ngữ lập trình Java
II.1 Giới thiệu về ngôn ngữ lập trình Java
Java được thiết kế bởi nhóm các nhà khoa học thuộc công ty Sun Microsystems ở California. Nó xuất phát từ một dự án xây dựng phần mềm cho các thiết bị điện tử dân dụng khác nhau. Nhóm dự án cũng sớm nhận ra rằng các ngôn ngữ được ưa chuộng vào thời đó như C,C++ có nhiều khó khăn và rắc rối khi đưa vào các bộ vi xử lý mới. Chính vì vậy Java đã ra đời với mục tiêu tạo những chương trình rất nhỏ, khả chuyển, chạy nhanh và tin cậy.
Java là một nền tảng độc lập có thể chạy trên hầu hết các máy tính với các platform khác nhau mà không cần thay đổi. Đây cũng là một trong những tiêu chí hàng đầu của các nhà phát triển Java. Khẩu hiệu “ Viết một lần, chạy mọi nơi” (Write Once, Run Anywhere) đã trở nên phổ biến và cũng là một mãnh lực hấp đẫn to lớn với các nhà phát triển phần mềm. Hãy thử tưởng tượng rằng chúng ta bỏ biết bao công sức để viết một phần mềm trên một hệ điều hành (ví dụ như Windows) nhưng khi cần phải triển khai trên các hệ điều hành khác (như Unix hay Linux ,…) thì lại phải viết lại thì thật tốn thời gian và công sức biết bao. Java ra đời cũng là để giải quuyết hộ các nhà lập trình vấn đề này do một kiến trúc hoàn toàn mới so với các ngôn ngữ lập trình khác. Trình biên dịch Java không dịch chương trình nguồn thành mã máy mà dịch ra dưới dạng byte code. Đó là một mã có thể hiểu được và thông dịch thành mã thực hiện bới một máy ảo Java (Java Virtual Machine). Máy ảo Java tạo thành một lớp ngăn cách giữa trình ứng dụng và hệ điều hành.
Trình ứng dụng
Các đối tượng Java
Máy ảo Java
Hệ điều hành
(Unix,Windows,OS/2)
Java được xây dựng chủ yếu dựa trên bộ công cụ phát triển Java JDK (Java Developer Kit) ra đời đầu tiên vào năm 1995 với bản JDK 1.0 . Từ đó Java liên tục được phát triển và hoàn thiện và đến năm 1998 đã xuất hiện bản JDK 1.2 đá
Các file đính kèm theo tài liệu này:
- DAN335.doc