1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo cáo tìm hiểu về XML RPC trên python

22 536 13

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 22
Dung lượng 548,52 KB

Nội dung

Đề tài báo cáo Niên luận tìm hiểu về XMLRPC triển khai trên ngôn ngữ lập trình Python. Tìm hiểu khái niệm về RPC, XMLRPC, kiến trúc và cách hoạt động của XMLRPC củng như kỹ thuật và một số vấn đề khi triển khai XMLRPC trên ngôn ngữ lập trình Python. Phần cuối sẽ là phần chương trình demo tính số pi đơn giản và dùng XMLRPC trên Python để thực thi chương trình.

Trang 1

TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

NIÊN LUẬN CƠ SỞ NGÀNHMẠNG MÁY TÍNH VÀ TRUYỀN THÔNG

-oOo -ĐỀ TÀI LẬP TRÌNH ỨNG DỤNG PHÂN TÁN

VỚI XML-RPC PYTHON

Cán bộ hướng dẫn:

Thầy Đỗ Thanh Nghị Sinh viên thực hiện:

Trần Phước Bình

B1509620

2018

Trang 2

MỤC LỤC

GIỚI THIỆU 1 Chương 1: TÌM HIỂU VỀ NGÔN NGỮ LẬP TRÌNH PYTHON 2

1.1 Lịch sử ra đời của python………2

python……… 2

python……… 2

1.4 Các dạng chương trình ứng dụng python………3

Trang 3

2.4 Giao thức

mạng……… 7

2.4.1 Giao thức TCP/IP……….8

1 Giao thức IP………8

2 Giao thức TCP………8

2.4.2 Giao thức UDP……….8

2.5 Các mô hình hoạt động của mạng máy tính………

8 Chương 3: LẬP TRÌNH ỨNG DỤNG PHÂN TÁN VỚI XMLRPC……

9 3.1 Tổng quan về RPC……… … 9

3.2 XML-RPC là gì……… 9

3.3 Tại sao sử dung XML-RPC……….9

3.4 XML-RPC hoạt động như thế nào………9

3.5 Kiến trúc ứng dụng của XML-RPC………

10 3.6 Cơ chế thực thi của XML_RPC………

…….10

3.7 Một số đối tượng, hàm được sử dụng trong XML-RPC………

11 Chương 4: CHƯƠNG TRÌNH DEMO TÍNH SỐ PI ĐƠN GIẢN BẰNG XML-RPC TRÊN NGÔN NGỮ PYTHON ……… 14

1 Số Pi và cách tính……….14

1.1 Số Pi……… ………14

1.2 Cách tính số Pi……….………… 14

2 Xây dựng chương trình tính số Pi……… 15

2.1 Bên máy Server……… ……… ……….15

Trang 4

Chương 5: KÊT LUẬN ………17

Trang 5

GIỚI THIỆU

Ngày nay, với sự phát triển như vũ bão của hệ thống mạng, điển hình làmạng Internet đã khiến cho máy tính ngày càng trở nên gần gủi và phục vụ đắclực ở mọi lĩnh vực của cuộc sống của con người Tuy nhiên, bên cạnh đó có mộtthách thức lớn đặt ra cho các nhà phát triển ứng dụng là lập trình mạng ngày càngtrở nên phức tạp Và hiện nay, mô hình lập trình đơn lẽ truyền thống đã bị thayđổi rất nhiều, không còn đơn thuần ngồi viết những ứng dụng để chạy trên mộtmáy duy nhất Chương trình ứng dụng đòi hỏi sự tương tác từ nhiều phía ngườidùng, chia sẽ tài nguyên, triệu gọi từ xa, liên kết giao tác, phân tán dữ liệu,…Vớinhững yêu cầu trên mô hình Client/Server đã ra đời và tồn tại rất lâu cho đếnngày nay Theo mô hình Client/Server thì tất cả các xử lý phức tạp đều đượcchuyển giao cho máy chủ (server) xử lý, máy khách (client) chỉ đóng vai trò làgửi yêu cầu đến máy chủ để máy chủ xử lý và hiển thị kết quả nhận về lên mànhình

Hãy hình dung nếu chúng ta quản lý và phân phối ứng ựng của mình lênhàng nghìn máy khách ở nhiều quốc gia khác nhau sẽ gây ra trở ngại về mặt địa

lý Chúng ta cài đặt trình điều khiển kết nối cơ sở dữ liệu lên từng máy, sau mộtthời gian sử dụng, nếu chúng ta muốn chuyển đổi hệ quản trị cơ sở dữ liệu nàysang hê quản trị cơ sỡ dữ liệu khác thì sẽ có rất nhiều khó khăn và phiền toái xãy

ra Chúng ta phải yêu cầu hàng nghìn máy khách cập nhật lại trình điều khiển hệquản trị cơ sở dữ liệu, chưa kể việc cấu hình và kết nối với cơ sỡ dữ liệu chưachắc đã là đơn giản với người dùng Hoặc khi muốn đổi mã nguồn của máykhách, bao gồm rất nhiều MB thậm chí lên đến Gb thì phải cập nhật lại lượng dữliệu này cho tất cả các máy khách, thật sự điều này rất mất thời gian và khó khăn

Từ những bất cập trên đã làm phát sinh ra mô hình phát triển ứng dụng đatầng (multi-tier) Các chương trình xử lý không còn phải đặt trên máy khách nữa

mà sẽ được cài đặt trên một server khác, làm cho máy khách trở nên gọn nhẹ, dêdàng hơn trong việc cấu hình củng như thay đổi phía bên máy chủ Nếu muốnthay đổi hay cập nhật mã nguồn mới thì chỉ cần thay đổi phía bên server, các máykhách kết nối vào server sẽ luôn được phục vụ phiên bản mới nhất

Trong phạm vi của niên luận này, chúng ta sẽ tìm hiểu sơ lược về quá trìnhhình thành và phát triển của ngôn ngữ lập trình Python, kiến thức cơ sở về mạngmáy tính và một đối tượng dùng để lập trình phân tán đó là XML-RPC Tìm hiểukhái niệm về RPC, XML-RPC, kiến trúc và cách hoạt động của XML-RPC củngnhư kỹ thuật và một số vấn đề khi triển khai XML-RPC trên ngôn ngữ lập trình

Trang 6

Python Phần cuối sẽ là phần chương trình demo tính số pi đơn giản và dùngXML-RPC trên Python để thực thi chương trình.

Chương 1: TÌM HIỂU VỀ NGÔN NGỮ LẬP TRÌNH PYTHON

1.1 Lịch sử ra đời của python

Python là một ngôn ngữ lập trìnhbậc cao cho các mục đích lập trình đa

năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python được

thiết kế với ưu điểm mạnh là dê đọc, dê học và dê nhớ Python là ngôn ngữ cóhình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình.Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím

tối thiểu Vào tháng 7 năm 2018, Van Rossum đã từ chức Leader trong cộng đồng

ngôn ngữ Python sau 30 năm lãnh đạo

Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy

nó tương tự như Perl , Ruby , Scheme , Smalltalk, và Tcl Python được phát triểntrong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý

Ban đầu, Python được phát triển để chạy trên nền Unix Nhưng rồi theo thời gian,

nó đã "bành trướng" sang mọi hệ điều hành từ MS-DOS đến Mac OS,OS/2, Windows , Linux và các hệ điều hành khác thuộc họ Unix Mặc dù sự pháttriển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossumhiện nay vẫn là tác giả chủ yếu của Python Ông giữ vai trò chủ chốt trong việcquyết định hướng phát triển của Python

1.2 Chu trình phát triển của python

Sự phát triển Python đến nay có thể chia làm các giai đoạn:

Python 1: bao gồm các bản phát hành 1.x Giai đoạn này, kéo dài từ

đầu đến cuối thập niên 1990 Từ năm 1990 đến 1995, Guido làm việctại CWI (Centrum voor Wiskunde en Informatica - Trung tâm Toán-Tinhọc tại Amsterdam , Hà Lan) Vì vậy, các phiên bản Python đầu tiên đều doCWI phát hành

Python 2.0 đã được phát hành vào ngày 16 tháng 10 năm 2000 và có

nhiều tính năng mới, bao gồm bộ thu gom rác theo chu kỳ (cycle-detectinggarbage) và hỗ trợ Unicode Với việc phát hành này quá trình phát triển đãđược thay đổi và trở nên minh bạch hơn và cộng đồng hậu thuẫn

Python 3.0 được phát hành năm 2008, sau một thời gian dài thử

nghiệm

Cho tới hiện nay, Python đang có phiên bản 3.7

Trang 7

1.3 Đặc điểm

 Tính đa năng và cho phép sử dụng nhiều phương pháp lập trình

Ngôn ngữ lập trình đơn giản, dê học: Python có cú pháp rất đơn giản, rõ

ràng Nó dê đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lậptrình khác như C++, Java, C#

Miên phí, mã nguồn mở: Chúng ta có thể tự do sử dụng và phân phối

Python, thậm chí là dùng cho mục đích thương mại

 Khả năng di chuyển: Các chương trình Python có thể di chuyển từ nềntảng này sang nền tảng khác và chạy nó mà không có bất kỳ thay đổi nào

Nó chạy liền mạch trên hầu hết tất cả các nền tảng như Windows, macOS,Linux

 Khả năng mở rộng và có thể nhúng

 Ngôn ngữ thông dịch cấp cao

 Thư viện tiêu chuẩn lớn để giải quyết những tác vụ phổ biến

 Hướng đối tượng

 Tạo nguyên mẫu phần mềm

1.5 Các phần tử cơ sở của python

1.5.1 Các từ khóa

Từ khóa keyword là các từ dùng riêng của mỗi ngôn ngữ,được dùng cho những mục đích nhất định và không thể định nghĩa lại nhằm mụcđích khác

Python có ít từ khóa, có tất cả 33 từ khóa, các từ khóa này đều bằng tiếngAnh và viết dưới dạng chữ thường Tùy vào phiên bản Python bạn sử dụng mà sốlượng các từ khóa có thể khác nhau Để lấy danh sách các từ khóa của phiên bảnhiện tại đang dùng, bạn sử dụng thư viện keyword và lệnh print(keyword.kwlist)

1.5.2 Tên và cách đặt tên

Một chương trình sử dụng rất nhiều tên hay còn gọi là địnhdanh để làm tên chương trình, tên hàm, tên biến, tên hằng số… Tên trong Python

có độ dài tuỳ ý Chúng có thể gồm cả chữ cái cả in hoa và in thường, các chữ số

Trang 8

và dấu gạch dưới, nhưng bắt buộc phải bắt đầu bằng một chữ cái hoặc dấu gạchdưới.

Một số quy ước bắt buộc khi đặt tên của Python:

 Ký tự bắt đầu của tên phải là một dấu gạch dưới “_” hoặc một chữ cái(có thể là chữ hoa hoặc chữ thường) Tiếp theo có thể bỏ trống, hoặc lànhiều ký tự, hoặc nhiều con số

 Trong tên không được có dấu cách trắng hoặc các ký tự đặc biệt như:

Một dòng chú thích trong Python bắt đầu với kí tự # Nếu chú thích trênnhiều dòng thì đặt chúng vào trong cặp ngoặc “”

1.6 Các kiểu dữ liệu nguyên thủy

Mỗi ngôn ngữ lập trình đều định nghĩa sẵn một số kiểu dữ liệu cơ bản gọi làkiểu nguyên thủy

Các kiểu dữ liệu trong python bao gồm:

 Kiểu số

 Kiểu chuổi (String)

 Kiểu bộ (tuple)

 Kiểu danh sách (List)

 Kiểu từ điển (dictionary)

1.7 Khai báo các biến

Biến là một vị trí trong bộ nhớ được sử dụng để lưu trữ dữ liệu (giá trị) Biến được đặt tên duy nhất để phân biệt giữa các vị trí bộ nhớ khác nhau Các quy tắc để viết tên một biến giống như quy tắc viết các định danh trong python.Trong Python, bạn không cần khai báo biến trước khi sử dụng, chỉ cần gán cho biến một giá trị và nó sẽ tồn tại Cũng không cần phải khai báo kiểu biến, kiểu biến sẽ được nhận tự động dựa vào giá trị mà bạn đã gán cho biến

Python có một số kiểu dữ liệu thông dụng sau:

Trang 9

 int, long: số nguyên (trong phiên bản 3.x long được nhập vào trong kiểu int) Độ dài của kiểu số nguyên là tùy ý, chỉ bị giới hạn bởi bộ nhớ máy tính.

 float: số thực

 complex: số phức, chẳng hạn 5+4j

 list: dãy trong đó các phần tử của nó có thể được thay đổi, chẳng hạn [8, 2, 'b', -1.5] Kiểu dãy khác với kiểu mảng (array) thường gặp trong các ngôn ngữ lập trình ở chỗ các phần tử của dãy không nhất thiết có kiểu giống nhau Ngoài ra phần tử của dãy còn có thể là một dãy khác

 tuple: dãy trong đó các phần tử của nó không thể thay đổi

 str: chuỗi ký tự Từng ký tự trong chuỗi không thể thay đổi Chuỗi ký

tự được đặt trong dấu nháy đơn, hoặc nháy kép

 dict: từ điển, còn gọi là "hashtable": là một cặp các dữ liệu được gắn theo kiểu {từ khóa: giá trị}, trong đó các từ khóa trong một từ điển nhất thiết phải khác nhau Chẳng hạn :

{1: "Python", 2: "Pascal"}

 set: một tập không xếp theo thứ tự, ở đó, mỗi phần tử chỉ xuất hiện một lần

Trang 10

Chương 2: CƠ SỞ VỀ MẠNG MÁY TÍNH

2.1: Định nghĩa mạng máy tính

Mạng máy tính hay hệ thống mạng là sự kết hợp các máy tính lại với

nhau thông qua các thiết bị nối kết mạng và phương tiện truyền thông (giao thứcmạng, môi trường truyền dẫn) theo một cấu trúc nào đó và các máy tính này traođổi thông tin qua lại với nhau

Hình 2.1 Mô hình liên kết các máy tính trong mạng

2.2 Phân loại mạng máy tính

Dựa theo sự phân bố của mạng nên được chia thành các loại mạng nhưsau:

+ GAN (Golba Area Network) : GAN là mạng kết nối máy tính từ các châu

lục khác nhau Thông thường kết nối này được thực hiện thông qua mạng viênthông và vệ tinh

Trang 11

+ WAN (Wide Area Network): WAN còn gọi là "mạng diện rộng", dùngtrong vùng địa lý lớn thường cho quốc gia hay cả lục địa, phạm vi vài trăm chođến vài ngàn km Chúng bao gồm tập hợp các máy nhằm chạy các chương trình

cho người dùng Các máy này thường gọi là máy lưu trữ(host) hay còn có tên

là máy chủ, máy đầ cuối (end system)

+ MAN (Metropolitan Area Network): MAN hay còn gọi là "mạng đô thị",

là mạng có cỡ lớn hơn LAN, phạm vi vài km Nó có thể bao gồm nhóm các vănphòng gần nhau trong thành phố, nó có thể là công cộng hay tư nhân

+ LAN (Local Area Network): LAN hay còn gọi là "mạng cục bộ", là mạng

tư nhân trong một toà nhà, một khu vực (trường học hay cơ quan chẳng hạn) cócỡ chừng vài km.

2.3 Một số kiến truc mạng thường dùng

Trang 12

Hình 2.4 Start Topology

2.4 Giao thức mạng

Giao thức mạng (Protocol) là tập hợp các quy tắc và quy ước điều khiểnviệc trao đổi thông tin (truyền thông) giữa các hệ thống máy tính hoặc các thiết bịmáy tính với nhau gọi là giao thức, và các máy tính muốn giao tiếp với nhau thìphải có chung 1 giao thức

Có nhiều loại giao thức được sử dung trong mạng máy tính như nhưNetBEUI, DLC,…nhưng giao thức dduojc sử dung phổ biến hiên nay là TCP/IP

2.4.1 Giao thức TCP/IP

1 Giao thức IP

IP (Internet Protocol) là một giao thức hướng dữ liệu

được sử dụng bởi các máy chủ nguồn và đích để truyền dữ liệu trong một liênmạng chuyển mạch gói Nhiệm vụ chính là cung cấp khả năng kết nối các mạngcon thanh liên kết mạng để truyền dữ liệu

2 Giao thức TCP

TCP là giao thức hướng kết nối, tạo ra đường truyềntin cậy giữa các thiết bị, thể hiện ở việc dữ liệu gửi luôn luôn đúng đích và theothứ tụ khi được gọi

2.4.2 Giao thức UDP

UDP (User Datagram Protocol) là giao thức theo hướngkhông liên kết, không cần thiết lập các kết nối trước, được sử dụng thay thế choTCP, không đảm bảo độ tin cậy khi truyền tin, thường được dụng trong các ứngdụng truyền trực tiếp

2.5 Các mô hình hoạt động của mạng máy tính

Mô hình hoạt động của máy tính được chia thành 2 loại:

+ Mô hinh hoạt động ngang hàng (Peer to Peer)+ Mô hình máy chủ/máy khách (Clienr/Server)

Trang 13

Chương 3: LẬP TRÌNH ỨNG DỤNG PHÂN TÁN VỚI XML-RPC TRÊN PYTHON

3.1 Tổng quan về RPC

 RPC (Remote Procedure Call) là kỹ thuật để xây dựng các ứng dụng phân tántheo mô hình Client/Server

 Là lời gọi thủ tục từ xa, mở rộng của lời gọi thủ tục cục bộ thông thường, là

cơ chế cho phép một chương trình có thể gọi thực thi một thủ tục (hay hàm)trên một máy tính khác (server)

 Sử dụng RPC sẽ giúp người lập trình sẽ tránh được các bước tiết trong lậptrình mạng

3.2 XML-RPC là gì ?

XML-RPC là một cài đặt của RPC trên nền giao thức HTTP, sửdụng ngôn ngữ XML để mã hoá và trao đổi dữ liệu Với nó, một khách hàng cóthể gọi các phương thức với các tham số trên một máy chủ từ xa và lấy lại dữ liệu

có cấu trúc XML-RPC được thiết kế đơn giản nhất có thể, đồng thời cho phépcác cấu trúc dữ liệu phức tạp được truyền, xử lý và trả về

Trang 14

+ SOAP: SOAP cũng là một cài đặt RPC trên giao thức HTTP gần giốngnhư XML-RPC.

Vậy tại sao lại sử dụng XML-RPC ?

XML-RPC khá đơn giản so với CORBA và SOAP Và hơn thế,

XML-RPC hoạt động khá tốt và cài đặt tương đối đơn giản với các ngôn ngữ lập trình web phổ biến như PHP, Perl, Python Với lý do đó, XML-RPC là sự lựa chọn khá lý tưởng để phát triển các ứng dụng web qui mô nhỏ

Và dĩ nhiên, XML-RPC vẫn có thể được cài đặt với các ngôn ngữ lập trình desktop như C/C++, Java, và thậm chí với Microsoft NET

3.4 XML-RPC hoạt động như thế nào

Các chương trình được viết trên máy chủ (server), những máy khách(client) dùng các cú pháp khác nhau tùy vào ngôn ngữ lập trình (c,c++, java,python,…) để gọi chương trình, yêu cầu thực thi sẽ được mã hóa thành ngôn ngữXML và gửi đến máy chủ thông qua giao thức HTTP, máy chủ giải mã, thực thiyêu cầu và trả về kết quả cho client theo cách tương tự

Hình 3.1 Cách hoạt động của XML-RPC

Trang 15

Hình 3.2 Kiến trúc server của XML-RPC

 Server xử lý yêu cầu của client gửi đến thông qua các RPC handle tương ứng

3.6 Xây dựng ứng dụng phân tán XML-RPC trên python

1 Khai báo máy server, mô-đun SimpleXMLRPCServer chứa các lớp để

tạo nền tảng và cho biết nơi lắng nghe các yêu cầu gửi đến

server=SimpleXMLRPCServer(('localhost',9000),logRequests=True )

2 Sau đó, chúng ta định nghĩa một hàm là một phần của dịch vụ vàđăng ký hàm để máy chủ biết cách gọi nó

3 Đưa máy chủ vào vòng lặp vô hạn nhận và trả lời các yêu cầu

3.7 Các đối tượng, hàm được sử dụng trong XML-RPC trên Python

Máy khách (Client)

 Đối tượng ServerProxy

Một ServerProxycá thể có một phương thức tương ứng với mỗi cuộcgọi thủ tục từ xa được chấp nhận bởi máy chủ XML-RPC Việc gọi phươngthức thực hiện một RPC, được gửi đi bằng cả tên và ký hiệu đối số (ví dụnhư tên phương thức tương tự có thể bị quá tải với nhiều chữ ký đốisố) RPC kết thúc bằng cách trả lại một giá trị, có thể một trong hai trở lại

dữ liệu trong một loại tuân thủ QTI hoặc một Faulthoặc ProtocolError đối

Ngày đăng: 07/03/2019, 16:53

TỪ KHÓA LIÊN QUAN

w