Giao thức trao đổi dữ liệu giữa IGIS-Client và IGIS-Server

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 85 - 94)

Để gọi một cách ngắn gọn ta đặt tên giao thức tầng ứng dụng là IGIS-AP và giao thức tầng truyền thông là IGIS-CP.

II.1 Giao thức tầng ứng dụng (IGIS-AP) II.1.1 Các trạng thái trong giao thức IGIS-AP

Quá trình trao đổi dữ liệu giữa 2 tầng ứng dụng IGIS-Client và IGIS-Server theo giao thức IGIS-AP trải qua 4 trạng thái sau :

1. Trạng thái Initialization : Đây là trạng thái khởi đầu khi IGIS-Client kết nối với IGIS-Server và thực hiện giai đoạn khởi tạo ứng dụng.

2. Trạng thái Public Transaction : Sau khi thực hiện xong giai đoạn khởi tạo hệ thống sẽ đi vào giai đoạn Public Transaction. Đây là giai đoạn ngời sử dụng đợc quyền sử dụng các dịch vụ chung hay public service mà hệ thống cung cấp.

3. Trạng thái Private Transaction : Đây là trạng thái khi ngời sử dụng thực hiện thành công chức năng chứng thực (Authentication) hay kiểm tra quyền sử dụng

(login). Chỉ trong trạng thái này ngời sử dụng mới có thể sử dụng các dịch vụ riêng hay private public.

4. Trạng thái Finish : Khi kết thúc một phiên phục vụ, hệ thống sẽ đi vào trạng thái

Finish nhằm mục đích cập nhật các dữ liệu nếu có và giải phóng tài nguyên. Quá trình chuyển đổi trạng thái đợc minh hoạ bằng sơ đồ sau :

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

Giao thức tầng Socket Giao thức tầng truyền thông

(IGIS- Packets)

Mô hình trao đổi dữ liệu giữa IGIS-Client và IGIS-Server

Internet

Public Transaction

State Start

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

Sơ đồ chuyển đổi trạng thái theo giao thức IGIS-AP

Trong mỗi trạng thái sẽ có một tập lệnh và tham số để tạo thành một request và một response tơng ứng. Một số lệnh có thể sử dụng trong các trạng thái khác nhau nhng cũng có lệnh không đợc phép sử dụng khi cha đi vào trạng thái hợp lệ.

II.1.2 Cấu trúc chung của một Request

Bất kỳ request nào đều gồm có phần lệnh, có hoặc không có phần tham số. Phần lệnh đợc tách riêng với nhau bởi dấu ‘?’ :

Command[?Arguments]+CRLF

Phần lệnh Command : mô tả một chức năng của hệ thống cần thực hiện

Phần tham số Arguments : mô tả các tham số của lệnh cần thực hiện. Trờng hợp có nhiều tham số thì các tham số cách nhau bởi dấu ‘&’

Arguments :- arg1=value1&arg2=value2&arg3=value3…

CRLF là mã kết thúc dòng nh trong bảng mã ASCII (CR=13,LF=10). Nếu tham số có nhiều giá trị thì các giá trị cách nhau bởi dấu ‘+’

arg=value1+value2+…+valueN

Cấu trúc của Request gần giống với các yêu cầu theo giao thức HTTP nhằm mục đích phát triển hệ thống khi cần thiết.

Ví dụ : Set Parameters?ViewSize=439+258&ViewBkgnd=225+225+240

Tuy nhiên có thể có những request không cần theo đúng cấu trúc này. Ví dụ : Authen?xyz/xyz

Đây là một request yêu cầu chứng thực với UserName=xyz và Password=xyz.

II.1.3 Cấu trúc chung của một Response

Một Response gồm phần mã kết quả vừa thực hiện lệnh và có thể có hoặc không có phần thông báo kết quả . Phân chia các dòng bằng CRLF.

Ví dụ kết quả trả lời một gói tin chứng thực có thể là :

000 hoặc 000 Invalid Username and Password

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

Initializatio n State

Quit

Finish

State Transaction Private

State

Login Successfully

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

100 hoặc 100 Valid Username and Password

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

Mỗi chức năng này đợc biểu diễn bằng một request và gửi tới IGIS-Server

1) Set Parameters : Thiết lập các thông số khởi tạo. Các thông sô này cần thiết cho

việc tạo ảnh raster của bản đồ từ dữ liệu vector nh kích thớc hiện tại của View, mầu nền bản đồ,…

2) Get Services : Sử dụng để lấy các dịch vụ đợc cung cấp bởi IGIS-Server.

3) Authen : yêu cầu kiểm tra quyền sử dụng Private Service.

4) NewMap : thực hiện mở một bản đồ mới. Bản đồ hiện tại sẽ bị xoá hoặc yêu cầu

cập nhật.

5) AddLayer : Nạp chồng một hoặc nhiều lớp vào bản đồ hiện tại. Nếu bản đồ hiện

tại không chứa một lớp nào (bản đồ rỗng) thì lớp mới sẽ trở thành lớp đầu tiên của bản đồ.

6) RemoveLayer : Gỡ bỏ một hoặc nhiều lớp khỏi bản đồ hiện tại. Nếu không còn

một lớp nào trong bản đồ thì sẽ đợc tô đầy bằng màu nền của View.

7) Zoom : Thực hiện một phép zoom bản đồ với một tỷ lệ xác định. Tuỳ thuộc vào

tỷ lệ này mà bản đồ sẽ đợc phóng to hay thu nhỏ lại. Thao tác này sẽ thay đổi cả tỷ lệ hiển thị và khoảng cách offset của vị trí hiển thị.

8) PanMap : Di chuyển vùng hiển thị bản đồ sang một vị trí mới. Thao tác này chỉ

thay đổi offset của vị trí hiển thị mà không làm thay đổi tỷ lệ bản đồ.

9) Goto Origin : Chuyển chức năng hiển thị bản đồ về trạng thái đầu tiên khi mở

một bản đồ mới hoặc nạp chồng lớp đầu tiên vào bản đồ.

10) ViewEntireLayer : Thực hiện chức năng nhìn toàn bộ bản đồ trong View hiện

tại.

11) GetInfo : Yêu cầu xem thông tin của một hoặc nhiều thực thể trên bản đồ tại

một vị trí xác định.

12) ExecSQL : Thực hiện một lệnh SQL nh insert, update, delete,… không có lệnh

select.

II.1.5 Cấu trúc chi tiết của các Request và Response

Request RESPONSE Commands Arguments 1) Set Parameters (Initialization State Only) ViewSize=CX+CY. ViewBkgnd=R+G+B MapBkgnd=R+G+B MapBorder=R+G+B/NO (CX,CY : độ rộng của View R : Red, G: Green, B : Blue)

1xx [Msg] CRLF :- Error

000 [Msg] CRLF :- Success

Ví dụ lệnh Set Parameters:

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 IGIS-Client : Set Parameters?

ViewSize=439+258&ViewBkgnd=225+225+240&MapBkgnd=255+255 +255&MapBorder=NO IGIS-Server : 000 3) Get Services (Public/ Private Transaction State) Public: Các dịch vụ chung (Public Transaction State Only)

Private : Các dịch vụ riêng (Private Transaction State)

All : Cả 2 dịch vụ (Private Transactinon State Only)

1xx [Msg] CRLF :- Error

000 [Msg] CRLF

Service List :-

Success

(Service List : mô tả ở cuối bảng)

Ví dụ lệnh Get Services:

IGIS-Client : Get Services?public IGIS-Server : 000 1 Public Services SName=Dich vu thong tin ban do SID=3 HANOI : GEOMETRY 5) Authen (Public/Private Transaction State) UserName/Password 1xx [Msg] CRLF :- Invalid 000 [Msg] CRLF :- Success 6) NewMap (Public/Private Transaction State) SID=i&Index=j&…

(SID : ID của Service

Index : chỉ số layer trong Service) 1xx [Msg] CRLF :- Error 000 RightURL CRLF Map Desc :- Update 001 [Msg] CRLF :- No Modified (RightURL,Map Desc mô tả ở cuối bả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 Ví dụ lệnh New Map : IGIS-Client : NewMap?SID=2&Index=3 IGIS-Server : 000 /IOGisServer/MapImages/Map1093_1.000000.jpg MoveLimit=(115,208,70,232) LogRatio=0.0000604976/0.0000604976 LogOffset=-227517.51480/-5565962.31826 LogUnit=0.50000/0.50000 8) AddLayer (Public/Private Transaction State) SID=i&Index=j&… (SID và Index xác định đợc layer cần nạp chồng vào bản đồ với quy tắc sau tơng ứng với mỗi State :

Public Trans State : SID chỉ thuộc Public Service

Private Trans State : SID có thể là Public/Private Service.) Nh trên 9) Zoom (Public/Private Transaction State) X=valueX&Y=valueY&Coef= c

(X,Y : toạ độ điểm zoom theo đơn vị Device, coef là hệ số zoom. Coef=2 : phóng to gấp đôi tỷ lệ cũ) Nh trên 10)PanMap (Public/Private Transaction State) Dx=valueDx&Dy=valueDy (Dx, Dy là khoảng dịch chuyển theo chiều x,y theo đơn vị Device) Nh trên 11)Goto Origin (Public/Private Transaction State)

Không có tham số Nh trên

Ví dụ lệnh Goto Origin :

IGIS-Client : GOTO ORIGIN

IGIS-Server : 000 /IOGisServer/MapImages/Map1123_11.000000.jpg MoveLimit=(115,220,70,219) 13)ViewEntireLayer (Public/Private Transaction State) SID=i&Index=j&MaxBoun ding=Y/N (Xem toàn cảnh một lớp) Nh trên

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

All&MaxBounding=Y/N

(Xem toàn cảnh toàn bộ bản đồ) (MaxBounding =Y toàn bộ lớp bao gồm cả đờng biên) Ví dụ lệnh ViewEntireLayer IGIS-Client : ViewEntireLayer?SID=2&Index=3&MAXBOUNDING=N IGIS-Server : 000 /IOGisServer/MapImages/Map1123_12.000000.jpg MoveLimit=(-69,35,-67,46) EntireMapPos=(69,-35,372,304) LogRatio=0.0000294517/0.0000294517 LogOffset=179953.89109/-5565962.31826 LogUnit=0.50000/0.50000 15) RemoveLayer (Public/Private Transaction State) SID=i&Index=j (i,j xác định layer cần gở bỏ khỏi bản đồ hiện tại)

1xx [MSG] CRLF :- Error 002 [MSG] CRLF :- Empty Map 000 RightURL CRLF Map Desc :- Update Ví dụ lệnh RemoveLayer : IGIS-Client : RemoveLayer?SID=0&Index=3 IGIS-Server : 002 17) GetInfo (Public/Private Transaction State) X=valueX&Y=valueY

(X,Y là các vị trí trên trục x,y theo đơn vị Device)

1xx [MSG] CRLF :- error 000 [MSG] CRLF ObjectInfos (ObjectInfos đợc định nghĩa ở cuối bảng) Ví dụ lệnh GetInfo : IGIS-Client : GetInfo?X=100&Y=200 IGIS-Server : 000

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 1,0,1 ColName1|ColName2|ColName3 1,abc|def|1,mnp 1,3,1 ColName1|ColName2 1,sdflkdf|0, 19) ExecSQL (Public/Private Transaction State)

SID=m&Index=i&NSQL=n& SQLLen=len1&strCmd1SQL Len=len2&strCmd2...

Trải trên nhiều dòng, mỗi dòng là kết quả thực hiện cho một lệnh SQL

Giải thích một số khái niệm :

ServiceList : Là danh sách các dịch vụ mà IGIS-Server cung cấp cho IGIS-

Client. Danh sách này đợc trải trên nhiều dòng. Bắt đầu mỗi dịch vụ bằng từ khoá SName.

SName= Tên của dịch vụ thứ nhất SID= ID của dịch vụ thứ nhất Tên của layer thứ nhất

Tên của layer thứ hai

SName= Tên của dịch vụ thứ hai SID= ID của dịch vụ thứ hai Tên của layer thứ nhất Tên của layer thứ hai

MapDesc : là cấu trúc mô tả các thông tin về bản đồ. Cấu trúc này cũng trải trên

nhiều dòng. MoveLimit=(LeftDx,TopDy,RightDx,BottomDy) EntireMapPos=(x1,y1,x2,y2) LogRatio=logRatioX/logRatioY LogOffset=logOffsetX/logOffsetY LogUnit=logUnitX/logUnitY

ObjectInfos : là cấu trúc cho biết các thông tin thuộc tính về một hoặc nhiều

thực thể trên bản đồ. Cấu trúc này gồm nhiều dòng.

SID_1 , Index_1,RowCount_1 ColName1| ColName2| ColName3 Ind, Item1.1 | Ind, Item2.1| Ind, Item3.1

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

Ind, Item1.2| Ind, Item2.2| Ind, Item3.2 SID_2,Index_2,RowCount_2

ColName1| ColName2 Ind, Item1 | Ind, Item2

Trong đó Ind (Indicator) chỉ dẫn cho giá trị của trờng :

- Ind=1 : giá trị khác NULL

- Ind=0 : giá trị bằng NULL (Lúc này không quan tâm tới vế sau).

RightURL : là phần ngọn của một địa chỉ URL. Để có thể tạo thành một địa chỉ

URL hoàn chỉnh cần thêm địa chỉ của WebServer nơi chạy IGIS-Server.

Ví dụ :

RightURL=/IOGisServer/MapImages/Map1123_12.000000.jpg

URL=http://localhost/IOGisServer/MapImages/Map1123_12.000000.jpg

Chú ý : trong các quy ớc ở trên có những ký tự đặc biệt đợc sử dụng làm dấu

ngăn cách. Nếu trong trờng hợp mà giá trị có phần trùng với các dấu ngăn cách này và có thể gây nhập nhằng thì khi gửi các dấu đó sẽ đợc tự động nhân đôi và bên nhận phải tự động loại bỏ.

II.2 Giao thức tầng truyền thông (IGIS-CP)

Giao thức tầng ứng dụng thờng làm việc dựa trên luồng các ký tự, hoặc dựa trên các từ khoá đợc định nghĩa trớc. Giao thức IGIS-CP thì không cần quan tâm tới điều này, nó chỉ làm việc dựa trên luồng byte với các tiêu chuẩn sau :

√ Đơn vị truyền nhận là các packet (Cấu trúc của packet sẽ mô tả sau)

√ Đảm bảo truyền/nhận một cách chính xác (gửi đi các request và nhận đúng các response tơng ứng với request đó)

√ Có thể tách hoặc hợp trên các packet nếu cần.

√ Có khả năng mã hoá/giải mã hoặc nén/giải nén dữ liệu khi có yêu cầu

Các packet sử dụng trong tầng truyền thông này ta gọi là IGIS-Packet để khỏi lầm với các packet trong các giao thức ở tầng dới.

II.2.1 Giao thức IGIS-CP

- Khi tầng trên của bên gửi có yêu cầu truyền dữ liệu nó sẽ gửi dữ liệu cần truyền xuống tầng truyền thông. Nếu có yêu cầu mã hoá/nén dữ liệu thì nó sẽ thực hiện các thao tác này trên dữ liệu đầu vào. Sau đó nó đóng gói chúng thành một hoặc nhiều IGIS-Packet và gửi sang bên nhận.

- Khi nhận đợc một IGIS-Packet, tầng truyền thông của bên nhận có nhiệm vụ tách phần dữ liệu ra. Nếu dữ liệu nằm trong nhiều IGIS-Packet thì nó đợi cho tới khi nhận đủ các IGIS-Packet và tập hợp lại thành dữ liệu hoàn chỉnh. Nếu dữ liệu đã đợc mã hoá hay nén thì nó sẽ thực hiện tiếp thao tác giải mã hoặc giải nén. Sau đó dữ liệu sẽ đợc gửi lên tầng trên (tức là tầng ứ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

II.2.2 Cấu trúc tổng quát của một IGIS-Packet

Cấu trúc của một IGIS-Packet gồm 3 phần là kiểu packet (Packet Type), độ dài phần dữ liệu (Data Length) và dữ liệu (Data). Phần Packet Type và Data Length đợc xem nh phần Header của gói IGIS-Packet.

II.2.3 Các kiểu IGIS-Packet

Các kiểu IGIS-Packet đợc xác định bằng trờng Type trong phần Header

Type là một số 8 bit mỗi bit tơng ứng với một chức năng riêng. Có thể có nhiều kiểu IGIS-Packet khác nhau, thực hiện bằng phép OR các bit.

Packet Types

Bit 0 0 : Normal (không mã hoá)

1 : Encrypted (Đã mã hoá)

Bit 1 0 : NoZip (Không nén)

1 : Zip (Đã nén)

Bit 2 0 : End Sequence Packet 1 : Sequence Packet Bit 3..7 Reserved

II.2.4 Cách lu trữ giá trị độ dài dữ liệu trong trờng DataLength

Trờng DataLength xác định độ dài dữ liệu trong trờng Data. Kích thớc của trờng DataLength là 4 bytes (32 bits). Đây là một số kiểu Integer đợc lu trữ theo thứ tự

byte cao trớc, byte thấp sau.

Ví dụ: DataLength=20 (cơ số mời) hay DataLength=10100 (nhị phân)

Giá trị lu trữ trong trờng DataLength là nh sau :

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

Byte 0 Byte 1 Byte 2 Byte 3

N+4 0 …

4 Bytes 1 Byte

Type Data Length=N Data

5 Bytes Header

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

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 85 - 94)

Tải bản đầy đủ (DOC)

(117 trang)
w