Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 117 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
117
Dung lượng
2,19 MB
Nội dung
CHƯƠNG 1: CÁC KIẾN THỨC CƠ BẢN VỀ MẠNG MÁY TÍNH .3 1.1 Mô hình tham khảo tầng OSI 1.2 Họ giao thức TCP/IP 1.3 So sánh hai giao thức TCP UDP 1.4 Cổng giao thức .7 1.5 ðịa IP, ñịa IP dành riêng 1.6 ðịa tên miền: loại A, loại MX 1.7 Một số giao thức tầng ứng dụng: HTTP, SMTP, POP3, FTP CHƯƠNG 2: LẬP TRÌNH MẠNG TRONG NET FRAMEWORK 2.1 Socket hướng kết nối (TCP Socket) 2.1.1 Giới thiệu NameSpace System.Net System.Net.Sockets 10 2.1.2 Viết chương trình cho phía máy chủ .11 2.1.3 Viết chương trình cho phía máy khách 13 2.1.4 Sử dụng luồng nhập xuất với Socket 14 2.2 Socket không hướng kết nối (UDP Socket) 17 2.2.1 Viết chương trình cho phía máy chủ .17 2.2.2 Viết chương trình cho phía máy khách 18 2.2.3 Sử dụng lớp System.IO.MemoryStream ñể tạo vùng ñệm nhập xuất 20 2.3 Sử dụng lớp hỗ trợ ñược xây dựng từ lớp Soket .20 2.3.1 Lớp TCPClient 21 2.3.2 Lớp TCPListener 22 2.3.3 Lớp UDPClient .24 2.4 Socket không ñồng 26 2.4.1 Mô hình xử lý kiện windows .26 2.4.2 Sử dụng Socket không ñồng 27 2.4.3 Ví dụ Socket không ñồng 28 2.4.4 Sử dụng phương thức Non-blocking 35 2.5 Sử dụng Thread ứng dụng mạng 39 2.5.1 Sử dụng Thread chương trình Net 40 2.5.2 Sử dụng Thread chương trình Server 41 2.5.3 Sử dụng Thread ñể gửi/nhận liệu .41 2.5.4 Sử dụng ThreadPool chương trình Net 43 2.5.5 Sử dụng ThreadPool chương trình Server .47 2.6 Kỹ thuật IP Multicasting 48 2.6.1 Broadcasting gì? 48 2.6.2 Sử dụng Broadcasting ñể gửi liệu ñến nhiều máy mạng cục 48 2.6.3 Multicasting gì? 49 2.6.4 Socket Multicasting Net .50 2.7 Bài tập áp dụng .53 CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG MẠNG 55 3.1 Giao thức ICMP 55 3.1.1 Sử dụng Raw Socket .55 3.1.2 Sử dụng giao thức ICMP Raw Socket ñể xây dựng chương trình Ping 57 3.1.3 Sử dụng giao thức ICMP Raw Socket ñể xây dựng chương trình TraceRoute 58 3.2 Giao thức SMTP, POP3 .60 3.2.1 Cơ hệ thống Mail giao thức SMTP, POP3 .60 3.2.2 Cài ñặt SMTP, POP3 Client/Server 60 3.3 Giao thức HTTP 67 3.3.1 Cơ giao thức HTTP .67 3.3.2 Cài ñặt HTTP Client/Server 68 3.4 Giao thức FTP 74 3.4.1 Cơ giao thức FTP 74 3.4.2 Cài ñặt FTP Client/Server .84 3.5 DNS (Domain Name Server) 88 3.5.1 Vấn ñề phân giải tên miền 88 3.5.2 Triển khai DNS MX (Mail Exchange) 89 3.6 Thảo luận ứng dụng khác thường gặp 93 3.7 Bài tập áp dụng .93 CHƯƠNG 4: XÂY DỰNG ỨNG DỤNG NHIỀU LỚP 94 4.1 Mô hình lớp (two tier), lớp (three tier) n lớp 94 4.2 Remoting 98 4.2.1 Giới thiệu Remoting .102 4.2.2 Khai báo, cài ñặt ñăng ký giao diện từ xa 102 4.2.3 Triệu gọi phương thức từ xa 107 4.3 Web Serive 107 4.3.1 Giới thiệu Web Serives 107 4.3.2 Giao thức SOAP 109 4.3.3 Xây dựng Web Services 112 4.3.4 Triệu gọi Web Services từ ứng dụng NET, Java ngôn ngữ khác .114 4.4 Thảo luận ứng dụng phân tán 116 4.5 Bài tập áp dụng 116 CHƯƠNG 1: CÁC KIẾN THỨC CƠ BẢN VỀ MẠNG MÁY TÍNH 1.1 Mô hình tham khảo tầng OSI Mô hình kết nối hệ thống mở ñược Tổ chức quốc tế tiêu chuẩn hoá ISO (International Organizaiton for Standardization) ñưa nhằm cung cấp mô hình chuẩn cho nhà sản xuất cung cấp sản phẩm viễn thông áp dụng theo ñể phát triển sản phẩm viễn thông Ý tưởng mô hình hoá ñược tạo nhằm hỗ trợ cho việc kết nối hệ thống modun hoá thành phần phục vụ mạng viến thông a Chức mô hình OSI: - Cung cấp kiến thức hoạt ñộng kết nối liên mạng - ðưa trình tự công việc ñể thiết lập thực giao thức cho kết nối thiết bị mạng Mô hình OSI có số thuận lợi sau : Chia nhỏ hoạt ñộng phức tạp mạng thành phần công việc ñơn giản Cho phép nhà thiết kế có khả phát triển modun chức Cung cấp khả ñịnh nghĩa chuẩn giao tiếp có tính tương thích cao “plug and play” tích hợp nhiều nhà cung cấp sản phẩm b Cấu trúc mô hình OSI: Mô hình OSI gồm lớp (level), lớp thực chức riêng cho hoạt ñộng kết nối mạng Hình 1-1 Mô tả bẩy lớp OSI lớp ñầu ñịnh nghĩa cách thức cho ñầu cuối thiết lập kết nối với ñể trao ñổi liệu lớp dùng ñể phát triển ứng dụng ñể ñầu cuối kết nối với người dùng Aplication Application Presentation (Upper Layer) Session Transport Layer Network Layer Data Lower Layer Data Link Physical Các lớp lớp mô hình OSI thường ñược gọi lớp ứng dụng (Application layers) hay gọi lớp cao Các lớp thường liên quan tới giao tiếp với người dùng, ñịnh dạng liệu phương thức truy nhập ứng dụng ñó Hình 1-2 Mô tả lớp cung cấp thông tin với chức qua ví dụ: - Lớp ứng dụng: chức giao Telnet, HTTP Application tiếp người sử dụng chương trình ứng dụng Presentation - Lớp trình bày: cách thức chuẩn ASSCII hoá liệu trình bày số liệu EBCDIC - Có chức ñặc biệt mã hoá JPEC liệu người sử dung Session - Lớp phiên: thiết lập, trì NFS, SQL huỷ bỏ phiên làm việc Transport Layer Network Layer Data Link Physical Application layer : ñây lớp cao mô hình Nó nơi mà người sử dụng kết nối chương trình ứng dụng với thủ tục cho phép truy nhập vào mạng Presentation layer : Lớp presentation cung cấp mã chức ñể chuyển ñổi mà ñược cung cấp lớp ứng dụng Các chức ñó ñảm bảo liệu từ lớp ứng dụng hệ thống ñược ñọc lớp ứng dụng hệ thống khác VD : dùng ñể mã hoá liệu từ lớp ứng dụng : mã hoá ảnh jpeg , gif Mã ñó cho phép ta lên trang web Session layer : ñược sử dụng ñể thiết lập, trì kết thúc phiên làm việc lớp presentation Việc trao ñổi thông tin lớp bao gồm yêu cầu dịch vụ ñáp ứng yêu cầu ứng dụng thiết bị khác Các lớp lớp mô hình OSI sử dụng ñể ñịnh nghĩa làm ñể liệu ñược truyền ñi dây nối vật lý, thiết bị mạng ñi ñến trạm ñầu cuối cuối ñến lớp ứng dụng Quấn sách ta quan tâm ñến lớp cuối Và xem xét lớp cách chi tiết giao thiếp lớp mô hình OSI: Sử dụng phương pháp protocal stack ñể kết nối hai thiết bị mạng Protocal stack tập hợp quy ñịnh dùng ñể ñịnh nghĩa làm ñể liệu truyền qua mạng Ví dụ với : TCP/IP Layer cho phép liệu truyền qua Các lớp ñó trao ñổi thông tin ñể cung cấp liên lạc hai thiết bị mạng Các lớp giao tiếp với sử dụng Protocal Data Unit (PDU) Thông tin ñiểu khiển PDU ñược thêm vào với liệu lớp Và thông tin ñiều khiển nằm trường gọi trường header trailer Hình 1-3 Data encapsulation Application Presentation Upper Layer Data Session TCP Header Upper Layer Data Transport Segment IP Header Data Network Packet LLC Header Data FCS Data Link Frame MAC Header Data FCS Physical Bits 0101110101001000010 1.2 Họ giao thức TCP/IP Các tầng giao thức TCP/IP so với cấc tầng mô hình OSI Application: Xác nhận quyền, nén liệu dịch vụ cho người dùng Transport: Xử lý liệu hệ thống va cung cấp việc truy cập mạng cho ứng dụng Network: Tìm ñường cho packet Link: Mức OS thiết bị giao tiếp mạng máy tính Một số ñiểm khác TCP/IP mô hình OSI + Lớp ứng dụng TCP/IP xử lý chức lớp 5,6,7 mô hình OSI + Lớp transport TCP/IP cung cấp cớ chế UDP truyền không tin cậy, transport OSI ñảm bảo truyền tin cậy + TCP/IP tập protocols (một giao thức) + TCP/IP xây dựng trước OSI Quy trình ñóng gói liệu mô hình TCP/IP sau: 1.3 So sánh hai giao thức TCP UDP 1.4 Cổng giao thức Là số năm khoảng 65535 dùng ñể phân biệt ứng dụng mạng với gắn với ñịa IP Socket Một số cổng giao thức thông dụng: + FTP: 21 + Telnet: 23 + SMTP: 25 + POP3: 110 + HTTP:80 1.5 ðịa IP, ñịa IP dành riêng Class A Class B Class C 1 Class D 1 Class E 1 1 16 Netid 24 Hostid Netid Hostid Netid Hostid Multicast address Reverved for future use 1.6 ðịa tên miền: loại A, loại MX 1.7 Một số giao thức tầng ứng dụng: HTTP, SMTP, POP3, FTP - Chúng ta nghiên cứu chi tiết giao thức chương CHƯƠNG 2: LẬP TRÌNH MẠNG TRONG NET FRAMEWORK 2.1 Socket hướng kết nối (TCP Socket) Socket giao diện lập trình ứng dụng (API) mạng Thông qua giao diện lập trình ñiều khiển việc truyền thông hai máy sử dụng giao thức mức thấp TCP, UDP… Socket trừu tượng hoá mức cao, tưởng tượng thiết bị truyền thông hai chiều gửi – nhận liệu hai máy tính với Các loại Socket Socket hướng kết nối (TCP Socket) Socket không hướng kết nối (UDP Socket) Raw Socket ðặc ñiểm Socket hướng kết nối Có ñường kết nối ảo tiến trình Một tiến trình phải ñợi tiến trình yêu cầu kết nối Có thể sử dụng ñể liên lạc theo mô hình Client/Server Trong mô hình Client/Server Server lắng nghe chấp nhận yêu cầu kết nối Mỗi thông ñiệp gửi ñều có xác nhận trở Các gói tin chuyển ñi ðặc ñiểm Socket không hướng kết nối Hai tiến trình liên lạc với không kết nối trực tiếp Thông ñiệp gửi ñi phải kèm theo ñịa người nhận Thông ñiệp gửi nhiều lần Người gửi không chắn thông ñiệp tới tay người nhận Thông ñiệp gửi sau ñến ñích trước thông ñiệp gửi trước ñó Số hiệu cổng Socket ðể thực giao tiếp, hai trình phải công bố số hiệu cổng socket mà sử dụng Mỗi cổng giao tiếp thể ñịa xác ñịnh hệ thống Khi trình ñược gán số hiệu cổng, nhận liệu gởi ñến cổng từ trình khác Quá trình lại yêu cầu tạo socket 2.1.1 Giới thiệu NameSpace System.Net System.Net.Sockets Cung cấp giao diện lập trình ñơn giản cho nhiều giao thức mạng Có nhiều lớp ñể lập trình Ta quan tâm lớp IPAdress, IPEndPoint, DNS, … Lớp IPAdress Một số Field cần ý: Any: Cung cấp ñịa IP ñể Server phải lắng nghe tất Card mạng Broadcast: Cung cấp ñịa IP quảng bá Loopback: Trả ñịa IP lặp AdressFamily: Trả họ ñịa IP hành Lớp IPAddress Một số phương thức cần ý: Phương thức khởi tạo IPAddress(Byte[]) IPAddress(Int64) IsLoopback: Cho biết ñịa có phải ñịa lặp không Parse: Chuyển IP dạng xâu IP chuẩn ToString: Trả ñịa IP dạng xâu TryParse: Kiểm tra IP dạng xâu có hợp lệ không? Lớp IPEndPoint Một số phương thức cần ý: Phương thức khởi tạo IPEndPoint (Int64, Int32) IPEndPoint (IPAddress, Int32) Create: Tạo EndPoint từ ñịa Socket ToString : Trả ñịa IP số hiệu cổng theo khuôn dạng ðịaChỉ: Cổng, ví dụ: 192.168.1.1:8080 Lớp DNS Một số thành phần lớp: HostName: Cho biết tên máy ñược phân giải GetHostAddress: Trả tất IP trạm GetHostEntry: Giải ñáp tên ñịa truyền vào trả ñối tượng IPHostEntry 10 host IIS Web Services cho phép ứng dụng giao tiếp với mà không phụ thuộc platform, ngôn ngữ lập trình, … Tuy nhiên Web Services môi trường “stateless”, có nghĩa không lưu lại trạng thái lần gọi trước phía client ñang thực request Client server Web Services trao ñổi với thông ñiệp SOAP Những ñiều sau ñây ñiểm khác NET Remoting Web Serices, chúng nhân tố ñể ta chọn lựa công nghệ này: • ASP.NET Web Services ñược truy xuất qua HTTP NET Remoting ñược dùng nhiều giao thức khác TCP, HTTP • Web Services môi trường stateless Khi có request từ phía client, có object ñược tạo ñể thực request ñó server Còn NET Remoting lại hỗ trợ nhiều lựa chọn state management thực nhiều request từ client, ñồng thời có hỗ trợ callbacks • Web Services serialize ñối tượng thành XML bên SOAP message truyền tải thông tin thành phần miễn chuyển thành XML Còn ñối với NET Remoting tùy giao thức ñịnh dạng message mà truyền ñi thông tin Ngoài theo giới thiệu NET Remoting có cho phép ñối tượng ñược truyền vào theo kiểu tham chiếu(reference) tham trị (value) • Web services hoạt ñộng platform môi trường khác NET Remoting yêu cầu phía clients phải NET application Channels - Trong kĩ thuật NET Remoting Channel ñược hiểu kênh ñể giao tiếp client server Một object từ client thông qua Channel ñể giao tiếp với object phía server, Channel truyền tải message từ hai phía Như giới thiệu phía có hai channel TcpChannel HttpChannel tương ứng với giao thức TCP HTTP Ngoài ra, TcpChannel HttpChannel ñều có khả extend thành Custom Channel bạn Làm ñể tạo Object Remote ñược NET Remoting? - Một Object remote ñược object thông thường phải ñược inherit từ MarshalByRefObject ðoạn code sample hình 4.2 ví dụ ñơn giản Remotable Object ðối tượng SampleObject hình có số method ñơn giản trả phép tính tổng, hiệu, tích, thương hai số nguyên Giá trị trả hàm kiểu số nguyên, kiểu built-in NET framework Nếu bạn muốn trả kiểu liệu bạn tự ñịnh nghĩa, instance class bạn ñịnh nghĩa lớp ñó bạn phải ñược khai báo với attribute Serializable using System; public class SampleObject: MarshalByRefObject { public int Add(int a, int b) { int c = a + b; 103 return c; } public int Subtract(int a, int b) { int c = a - b; return c; } public int Multiply(int a, int b) { int c = a * b; return c; } public int Divide(int a, int b) { int c; if (b != 0) c = a / b; else c = 0; return c; } } Hình 4.2: Remotable Object Sample Tạo chương trình Server ñể host Remotable Object - Kế tiếp, cần tạo chương trình server ñể lắng nghe request từ phía client Trong ví dụ sử dụng TCP/IP channel ðầu tiên tạo instance channel ñăng kí port tương ứng cho Khi có Request từ phía client, server nhận request ñó Remote Object thực thi Request Trong NET Remoting, có hai chế ñể tạo instance Remote Object từ ñó thực thi request: Singleton Singlecall Tùy vào mục ñích sử dụng, nhu cầu chương trình mà server bạn khai báo theo chế WellKnownObjectMode.SingleCall, hay WellKnownObjectMode.Singleton Khi khai báo Singleton, Remote Object ñược sinh ra, thực thi request, reply lại phía client sau ñó, object ñược lưu lại không bị hủy ñi ðến process chạy chương trình server kết thúc instance bị trình hốt rác Garbage Collector hốt ñi Và ngược lại, khai báo SingleCall, Remote Object ñược khởi tạo hủy ñi ñối với lần nhận request từ phía client, chế tương tự mô hình NET Web Service truyền thống - Nếu bạn muốn sử dụng NET Remoting IIS không cần tạo chương trình server Và tất nhiên, IIS hỗ trợ HttpChannel Nếu host NET Remoting bên IIS bạn sử dụng ñược chế Authentication IIS, ngược lại làm chương trình server ñể host bạn phải cài ñặt chế Authentication riêng ðể host Remote Object bên IIS, trước tiên phải tạo Virtual Directory cho application, sau ñó ñặt ñoạn code ñăng kí service bên event Application_Start (file global.asax) 104 - Trong ví dụ này, không sử dụng IIS mà tạo console application Có nhiều lựa chọn không sử dụng IIS, ta sử dụng console application, Win form application thực tế, người ta sử dụng Windows Service ñể làm Còn Console application hay Winform Application thường dùng ñể minh họa Trong ví dụ này, sử dụng port 9999 cho may mắn Có thể chương trình ñó máy bạn ñã sử dụng port này, bị bạn phải chọn port khác Và sau cùng, ñể kiểm tra xem máy bạn ñang lắng nghe port (port ñã bị sử dụng) ta dùng lệnh “netstat –a” command prompt - Còn bây giờ, xem console application project với class tên SampleSerrver Trong project ñã thêm reference tới System.Runtime.Remoting vào project ñể chạy ñược using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; public class Server { public static int Main() { TcpChannel chan = new TcpChannel(9999); ChannelServices.RegisterChannel(chan, false); RemotingConfiguration.RegisterWellKnownServiceType(typeof(SampleObject) , "SampleNetRemoting", WellKnownObjectMode.SingleCall); Console.WriteLine("Hit to exit "); Console.ReadLine(); } } Hình 3: Sample Server host Remotable Object Tạo chương trình client ñể sử dụng Remote Object - Chương trình client ví dụ ñơn giản, connect vào server, tạo instance Remote Object excute method tính tổng, hiệu, tích, thương - Các bạn lưu ý chương trình client chương trình server ñều phải reference tới class SampleObject Client gọi method instance SampleObject, server thực thi xử lý phía client using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Http; public class Client { 105 public static int Main (string[] argv) { TcpChannel chan = new TcpChannel(); ChannelServices.RegisterChannel(chan, false); SampleObject obj = (SampleObject)Activator.GetObject( typeof(SampleObject), "tcp://localhost:9999/SampleNetRemoting"); if (obj == null) System.Console.WriteLine("Could not locate server"); else { int a = Convert.ToInt32(argv[0]); int b = Convert.ToInt32(argv[1]); int c = obj.Add(a, b); Console.WriteLine("a + b = {0}", c); c = obj.Subtract(a, b); Console.WriteLine("a - b = {0}", c); c = obj.Multiply(a, b); Console.WriteLine("a * b = {0}", c); c = obj.Divide(a, b); Console.WriteLine("a / b = {0}", c); } Console.ReadKey(); } } Hình 4: Sample Client Application Test thử chương trình - Trước tiên chạy chương trình server, bạn thấy message “Press the enter key to exit” cửa sổ console Như server bạn ñang lắng nghe port 9999 Bây bạn chạy chương trình client nhìn thấy kết trả hình Bạn chạy nhiều client ñể request ñến server chạy nhiều server Bạn copy chương trình server sang máy bạn nhờ chạy thử, bạn sửa lại chương trình client, sửa “localhost” thành IP máy bạn chạy thử ñể thấy kết Tóm tắt: - Ví dụ ñã sử dụng code C# ñể khai báo cấu hình cho server client nhiên NET Remoting cho phép ta cấu hình trước file config (App.config) Các bạn tham khảo số resource phía ñể biết cách làm - NET Remoting kĩ thuật tiện lợi cho chương trình dạng Distributed Computing Cách sử dụng phức tạp Web Service nhiên bạn 106 muốn tăng performance NET Remoting với Singleton TCP channel lựa chọn tốt - Với ñời NET Framework 3.x, Microsoft ñã giới thiệu tảng cho kĩ thuật RPC, ñó WCF mạnh NET Remoting nhiều 4.2.2 Khai báo, cài ñặt ñăng ký giao diện từ xa ðể cho chương trình có tính khả chuyển cao thay người ta xây dựng lớp Remote Object ví dụ khai báo giao diện lớp Remote Object chương trình phía Server ta cài ñặt giao diện ñăng ký giao diện từ xa Như ñể triển khai hệ thống Remoting ta có chương trình: Giao diện Remote Object, chương trình Server triển khai giao diện ñăng ký giao diện từ xa, chương trình Client triệu gọi phương thức từ xa - Khai báo giao diện từ xa - Cài ñặt ñăng ký giao diện từ xa 4.2.3 Triệu gọi phương thức từ xa - Chương trình phía Client triệu gọi phương thức ñược cung cấp giao diện tử xa ñã ñược ñăng ký cung cấp Server 4.3 Web Services 4.3.1 Giới thiệu Web Services Web Service gì? Web service Modul chương trình cung cấp chức ứng dụng cho phép triệu gọi truy cập từ xa thông qua Internet Web service sử dụng chuẩn Internet XML HTTP Việc sử dụng Web service phụ thuộc nhiều vào chấp nhận XML, ngôn ngữ mô tả liệu dùng ñể truyền tải liệu thông qua Web Bất kỳ Web service ñược sử dụng, ứng dụng cục truy cập từ xa qua Internet nhiều ứng dụng Do có khả truy cập qua giao diện chuẩn mà Web service cho phép nhiều hệ thống khác làm việc với tiến trình Web Vai trò Web service Web service ñời ñã mở hướng cho việc phát triển ứng dụng Internet Web services tạm dịch dịch vụ web Công nghệ web services ñời cách mạng hóa cách thức hoạt ñộng dịch vụ B2B B2C Web services kết hợp sử dụng nhiều công nghệ khác cho phép hai ứng dụng ngôn ngữ, ñộc lập hệ ñiều hành trao ñổi ñược với thông qua môi trường mạng Internet Tuy nhiên công nghệ sử dụng ñây không thiết phải công nghệ ðây ñiểm khác biệt web services so với công nghệ khác, ñó khả kết hợp công nghệ ñã có XML, SOAP, WSDL, UDDI ñể tạo service, ñặc ñiểm làm bật vai trò web services 107 Web Service ñược thiết kế nhằm cung cấp chế cho phép chương trình giao tiếp với qua Internet (sử dụng giao thức Internet HTTP GET, HTP POST SOAP) ðặc ñiểm Web service - Web service cho phép client server tương tác ñược với môi trường khác - Web Service có dạng mở dựa vào tiêu chuẩn XML HTTP tảng kỹ thuật cho web service Phần lớn kỹ thuật web service ñược xây dựng dự án nguồn mở Bởi chúng ñộc lập vận hành ñược với - Web Service linh ñộng: Vì với UDDI WSDL, việc mô tả phát triển web service ñược tự ñộng hoá - Web service ñược xây dựng tảng công nghệ ñã ñược chấp nhận - Web service có dạng modul - Web service ñược công bố (publish) gọi thực qua mạng Ngày web service ñược sử dụng nhiều lĩnh vực khác sống như: - Dịch vụ chọn lọc phân loại tin tức: hệ thống thư viện kết nối ñến web portal ñể tìm kiếm thông tin từ nhà xuất có chứa khoá muốn tìm - Dịch vụ hiển thị danh sách ñĩa nhạc dành cho công ty thu - Ứng dụng ñại lý du lịch có nhiều giá vé ñi du lịch khác có chọn lựa phục vụ nhiều hãng hàng không - Bảng tính toán sách bảo hiểm dùng công nghệ Excel/COM với giao diện web - Thông tin thương mại bao gồm nhiều nội dung, nhiều mục tin như: dự báo thời tiết, thông tin sức khoẻ, lịch bay, tỷ giá cổ phiếu,… - Những giao dịch trục tuyến cho B2B B2C như: ñặt vé máy bay, làm giao kèo thuê xe - Hệ thống thông tin dùng java ñể tính toán tỷ giá chuyển ñổi loại tiền tệ Hệ thống ñược ứng dụng khác dùng web service Kiến trúc Web service Kiến trúc Web service bao gồm tầng sau: 108 Hình 1: Kiến trúc Web service Trong ñó bao gồm tầng sau: - Tầng vận chuyển: có nhiệm vụ truyền thông ñiệp ứng dụng mạng, bao gồm giao thức HTTP, SMTP, FTP, JSM gần ñây giao thức thay ñổi khổi mở rộng (Blocks Extensible Exchange Protocol- BEEP) - - Tầng giao thức tương tác dịch vụ ( Service Communication Protocol) với công nghệ chuẩn SOAP SOAP giao thức nằm tầng vận chuyển tầng mô tả thông tin dịch vụ, SOAP cho phép người dùng triệu gọi service từ xa thông qua message XML Tầng mô tả dịch vụ (Service Description) với công nghệ chuẩn WSDL XML WSDL ngôn ngữ mô tả giao tiếp thực thi dựa XML Web service sử dụng ngôn ngữ WSDL ñể truyền tham số loại liệu cho - thao tác, chức mà web service cung cấp Tầng dịch vụ ( Service): cung cấp chức service - Tầng ñăng ký dịch vụ (Service Registry) với công nghệ chuẩn UDDI UDDI dùng cho người dùng SOAP server, cho phép ñăng ký dịch vụ ñể người dùng gọi thực service từ xa qua mạng, hay nói cách khác - service cần phải ñược ñăng ký ñể cho phép client gọi thực Bên cạnh ñó ñể cho service có tính an toàn, toàn vẹn bảo mật thông tin kiến trúc web service có thêm tầng Policy, Security, Transaction, Management giúp tăng cường tính bảo mật, an toàn toàn vẹn thông tin sử dụng service 4.3.2 Giao thức SOAP 109 SOAP chữ viết tắt cụm từ “Simple Object Access Protocol – Giao thức truy cập ñối tượng ñơn giản”, với xem xét thì, SOAP không từ viết tắt Chuẩn SOAP ghi nhận XML ñược thể bên tài liệu SOAP, làm nội dung thông ñiệp ñược truyền tải, làm thông ñiệp ñược xử lý hai phía gởi nhận SOAP cung cấp tập từ vựng chuẩn Các thuật ngữ: Như bẩt kỳ công nghệ nào, SOAP có tập thuật ngữ riêng Có nhiều thuật ngữ ñược sử dụng thường xuyên ñể mô tả khía cạnh khác chuẩn SOAP Nhiều lập trình viên dùng thuật ngữ mà không thật hiểu ý nghĩa ðể hiểu thật khái niệm ñòi hỏi phải tốn thời gian ñể hiểu ý nghĩa thuật ngữ làm ñể áp dụng cho chuẩn SOAP Web Services thực thụ Chú ý: Chuẩn SOAP không chuẩn XML mà chuẩn bao gồm thông ñiệp SOAP có hành vi nào, phương tiện vận chuyển khác nhau, cách mà lỗi ñược xử lý Sự truyền tải liệu SOAP Binding Thuật ngữ mô tả làm thông ñiệp SOAP tương tác ñược với giao thức vận chuyển HTTP, SMTP hay FTP ñể di chuyển Internet ðiều quan trọng SOAP di chuyển giao thức chuẩn ñể liên lạc với sản phẩm Web Services khác Trước SOAP, nhiều người phát triển ñã tạo phương pháp riêng họ ñể chuyển tải tài liệu XML mạng Các cách hoạt ñộng tốt phạm vi nhóm cụ thể Tuy nhiên bạn cần làm việc với nhóm khác hay bên công ty ñiều trở nên khó khăn phải huấn luyện thay ñổi ñể làm việc với việc truyền tải tài liệu XML mà họ ñang sử dụng Bằng cách sử dụng tài liệu XML chuẩn giao thức chuẩn, công việc cần làm cộng tác với ñược giảm thiểu tối ña SOAP Message Exchang Pattern (MEP) Thuật ngữ mô tả làm mà tài liệu SOAP trao ñổi phía máy khách chủ Thông ñiệp SOAP sở hữu liên kết, HTTP, ñể truyền Internet Việc nói chuyện máy khách chủ, ñây nút, xác ñịnh hành ñộng mà hai phía thực Nhắc lại SOAP XML ñóng gói RPC Vì thế, MEP hoàn toàn yêu cầu phản hồi máy khách chủ (hay nút khác) Như có nhu cầu liên lạc nút việc ñược thực nhiều yêu cầu phản hồi ñể hoàn tất việc truyền thông ñiệp Cách khác hẳn với công nghệ ñối tượng từ xa khác CORBA, công nghệ ñó ñược thực kết nối SOAP Application Một ứng dụng SOAP ñơn giản ứng dụng dùng SOAP theo vài cách khác Vài ứng dụng hoàn toàn dựa chuẩn SOAP, Web Services cổ phiếu, dùng chuẩn SOAP ñể nhận mã cập nhật phần mềm Chú ý ứng dụng tạo, sử dụng nút trung gian Web Services SOAP Node Trách nhiệm nút bao gồm gởi, nhận, xử lý truyền tải lại thông ñiệp SOAP Một nút phần nhỏ phần mềm, xử lý tài liệu SOAP phụ thuộc vào 110 vai trò Bên cạnh việc truyền liệu, nút có trách nhiệm ñảm bảo thông tin XML tài liệu SOAP phải ñúng ngữ pháp theo chuẩn SOAP SOAP Role Một vai trò SOAP ñịnh nghĩa nút cụ thể hoạt ñộng Nó nút gởi, nhận nút trung gian SOAP Sender Nút gởi nút gởi yêu cầu SOAP Nếu bạn nghĩ ñến ví dụ ứng dụng khách chủ ứng dụng khách thực yêu cầu, gởi thông ñiệp tới ứng dụng chủ ñể yêu cầu vài thông tin SOAP Receiver Ngược lại với SOAP sender nút nhận SOAP Intermediary Một nút trung gian xem thông ñiệp SOAP tương tác vài phần thông tin thông ñiệp, chuyển ñến vị trí thông ñiệp Một nút trung gian thường hoạt ñộng router Một router xem xét thông tin gói tin chuyển mạng, tìm ñiểm gói tin chuyển gói tin ñển ñó Message Path Một thông ñiệp SOAP di chuyển từ phía bên gởi ñến phía bên nhận thông ñiệp thông qua nhiều nút trung gian Tuyến ñường ñi thông ñiệp ñược gọi Message Path Initial SOAP Sender Nút gởi yêu cầu SOAP ñầu tiên nút gởi SOAP ban ñầu SOAP Feature Một ñặc ñiểm SOAP phần chức phần mềm hỗ trợ chức SOAP Các thuật ngữ liên quan ñến XML Chuẩn SOAP ñịnh nghĩa tập nhỏ phần tử XML ñể ñóng gói liệu ñược truyền nút Thật có vài phần tử phần thân thông ñiệp khác phụ thuộc vào cài ñặt Sự uyển chuyển ñược cho phép chuẩn SOAP SOAP Message ðây tài liệu XML ñược truyền nút SOAP gởi nhận Một nút gởi nút khách tạo tài liệu XML chứa thông tin mà phía bên khách cần từ phía chủ Một tài liệu ñược truyền, phía bên chủ phân giải thông tin tài liệu ñể truy xuất giá trị khác tạo thông ñiệp SOAP ñể phản hồi SOAP Envelope ðây phần tử gốc tài liệu SOAP XML Tài liệu SOAP chứa nhiều ñịnh nghĩa không gian tên (namespace) phần tử liên quan tới thông ñiệp SOAP có ENV: tiếp ñầu ngữ SOAP Header 111 Phần ñầu thông ñiệp SOAP chứa khối thông tin ñầu tài liệu XML ñể ñịnh tuyến xử lý thông ñiệp SOAP Dữ liệu tách rời khỏi phần thân tài liệu có chứa thông tin liên quan ñến ñối tượng ñược gọi SOAP Header Block Phần ñầu SOAP chứa nhiều phần giới hạn nhiều khối thông tin có khối thông tin phần ñầu Những khối thông tin phần ñầu chứa thông tin nút trung gian nút cần biết nút ñể thông ñiệp ñược gởi ñến SOAP Body Phần thân SOAP thật chứa thông tin ñối tượng ñể xử lý thông tin Phần thân sau ñược phân tách trở thành ñối tượng ðối tượng xử lý thông tin kết ñược ñặt phần thân tài liệu trả SOAP Fault ðây phần thông tin SOAP chứa thông tin ñến lỗi xảy nút SOAP 4.3.3 Xây dựng Web Services - Tạo Web Services project - Tạo Web Method 112 - Chạy thử Web Services danh sách hàm ñược liệt kê - Chọn hàm Add 113 - Sau nhập tham số vào, nhấn Invoke Kết xuất 4.3.4 Triệu gọi Web Services từ ứng dụng NET, Java ngôn ngữ khác - Sau xây dựng Web Server song ta triệu gọi từ ứng dụng khác - Tạo Window Form 114 - Add Web Reference - Tạo hình: 115 - Viết hàm xử lý nút nhấn: - Chạy thử ứng dụng ta có kết quả: 4.4 Thảo luận ứng dụng phân tán 4.5 Bài tập áp dụng Viết chương trình Chat sử dụng công nghệ Web Services Viết chương trình Calculator công nghệ Web Services Viết chường trình quản lý FileManager công nghệ Web Services 116 TÀI LIỆU THAM KHẢO Richard Blum, C# Network Programming, 2003 Fiach Reid, Network programming in NET with C# and VB.NET, Digital Press, 2003 Bài giảng “Nhập môn Công nghệ phần mềm”, ðại học KHTN Bài giảng “Xây dựng phần mềm hướng ñối tượng”, ðại học KHTN Bài giảng “Lập trình truyền thông”, ðại học Cần Thơ Bài giảng “Công nghệ NET”, Khoa CNTT – ðại học SPKT Hưng Yên Bài giảng “Java Nâng cao”, Khoa CNTT- ðại học SPKT Hưng Yên Các ví dụ Website: www.java2s.com 117 [...]... giao thc TCP, MS.NET cung cp hai lp c tờn l TCPClient v TCPListener - C c thnh phn ca lp TcpClient + Phng thc khi to: Constructor Method Name Description TcpClient () To mt ủi tng TcpClient Cha ủt thụng s gỡ TcpClient (IPEndPoint) To mt TcpClient v gn cho nú mt EndPoint cc b TcpClient (RemoteHost: String, Int32) To mt ủi tng TcpClient v kt ni ủn mt mỏy c ủa ch v s hiu cng c truyn vo RemoteHost c th... ủu mt chc nng v c ủng ký vi phng thc AsyncCallback Bt ủu bng End ch chc nng hon thnh khi AsyncCallback c gi Requests Started By Description of Request Requests Ended BY BeginAccept() To accept an incoming connection EndAccept() BeginConnect() To connect to a remote host EndConnect() BeginReceive() To retrieve data from a socket EndReceive() BeginReceiveFrom() To retrieve data from a specific remote... Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint iep = new IPEndPoint(IPAddress.Any, 9050); sock.Bind(iep); sock.Listen(5); sock.BeginAccept(new AsyncCallback(CallAccept), sock); Trong ủú phng thc CallAccept thng c vit nh sau: private static void CallAccept(IAsyncResult iar) { Socket server = (Socket)iar.AsyncState; Socket client = server.EndAccept(iar); } - thit lp kt ni theo c ch bt ủng b chỳng... ButtonDisconOnClick(object obj, EventArgs ea) { client.Close(); conStatus.Text = "Disconnected"; } void Connected(IAsyncResult iar) { 32 client = (Socket)iar.AsyncState; try { client.EndConnect(iar); conStatus.Text = "Connected to: " + client.RemoteEndPoint.ToString(); client.BeginReceive(data, 0, size, SocketFlags.None, new AsyncCallback(ReceiveData), client); } catch (SocketException) { conStatus.Text... phng thc BeginConnect() v EndConnect() nh sau: Phng thc BeginConnect() v EndConnect() 28 Socket newsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint iep =new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9050); newsock.BeginConnect(iep, new AsyncCallback(Connected), newsock); Trong ủú phng thc Connected thng c vit nh sau: public static void Connected(IAsyncResult... Font.Height); connect.Click += new EventHandler(ButtonConnectOnClick); Button discon = new Button(); discon.Parent = this; discon.Text = "Disconnect"; discon.Location = new Point(295,52); discon.Size = new Size(6 * Font.Height, 2 * Font.Height); discon.Click += new EventHandler(ButtonDisconOnClick); } void ButtonConnectOnClick(object obj, EventArgs ea) { conStatus.Text = "Connecting "; Socket newsock = new Socket(AddressFamily.InterNetwork,... khi to: Constructor method Name Description TcpListener (Port: Int32) To mt TcpListener v lng nghe ti cng ch ủnh TcpListener (IPEndPoint) To mt TcpListener vi giỏ tr Endpoint truyn vo TcpListener (IPAddress, Int32) To mt TcpListener v lng nghe c c kt ni ủn ti ủa ch IP v cng ch ủnh + C c phng thc kh c Name Description AcceptSocket Chp nhn mt yờu cu kt ni ủang ch AcceptTcpClient Chp nhn mt yờu cu kt ni... v tờn ca mỏy tớnh cc b NameSpace System.Net.Sockets Mt s lp hay dựng: TcpClient, UdpClient, TcpListener, Socket, NetworkStream, to ra Socket Socket(AddressFamily af, SocketType st, ProtocolType pt) SocketType Protocoltype Description Dgram Udp Connectionless communication Stream Tcp Raw Icmp Raw Raw Connection-oriented communication Internet Control Message Protocol Plain IP packet communication... host EndReceiveFrom() BeginSend() To send data from a socket EndSend() BeginSendTo() To send data to a specific remote host EndSendTo() - chp nhn kt ni bt ủng b ta s dng phng thc BeginAccept() v EndAccept() nh sau: Phng thc BeginAccept() v EndAccept() IAsyncResult BeginAccept(AsyncCallback callback, object state) Socket EndAccept(IAsyncResult iar); Thng c dựng nh sau: Socket sock = new Socket(AddressFamily.InterNetwork,... = (Socket)iar.AsyncState; 34 int sent = client.EndSend(iar); client.BeginReceive(data, 0, size, SocketFlags.None, new AsyncCallback(ReceiveData), client); } void ReceiveData(IAsyncResult iar) { Socket client = (Socket)iar.AsyncState; int recv = client.EndReceive(iar); if (recv == 0) { client.Close(); conStatus.Text = "Waiting for client "; server.BeginAccept(new AsyncCallback(AcceptConn), server); return; ... tuyen.Start(); 19 } private void btSend_Click(object sender, EventArgs e) { byte[] data = new byte[1024]; data = Encoding.ASCII.GetBytes(txtSend.Text); udp1.SendTo(data, ipremote); } private void NhanDL()... (txtSend.Text.ToUpper().Equals("QUIT")) this.Dispose(); } private void btConnect_Click(object sender, EventArgs e) { Thread tuyen = new Thread(new ThreadStart(NhanDl)); tuyen.Start(); } private void NhanDl() { UdpClient receiver... button1.Click += new EventHandler(NhanTiep); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Bac da nhan em"); } private void NhanTiep(object sender, EventArgs e) { MessageBox.Show("Bac