T ạo một add-in nhằm truy cập Microsoft Visual Studio .Net IDE 2003 để lấy thông tin về lỗi lập trình của người học/lậptrình viên, sau đó gọi hàm (từ ph ần webservice nêu trên) để thực[r]
Trang 1VÕ ĐỨC HIỀN – MSSV: 10102056
L ỚP : 01CNPM
Thành phố Hồ Chí Minh, Tháng 01 - 2006
Trang 2Luận văn tốt nghiệp là một trong những sự kiện quan trong đời người , và ngày hôm nay chúng em đã hoàn thành được điều ấy Và điều mà chúng em muốn nói đến đầu tiên là lời chân thành cảm ơn sâu sắc đến bậc
đạt những kiến thức vô cùng quý báo để cho chúng em
nay
Và đặc biệt cảm ơn đến thầy Nguyễn Chánh Thành, người đã tận tình hướng dẫn chúng em thực hiện tốt đề tài này
Và cũng xin gởi lời cảm ơn đến các bạn, những người đã có những gớp ý chân thành và quý giá trong
tài, nhưng ở lần đầu tiên nên cũng khó tránh khỏi
những vương mắc và sai sót Chúng em rất mong nhận được những ý kiến đóng góp, và sự hướng dẫn chân tình
TP HCM, Tháng 1 / 2006
Trang 3Chương I: GIỚI THIỆU VỂ ĐỀ TÀI1
I Gi ới thiệu1
II.Ch ức năng1
Chương II: KIẾN THỨC MÔI TRƯỜNG PHÁT TRIỂN VÀ ADD-IN2
I Môi trường phát triển DTE2
I.1 Đối tượng DTE2
I.2 Thêm m ột tham chiếu tới không gian tên EnvDTE4
I.3 Tham chi ếu đối tượng DTE 5
I.4 Nh ững đối tượng chính trong project5
I.4.1 Đối tượng Events5
I.4.2 Đối tượng BuildEvents6
I.4.3 Đối tượng CommandEvents7
I.4.4 Đối tượng TaskListEvents8
I.4.5 Đối tượng OutputWindowEvents9
I.4.6 Đối tượng Window10
I.4.7 Đối tượng OutputWindowPane10
II K ỷ thuật Add-In11
II.1 T ạo một đối tượng Add-in12
II.2 Các bước tạo đối tượng Add-in bằng Wizard12
II.3 K ết quả các lệnh của đối tượng Add-in14
II.4 Để phục hồi các lệnh của đối tượng Add-in tới menu14
II.5 Điều khiển đối tượng Add-In với Add-In Manager15
II.6 Để nạp một đối tượng Add-In ngay tức thì16
II.7 Ch ỉ định Add-in nạp lên khi môi trường khởi động16
II.8 Tri ệu gọi các đối tượng Add-In thông qua dòng lệnh Devenv17 II.9 Đăng ký đối tượng Add-In17
II.10.Các s ự kiện chính trong Add-In project19
II.10.1 Phương thức OnConnect19
II.10.2 Phương thức OnStartupComplete21
II.10.3 Phương thức OnAddInsUpdate22
II.10.4 Phương thức OnBeginShutdown23
II.10.5 Phương thức OnDisconnection24
Chương III: KIẾN THỨC WEB SERVICE26
I Gi ới thiệu về Web Service26
I.1 V ấn đề chia sẽ dữ liệu26
I.2 Gi ải quyết bằng phát triển các ứng dụng phân tán26
I.3 Web Service27
I.3.1 Các đặc điểm của Web service27
I.3.2 L ợi ích khi sử dụng Web service28
Trang 4ần của Web service29 II.2.1 Web service Directories29
II.2.2 Web service Discovery30
II.2.3 Web service Description30
II.2.4 Web service Wire Format30
II.3 Giao ti ếp giữa Client và Web service31
III Giao th ức triệu gọi Web Services31
III.1 HTTP-GET31
III.2 HTTP-POST33
III.3 SOAP33
IV Xây d ựng, triển khai và sử dụng Web Service34
IV.1 Xây d ựng Web service34
IV.2 Tri ển khai Web service36
IV.2.1 Tri ển khai Web service bằng cách copy36
IV.2.2 Các thành ph ần được triển khai trong Web service37 IV.2.3 S ử dụng Web service38
IV.2.3.1 Thêm Web Reference vào ứng dụng khách(client)38 IV.2.3.2 Phát sinh l ớp Proxy40
IV.2.3.3 T ạo một đối tượng của lớp Proxy41
IV.2.3.4 Truy xu ất Web Service sử dụng một đối tượng proxy42
I.2.1 Xây d ựng ứng dụng Admin Website
và Web Service theo mô hình đa tầng52
I.2.2 Xây d ựng Web Client theo mô hình phân tán
Trang 5ữ sử dụng: ASP.NET54 I.2.5 Phân tích các nghi ệp vụ của hệ thồng bằng ngôn ngữ UML55 I.2.6 Xây d ựng add-in55
II Thi ết kế và thực hiện56
II.1 Thi ết kế cơ sở dữ liệu56
II.1.1 Bi ểu đồ quan hệ56
II.1.2 Các b ảng dữ liệu của hệ thống58
II.2.1 Sơ đồ họat động61
II.2.2 Sơ đồ tuần tự chức năng của Add-in63
II.2.3 Sơ đồ tuần tự chức năng Web Admin64
II.2.3.1 Sơ đồ tuần tự chức năng quản lý sách64
II.2.3.2 Sơ đồ tuần tự chức năng quản lý phần trong sách65 II.2.3.3 Sơ đồ tuần tự chức năng quản lý chương66
II.2.3.4 Sơ đồ tuần tự chức năng quản lý mục67
II.2.3.5 Sơ đồ tuần tự chức năng quản lý lỗi68
II.2.3.6 Sơ đồ tuần tự chức năng quản lý thêm mục vào lỗi69 II.2.3.7 Sơ đồ tuần tự chức năng quản lý chi tiết lỗi70
II.2.4 Sơ đồ tuần tự cho chức năng tìm kiếm trong Web Client71 II.3 Ph ần Add-In72
II.3.1 Cài đặt phần Add-in72
II.3.2 Thêm đối tượng Add-in thông qua hộp thoại Add-in Manager73 II.3.3 Hi ển thị danh sách lỗi73
II.3.4 Hi ển trị trang thông tin chi tiết lỗi74
II.4 Ph ần Web Admin75
II.4.9 Màn hình chi ti ết và cập nhật nội dung mục80
II.4.10.Màn hình thêm m ục mới81
II.4.11.Màn hình qu ản lý lỗi81
Trang 6ục cho lỗi83 II.5 Ph ần Web Client84
II.5.1 Màn hình tìm ki ếm84
II.5.2 Màn hình n ội dung mục liên quan đến lỗi85
II.6 Ph ần Web Service85
I.2 Chưa hoàn thành87
II Hướng phát triển87
Trang 7Hình 2.1: Mô hình đối tượng tự động trên Visual Studio NET3
H ình 2.2: Tạo Add-in project bằng trình Visual Studio Add-in Wizard12
H ình 2.3: Hộp thoại Add-In Manager15
H ình 3.1: Các thành phần của Web service giúp client xác định và gọi các
phương thức của Web service30
Hình 3.2: Thứ tự trong lớp HttpWebClientProtocol.32
H ình 3.3: Hộp thoại New Project34
H ình 3.4: Hộp thoại New Project35
H ình 3.5 Màn hình project Web Services35
H ình 3.6: Màn hình cấu hình IIS36
H ình 3.7: Hộp thoại Properties của trang web37
H ình 3.8: Màn hình Add Web Reference39
H ình 3.9: Hộp thoại Add Web Reference39
H ình 3.10: Hộp thoại Add Web Reference40
H ình3.11: Màn hình hiển thị các file trong Web Services41
Hình 3.12: Tổng quan về bảo mật.42
Hình 3.13: Hộp thoại default Web Site Properties44
Hình 3.14: Hộp thoại Authentication Methods44
Hình 3.15: Mànhình Computer Management46
Hình 3.16: Access Control List50
H ình 4.1: Biểu đồ quan hệ của hệ thống56
Hình 4.2: Sơ đồ hoạt động của hệ thống61
H ình 4.3: Sơ đồ tuần tự chức năng của Add-in63
Hình 4.4: Sơ đồ tuần tự chức năng quản lý sách64
Hình 4.5: Sơ đồ tuần tự chức năng quản lý phần trong sách65
Hình 4.6: Sơ đồ tuần tự chức năng quản lý chương trong sách66
Hình 4.7: Sơ đồ tuần tự chức năng quản lý mục trong sách67
Hình 4.8: Sơ đồ tuần tự chức năng quản lý lỗi68
Trang 8Hình 4.11: Sơ đồ tuần tự chức năng tìm kiếm trong Web Client71 Hình 4.12: Cài đặt hệ thống Add-in v ào Visual Studio NET 200372 Hình 4.13: Hộp thoại Add-In Manager73
Hình 4.30: Màn hình thêm mục vào lỗi84
Hình 4.31: Màn hình tra cứu lỗi84
Hình 4.32: Màn hình nội dung mục liên quan đến lỗi85
Trang 9Bảng 2.1: Sự kiện và hoạt động của đối tượng BuildEvents6
Bảng 2.2: Sự kiện và hoạt động của đối tượng CommandEvents7
Bảng 2.3: Sự kiện và hoạt động của đối tượng TaskListEvents8
Bảng 2.4: Sự kiện và hoạt động của đối tượng OutputWindEvents9
Bảng 2.5: Các tuỳ chọn cho load đối tượng Add-in18
Bảng 2.6: Ý ngh ĩa của cờ CommandPreload18
Bảng 3.1: Kiểu và các giá trị của thuộc tính trong authentication43
Bảng 3.2: Chức năng phân quyền trong bảo mật Authorization51
Bảng 4.9: Chức năng các control trong màn hình quản lý sách75
Bảng 4.10: Chức năng các control trong màn hình chi tiết sách76
Bảng 4.11: Chức năng các control trong màn hình thêm sách mới77
Bảng 4.12: Chức năng các control trong màn hình xoá sách77
Bảng 4.13: Chức năng các control trong màn hình cập nhật sách78
Bảng 4.14: Chức năng các control trong màn hình quản lý phần trong sách79
Bảng 4.15: Chức năng các control trong màn hình quản lý chương trong sách79
Bảng 4.16: Chức năng các control trong màn hình quản lý mục trong sách80
Bảng 4.7: Chức năng các control trong màn hình cập nhật mục81
Bảng 4.18: Chức năng các control trong màn hình thêm mục mới82
Bảng 4.191: Chức năng các control trong màn hình quản lý lỗi82
Bảng 4.20: Chức năng các control trong màn hình cập nhật lỗi83
Trang 10Bảng 4.23: Chức năng các control trong màn hình tra cứu lỗi85
B ảng 4.24: Chi tiết các phương thức 86
Trang 11ĐẠI HỌC DL KỸ THUẬT CÔNG NGHỆ TP.HCM ĐỘC LẬP – TỰ DO – HẠNH PHÚC
144/24 Điện Biên Phủ - Q Bình Thạnh - TPHCM _oOo _
ĐT: 5120254 - 5120294
Khoa: Công Ngh ệ Thông Tin
B ộ môn: Công nghệ phần mềm
Chú ý: Sinh viên ph ải dán nhiệm vụ bản này vào trang thứ nhất
trong tập báo cáo đố án tốt nghiệp
Họ và tên : Nguyễn Duy Hoà MSSV : 10102062
a D ữ liệu ban đầu:
Tìm hiểu Web Service, môi trường phát triển Visual Studio NET 2003 và
kỹ thuật Add-in
b N ội dung:
Phân tích thiết kế các yêu cầu của hệ thống:
Phân tích và thiết kế sơ đồ hoạt động của hệ thống
Phân tích và thiết kế sơ đồ tuần tự của các nhiệp vụ Phân tích và thiết kế cơ sở dữ liệu
Hiện thực các yêu cầu của hệ thống:
Xây dựng phần Add-In vào môi trường phát triển của VS.NET 2003
Xây dựng Web Server theo mô hình 3 lớp
3 Ngày giao nhi ệm vụ đồ án : 3/10/2005
: 9/1/2006
5 H ọ tên giáo viên hướng dẫn : ThS Nguyễn Chánh Thành
Trang 12(Ký và ghi rõ h ọ tên)
PH ẦN DÀNH CHO BỘ MÔN
Người duyệt (chấm sơ bộ):
Đơn vị:
Ngày b ảo vệ:
Điểm tổng quát:
Trang 13Chương I: GI ỚI THIỆU VỂ ĐỀ TÀI
I Gi ới thiệu
Lập trình là một công việc vô cùng khó khăn, đòi hỏi lập trình viên phải
có kiến thức rộng rãi cũng như một kỹ năng lập trình tốt để có thể bắt tay thực
hiện các dự án phần mềm Vấn đề một người lập trình cần có 1 công cụ hỗ trợ
nhằm giải đáp các thắc mắc liên quan đến kiến thức lập trình là nhu cầu rất thiết thực trong quá trình dạy học trong ngành Công nghệ thông tin để có thể có công cụ nào giúp trút bớt gánh nặng trong việc lập trình Đề tài “Xây dựng hệ
th ống hỗ trợ tra cứu lỗi lập trình trong môi trường lập trình Visual Studio NET 2003” mà chúng tôi nhận thật sự là một điều mà không chỉ cá nhân tôi
mà rất nhiều các lập trình viên khác hằng mong ước
Đề tài này xây dựng một công cụ hỗ trợ việc tra cứu lỗi trong môi trường lập trình Visual Studio NET 2003 Công cụ này bao gồm 2 phần; phần add-in tương tác với môi trường phát triển của VS.Net 2003 (IDE), ngoài ra còn hổ trợ thêm một Web Server cho phép phần add-in truy cập tới kho dữ liệu
để nhận về thông tin liên quan đến lỗi Ngoài ra, Web Server còn cho phép các client đăng ký, truy cập và xem các thông tin về lỗi
II Ch ức năng
Đầu tiên, để sử dụng hệ thống hỗ trợ tra cứu lỗi lập trình, người dùng
cần cài đặt công cụ này Hệ thống hỗ trợ tra cứu lỗi có các chức năng sau:
• Sau khi biên dịch, phần Add -in sẽ truy cập vào hệ thống Visual Studio NET 2003 lấy danh sách lỗi, và hiển thị trong tab OutputWindow
• Từ tab OutputWindow này cho phép người dùng click vào hyperlink bên cạnh mã lỗi để mang về thông tin liên quan đến lỗi đó
• Đối với người quản trị cơ sở dữ liệu, họ có thể truy cập vào hệ thống
bằng quyền Admin và quản trị dữ liệu
• Đối với người dùng thông thường, họ có thể đăng ký account, và truy
cập vào trang web để tra cứu các thông tin liên quan đến lỗi
Trang 14Chương II: KI ẾN THỨC MÔI TRƯỜNG PHÁT TRIỂN VÀ
ADD-IN
I Môi trường phát triển DTE
I.1 Đối tượng DTE
Là đối tượng trên cùng trong mô hình đối tượng tự động hoá của bộ Visual Studio
Tất cả các đối tượng và các thành viên trong mô hình tự động hoá Visual
Studio.NET đều dựa trên đối tượng DTE Đối tượng DTE tiêu biểu cho môi
trường phát triển được tích hợp trên Visual Studio.NET và là đối tượng trên cùng trong mô hình hệ thống cấp bậc Nó đặt trong một không gian tên gọi là
EnvDTE Tên của sản phẩm tạo ra trên NET đối với khô ng gian tên này là
“envdte” và được chứa đựng trong một file gọi là envdte.dll Tên thư viện có
dạng như COM là Microsoft Development Environment 7.0” và được chứa
đựng trong file gọi là dte.olb
Đối tượng DTE được cung cấp tới bạn qua phương thức OnConnection
mà bạn cài đặt khi tạo ra một đối tượng Add-In Đối tượng DTE là đối tượng Application trong Visual Basic.
Trang 15Hình 2.1: Mô hình đối tượng tự động trên Visual Studio NET
Trang 16Dim objTextDoc As TextDocument
Dim objEP As EditPoint
DTE
.ItemOperations.NewFile("General\Text File")
Set objTextDoc = DTE
Set objEP = objTextDoc.StartPoint.CreateEditPoint
.ActiveDocument.Object("TextDocument")
objEP.Insert "A test sentence."
End Sub
I.2 Thêm m ột tham chiếu tới không gian tên EnvDTE
Dù bạn chọn đối tượng NET assembly hay loại thư viện dạng COM tuỳ thuộc vào project của bạn Khi bạn tạo một đối tượng Add-in sử dụng trình Add-In Wizard (trong bất kỳ ngôn ngữ nào) hay khi bạn tạo một macro, thì
một tham chiếu tới không gian tên EnvDTE được thiết lập sẵn cho bạn Nếu
bạn muốn truy cập tới phần bên ngoài của các đối tượng tự động hoá của các
đối tượng macro hay các đối tượng Add-in được tạo bởi trình Add-In Wizard
thì bạn phải thiết lập bằng tay tham chiếu này
Để thêm một tham chiếu tới không gian tên EnvDTE trong Visual C# NET, ta thực hiện như sau:
1 Trong khung Solution Explorer, bạn click phải chuột trên project node hoặc trên Reference node và chọn AddReference
2 Trong hộp thoại Add Reference, click vào tab có kiểu component
mà bạn muốn, như NET hay COM Tìm trong danh sách các component và chọn envdte hay Microsoft Development Environment 7.0 , sau đó click OK
Trang 17I.3 Tham chi ếu đối tượng DTE
Một khi project của bạn đã có tham chiếu tới môi trường EnvDTE, thì
bạn có thể thiết lập một tham chiếu tới đối tượng DTE theo đoạn code sau:
trường Visual Studio NET IDE hiện hành đang chạy
Nhưng để truy cập vào bên trong môi trường phát triển của VS.NET
2003, lấy mã lỗi và hiển thị trên VS.NET 2003, chương trình cần sử dụng các
đối tượng sau đây làm việc như các macro: đối tượng Events, BuildEvents,
CommandEvents, TaskListEvents, OutputWindowEvents, Window,
OnStartupComplete, OnAddInsUpdate, OnBeginShutdown, OnDisconnection
I.4 Nh ững đối tượng chính trong project
I.4.1 Đối tượng Events
Cho phép truy cập tới tất cả các sự kiện trong mô hình mở rộng Các sự
kiện này cũng có thể được phơi bày từ các đối tượng chỉ định bên trong mô
hình mở rộng DTE
DTE
Events
Nhận xét:
Mô hình tự động hoá chứa đựng một đối tượng sự kiện gốc Events mà
các clients cùng loại được viết ở bất kì ngôn ngữ nào cũng có thể tham chiếu
tới các sự kiện tự động hoá Các công cụ IDE , các loại project khác nhau, có
thể thêm các sự kiện bổ sung tới đối tượng Events mà chúng chỉ định
Trang 18Minh hoạ:
Public Module Module1
Dim WithEvents bldevents As BuildEvents
Dim applicationObject As EnvDTE.DTE
Sub EventsExample()
Dim addInInstance As EnvDTE.AddIn
applicationObject = CType(Application, EnvDTE.DTE)
bldevents = CType(applicationObject.Events.BuildEvents, EnvDTE.BuildEvents)
I.4.2 Đối tượng BuildEvents
Cung cấp các sự kiện cho giải pháp tạo dựng
DTE
Events
BuildEvents
Thuộc tính:
public BuildEvents BuildEvents {get;}
Trả về đối tượng BuildEvents, cung cấp các sự kiện cho các giải pháp
Trang 19I.4.3 Đối tượng CommandEvents
Cung cấp các sự kiện dòng lệnh cho các client tự động hoá
DTE
Events CommandEvents
Thuộc tính:
public CommandEvents CommandEvents(
string Guid, int ID
Tham số:
Guid: được yêu cầu Đây là GUID cho nhóm lệnh Nếu Guid là Null ho ặc Nothing, thì CommandEvents trả về một đối tượng CommandEvents tượng trưng cho tất cả các lệnh trong môi trường
ID: được yêu cầu Một chỉ mục trong nhóm lệnh tương ứng với
lệnh cụ thể Nếu ID là Null hay Nothing, thì CommandEvents trả về một đối tượng CommandEvents tượng trưng cho tất cả các lệnh trong nhóm
Giá trị trả về:
Một đối tượng CommandEvents
Các sự kiện:
AfterExecute Xuất hiện sau khi một lệnh thực thi
BeforeExecute Xuất hiện trước khi một lệnh thực
thi
B ảng 2.2: Sự kiện và hoạt động của đối tượng CommandEvents
Nhận xét:
Đối tượng CommandEvents được trả về bởi thuộc tính
CommandEvents c ủa đối tượng Events
Minh hoạ:
<System.ContextStaticAttribute()> Public WithEvents
CommandEvents As
EnvDTE.CommandEvents
Trang 20I.4.4 Đối tượng TaskListEvents
Cung cấp các sự kiện cho các thay đổi tới danh sách tác vụ
Filter: tu ỳ chọn Đây là tên của danh mục tác vụ Nếu Filter được
hỗ trợ, thì đối tượng TaskListEvents chỉ cung cấp các sự kiện cho danh mục
đó Nếu Filter không được hỗ trợ một giá trị danh mục hợp lệ, thì thuộc tính
một tác vụ trong Task List
TaskRemoved Xuất hiện khi một tác vụ bị loại bỏ khỏi Task List
B ảng 2.3: Sự kiện và hoạt động của đối tượng TaskListEvents
Ghi chú:
Đối tượng TaskListEvents được trả về bởi DTE.Events
Trang 21I.4.5 Đối tượng OutputWindowEvents
Cung cấp các thay đổi tới cửa sổ Output
Khung không cần phải tồn tại khi đối tượng
OutputWindowEvents được tạo Nếu khung được tạo bất kỳ lúc nào thì các
sự kiện sẽ được tự động cung cấp cho nó
Các sự kiện
PaneAdded Xuất hiện khi một khung cửa sổ Output mới được tạo
PaneClearing Xuất hiện khi tất cả văn bản trong khung cửa sổ Output bị xoá
PaneUpdated Xuất hiện khi văn bản mới được thêm tới một khung trong cửa
Trang 22I.4.6 Đối tượng Window
Đối tượng Window hiển thị một cửa sổ trong môi trường
Dim objTW As TextWindow
Dim objPane As TextPane
Dim objStart As TextPoint
MsgBox("It begins at line " & Str(objStart.Line) & ", column
" & Str(objStart.LineCharOffset) & ".")
objPane.Window.Close()
End Sub
I.4.7 Đối tượng OutputWindowPane
Hiển thị một khung trong cửa sổ Output
Cửa sổ Output hiển thị kết quả dạng văn bản Cửa sổ Output có thể có
một hay nhiều khung, được hiển thị bởi đối tượng OutputWindowPane Mỗi
công cụ IDE sự dụng một khung cửa sổ output khác nhau Các khung được
Trang 23' Create a tool window handle for the Output window
Dim win As Window =
DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput)
' Create handles to the Output window and its panes
Dim OW As OutputWindow = win.Object
Dim OWp As OutputWindowPane
' Add a new pane to the Output window
OWp = OW.OutputWindowPanes.Add("A New Pane")
' Add a line of text to the new pane
OWp.OutputString("Some Text")
End Sub
II K ỷ thuật Add-In
Để tạo một công cụ cho một nhiệm vụ hoặc để tạo một công cụ để giúp
những lập trình viên khác tạo ra các phần mền của họ, bạn có thể sử dụng mô hình với kỹ thuật tự động trên Visual Studio NET mô hình với kỹ thuật tự động, được biết đến trong phiên bản trước của Visual Studio NET như mô hình có khả năng mở rộng, là một giao diện lập trình cho phép bạn truy cập tới các thủ tục bên dưới có chạy môi trường phát triển được tích hợp, cho phép
hiệu chỉnh, thao tác và tự động hoá nó Chẳng hạn, bạn có thể tạo các dự án và các mục lục dự án một cách lập trình hay tự động hoá việc xây dựng một dự án
và các tiến trình triển khai dự án
Chú ý: Khả năng mở rộng là khả năng cho phép phát triển và mở rộng
chức năng của IDE Kỹ thuật tự động hoá nói đến mã được tạo ra theo thao tác
của user và các công cụ mà tự động hoá các tác vụ trong môi trường và chạy IDE theo cách được lập trình
Bạn có thể truy cập tới mô hình tự động hoá thông qua các macro trên
VS.NET (VSMacros), b ằng cách tạo các mở rộng cho IDE dc gọi là Add-in,
hay bằng cách cài đặt một mục mới hoặc các Add Project wizard Các
Add-in được biên dịch thành các app mà có thể thao tác với môi trường làm việc và các tác vụ tự động hoá Các Add -in có thể được triệu gọi theo một trong các
Trang 24cách khác nhau, bao gồm Add-in Manager, toolbar command hay các nút, các
dòng lệnh, hay thông qua các sự kiện như khởi động IDE
Trong phần hỗ trợ tới mô hình đối tượng chung được cung cấp bởi Visual Studio NET tới tất cả các ngôn ngữ lập trình , các công cụ và các gói
của nó, riêng với các ngôn ngữ lập trình trên Visual Studio NET cũng có thể cung cấp các bổ sung kỹ thuật riêng của chúng tới mô hình đối tượng tự động hoá nhằm hỗ trợ các đặc điểm riêng biệt và các thành phần Tất yếu bạn có thể
tạo một đối tượng Add-in mà làm việc rất tốt với bấ t kỳ ngôn ngữ nào trên Visual Studio NET, hay đối với ngôn ngữ nào được ghép vào để cung cấp
những điểm đặc biệt của một ngôn ngữ riêng biệt, chẳng hạn VB hay VC++
II.1 T ạo một đối tượng Add-in
Trình Add-in Wizard cho phép tạo một đối tượng Add-in với đầy đủ các khung chức năng mà có thể chạy ngay sau khi bạn hoàn tất nó Sau khi trình Add-in Wizard tạo một bộ khung cơ bản, bạn có thể thêm code tới nó và hiệu
II.2 Các bước tạo đối tượng Add-in bằng Wizard
ạo Add-in project bằng tr ình Visual Studio Add-in Wizard
Trang 25Trình Add-in Wizard cho phép bạn cung cấp một tên hiển thị và mô tả
cho đối tượng Add-in, cả hai xuất hiện trong hộp thoại Add-In Manager Bạn
có thể chọn để cho trình Wizard tạo mã mà cho phép thêm một lệnh tới menu
Tools để load và triệu gọi đối tượng Add-in Khi trình Wizard hoàn tất, bạn có
được môt project mới với một môđun đơn giản để cài đặt đối tượng Add-in
Bạn cũng có được setup project để tạo ra file msi mà có thể được dùng để cài
đặt đối tượng Add-in trên hệ thống khác (hay để cập nhật việc đăng ký của đối
tượng Add-in trên máy triển khai mà đôi khi là cần thiết đối với những gì mà
bạn làm với đối tượng Add-in của bạn)
Các bước thực hiện:
1 Tạo một VS Add-In project mới Bạn có thể tìm thấy project này từ
mục Extensibility Projects bên dưới Other Projects
2. Chọn một ngôn ngữ từ khung Select a Programming Language
Điều này cho phép bạn chọn một ngôn ngữ đối với đối tượng Add-in được tạo ra
3. Chọn một hoặc nhiều ứng dụng từ khung Select an Application Host Điều này cho phép bạn chọn các ứng dụng mà bạn cũng muốn
chạy đối tượng Add-in sau khi tạo
4 Nhập vào tên và mô tả cho đối tượng Add-in của bạn trong khung
Enter a Name and Description Tên này sẽ được hiển thị trong
danh sách Available Add-Ins của hộp thoại Add-In Manager và cho các user biết được đối tượng Add-in làm gì, làm như thế nào, và hơn
thế nữa
5. Trong khung Choose Add-in Options, hãy chỉ định những gì mà
bạn muốn đối tượng Add-in xuất hiện trong menu Tools, khi nào bạn
muốn đối tượng Add-in xuất hiện, và những gì mà đối tượng sẽ cho phép đối với các đối tượng khác hoặc không Điều này cho phép bạn
chỉ định các tuỳ chọn theo thói quen chắc chắn cho đối tượng Add-in
của bạn
6. Trong khung Choosing Help About Information, hãy chỉ định
những gì bạn muốn về một hộp thông tin Help About, và nếu thế,
Trang 26hãy chỉ định thông tin mà bạn muốn hiển thị Điều này cho phép bạn
tạo một cửa sổ Help About chứa các thông tin về phiên bản, thông tin hỗ trợ, thông tin bản quyền cho đối tượng Add-in của bạn và hơn
thế nữa Sau 6 bước, các tuỳ chọn mà bạn đã chọn được hiển thị trong một trang tổng kết
7. Chọn Finish để tạo đối tượng Add-in
Lúc này bạn có được một đối tượng Add -in với đầy đủ các chức năng, nhưng còn rỗng
II.3 K ết quả các lệnh của đối tượng Add-in
Khi bạn tạo ra một đối tượng Add-in sử dụng trình Add-in Wizard và
sau khi chạy nó, một thực thể khác của VS.NET khởi động, cho phép bạn kiểm tra và bãy lỗi đối tượng tổng kết Một hoặc nhiều lệnh cho đối tượng Add -in được đặt trên một hoặc nhiều menu, chẳng hạn menu Tools Sau khi bạn hoàn
tất bước bãy lỗi đối tượng Add-in và sau đó đóng lại thực thể thứ hai của VS.NET, thông tin về lệnh sẽ được lưu lại
II.4 Để phục hồi các lệnh của đối tượng Add-in tới menu
Các bước thực hiện:
1 Xây dựng setup project đã bởi trình wizard
2 Đóng tất cả các thực thể của VS.NET
3 Chạy file msi từ setup project
4 Khởi động lại VS.NET
Từ bây giờ, khi chạy VS.NET, các lệnh của đối tượng Add-in sẽ được
hiển thị trên các menu Trình setup project sẽ xây dựng và cài đặt nhanh hơn
nếu bạn xác định nó loại trừ môđun kết hợp có thể phân phối lại khi chạy trên NET Runtime
Trang 27II.5 Điều khiển đối tượng Add-In với Add-In Manager
Add-In Manager là một công cụ để load và loại bỏ các đối tượng Add-in trong IDE, và rất tiện để chỉ định các hành vi load lên của chúng Add -In Manager liệt kê tất cả các đối tượng được đăng ký hiện thời Sử dụng Add-In Manager, bạn có thể load hay unload một đối tượng Add-In ngay tức thì, hay
chỉ định một đối tượng Add-In khi môi trường phát triển khởi động hoặc khi nó được khởi động thông qua một dòng lệnh, như với một thao tác tạo dựng
Chỉ có các đối tượng được đăng ký xuất hiện trong danh sách các đối tượng Add-In có hiệu lực
Chú ý: Bạn có thể dùng phím TAB để di chuyển tới các dòng lệnh và
phần Startup, thay vì bạn phải sử dụng tổ hợp phím ALT + S và ALT + C để di chuyển tới lui giữa các vùng chọn
H ình 2.3: H ộp thoại Add-In Manager
Các bước thực hiện:
1 Chọn nó từ danh sách
2. Chọn vào check box trong dòng Startup, và click OK
Nếu đối tượng Add-in có một giao diện (interface), thì nó sẽ xuất hiện, hay đối tượng Add-in có thể xuất hiện như m ột nút tên toolbar hay một lệnh trên menu tùy theo bạn chọn lựa, điều này phụ thuộc vào cách bạn lập trình cho
Trang 28đối tượng Add-in Nếu đối tượng Add-in không có một giao diện đồ họa (UI),
nó sẽ load lên một cách âm thầm và bắt đầu chạy
Mẹo: Nếu bạn cố load một đối tượng mà không thể được định vị thì
trình Add-In Manager sẽ thoát bỏ đăng ký nó để nó không còn xuất hiện trong danh sách nữa
II.6 Để load một đối tượng Add-In ngay tức thì
Các bước thực hiện:
1 Chọn nó từ danh sách
2. Chọn vào check box trong dòng Startup, và click OK
Nếu đối tượng Add-in có một giao diện (interface), thì nó sẽ xuất hiện, hay đối tượng Add-in có thể xuất hiện như một nút tên toolbar hay một lệnh trên menu tùy theo bạn chọn lựa, điều này phụ thuộc vào cách bạn lập trình cho đối tượng Add-in Nếu đối tượng Add-in không có một giao diện đồ họa (UI),
nó sẽ load lên một cách âm thầm và bắt đầu chạy
Mẹo: Nếu bạn cố load một đối tượng mà không thể được định vị thì trình Add-In Manager sẽ thoát bỏ đăng ký nó để nó không còn xuất hiện trong danh sách nữa
II.7 Ch ỉ định Add-in nạp lên khi môi trường khởi động
Các bước thực hiện:
1 Chọn đối tượng Add-in từ danh sách
2. Chọn ô Load at startup trong dòng Startup
Lần sau khi môi trường khởi động, thì đối tượng Add-in sẽ load lên nếu
nó có hiệu lực
Trang 29II.8 Tri ệu gọi các đối tượng Add-In thông qua dòng lệnh Devenv
Thông thường khi sử dụng trình Add-In Manager để khởi động các đối
tượng Add-in, bạn cũng có thể gọi một đối tượng Add-in bằng cách dùng dòng
lệnh Devenv Để làm điều này, hãy sử dụng khoá chuyển đổi /command với
cấu trúc như sau:
devenv /command <command>.<name>
Ở đây, command.name là tên lệnh trong đối tượng Add-in của bạn
II.9 Đăng ký đối tượng Add-In
Một khi một đối tượng Add-In được tạo ra, nó phải được đăng ký như là
một thành phần COM với các bản Microsoft Windows Trình Add-in Wizard
sẽ tự động thực hiện việc đăng ký này cho bạn, nhưng nếu bạn không sử dụng trình Add-in Wizard để tạo ra đối Add-in, bạn phải làm điều này bằng tay theo các bước sau:
1 Mở cửa sổ dòng lệnh
2 Nếu bạn đang sử dụng VB.NET hay VC#.NET, hãy đánh
regasm <name>.dll
ở đây, <name> là tên của đối tượng Add-In
Nếu bạn sử dụng VC++.NET, hãy dùng regsvr32
Sau khi một đối tượng Add -in được đăng ký, nó được nhận ra bởi môi
trường triển khai được tích hợp (IDE) Để liệt kê nó trong hộp thoại Add-In Manager, bạn phải tạo ra các khoá đăng ký cho nó, như dòng bên dưới Trong vài trường hợp, sẽ là có ích để biết được những gì mà các khoá đăng ký
được giả tạo bởi trình Add-In Wizard Trình Add-In Wizard tạo một mã
chương trình thống nhất ( progID) cho mỗi đối tượng Add -in và chèn nó vào
trong phần đăng ký Một progID bao gồm tên của dự án và theo sau là tên của
môđun lớp, như MyProj.MyClass
Chú ý rằng HKEY_CURRENT_USER được dùng để làm cho đối tượng Add-in có hiệu lực chỉ đối với user hiện thời Để làm cho nó có hiệu lực đối với
tất cả các user, hãy thay bằng HKEY_LOCAL_MACHINE Mỗi ProgID chứa đựng cặp tên/giá trị sau:
Trang 30• FriendlyName – tuỳ chọn Là tên xuất hiện trong danh sách các đối tượng Add-In có hiệu lực của trình Add-In Manager Giá trị này là
tuỳ chọn nhưng nó có yêu cầu sử dụng cao
• Description – tuỳ chọn Là một chuỗi được hiễn thị bên dưới của
hợp thoại Add-in Manager khi đối tượng Add -in được thêm vào
Giá trị này là tuỳ chọn nhưng nó có yêu cầu sử dụng cao
• LoadBehavior – tuỳ chọn Một trường các bít kiểu DWORD với các
cờ theo sau (đối với Visual Studio, Visual Basic và VSA) Các giá trị này là tuỳ chọn nhưng nó có yêu cầu sử dụng cao
ID_UNLOADED 0 Đối tượng Add-in không được load
ngay lập tức
ID_STARTUP 1 Đối tượng Add-in nên được load khi
IDE khởi động
ID_COMMAND_LINE 4 Đối tượng Add-in nên được load khi
devenv được triệu gọi từ dòng lệnh
với một thành phần chuyển khoá
B ảng 2.5: Các tuỳ chọn cho load đối tượng Add-in
• CommandPreload – tuỳ chọn Là một giá trị dạng Boolean cho biết
khi nào là lần đầu tiên mà Visual Studio đã khởi động từ khi đối tượng Add-in được đăng ký Chẳng hạn, cờ này cho phép bạn chỉ định mỗi khi một đối tượng Add-in được load để đặt các lệnh trong các menu, và ngay sau đó nó không đượ c load cho đến khi một user
cuối cùng sử dụng một trong các lệnh này, mà sau đó load lên theo yêu cầu đối tượng Add-in trong tất cả các thực thể kế tiếp của IDE
0 Cho biết đối tượng Add-in đã cài đặt các lệnh của nó
1 Cho biết đối tượng Add-in vẫn cần cài đặt các lệnh
của nó
B ảng 2.6: Ý ngh ĩa của cờ CommandPreload
Trang 31Bạn có thể đánh dấu phương thức OnConnection mà bạn cài đặt để biết
với loại kết nối là ext_cm_UISetup Nếu thế, bạn có thể thực thi
• CommandLineSafe – tuỳ chọn Cho biết dù đối tượng Add -in có
được thiết kế hay không để tránh hiển thị một giao diện người dùng
(UI) khi được triệu gọi bởi dòng lệnh devenv
• SatelliteDllPath và SatelliteDllName – tuỳ chọn Các mục tên và
mô tả trong phần đăng ký có thể được định vị Nếu giá trị của chúng
bắt đầu với dấu # và theo sau đó là một số nguyên có thể chuyển
kiểu, thì giá trị dạng chuỗi được hiển thị trong hợp thoại Add-in Manager là giá trị của mã nguồn được chỉ định bên trong file vệ tinh trung tâm DLL File vệ tinh trung tâm DLL này được xác định bởi
một hoặc hai mục đăng ký có giá trị tuỳ chọn sau :
o SatelliteDllPath – Nếu được hiển thị, giá trị này là một tên
đường dẫn đầy đủ dạng chuổi chỉ tới một thư mục, kết thúc
bởi một dấu (\) Trình Add-in Manager tìm kiếm file Dll vệ
tinh trung tâm trong khu vực bởi sự trùng khớp đường dẫn
của giá trị
o SatelliteDllPath, mã khu vực của máy được cài đặt, dấu ( \),
và giá trị SatelliteDllName
SatelliteDllName – Là giá trị dạng chuỗi chứa tên file Thư mục
chứa file hoặc là thư mục chứa các thư viện liên kết động (DLL),
hoặc là thư mục được tính trước được mô tả cho SatelliteDllPath
II.10 Các s ự kiện chính trong Add-In project
II.10.1 Phương thức OnConnect
Xuất hiện khi một đối tượng Add-In được load vào môi trường
void OnConnection(
object Application,
ext_ConnectMode ConnectMode, object AddInInst,
object[] custom );
Trang 32Tham số:
Application: đối tượng có khả năng mở rộng ở mức cao
ConnectMode: Một hằng số ext_cm chỉ định các đối tượng Add-In được
nạp
AddInInst: một đối tượng Add-In đại diện cho một thực thể của Add-In
Custom: Một mảng các biến mà bạn có thể dùng để cung cấp cho dữ liệu
bổ sung
Nhận xét:
OnConnect là một phương thức mà khi giao diện dạng host của nó
(IDTExtensibility2) được cài đặt, nó hành động như một sự kiện xuất hiện khi
một đối tượng Add-In được load Điều này xuất hiện khi:
• Một user load đối tượng Add-In thông qua hộp thoại Add-In
Dim applicationObject As EnvDTE.DTE
Dim addInInstance as EnvDTE.AddIn
applicationObject = CType(application, EnvDTE.DTE)
addInInstance = CType(addInInst, EnvDTE.AddIn)
End Sub
End Class
Trang 33II.10.2 Phương thức OnStartupComplete
Xuất hiện khi môi trường đã hoàn tất quá trình khởi động
void OnStartupComplete( object[] custom );
Sự kiện OnStartupComplete xuất hiện khi ứng dụng chủ của nó hoàn
tất tiến trình khởi động của nó, trong trường hợp mà đối tượng Add-In load tại lúc môi trường khởi động Nếu đối tượng Add-In không được load lên lúc ứng
dụng load, thì sự kiện OnStartupComplete không xuất hiện, ngay cả khi user load đối tượng Add-In thông qua hộp thoại Add-In Manager Khi sự kiện này
xuất hiện, nó xuất hiện sau sự kiện OnConnection
Bạn có thể dùng sự kiện OnStartupComplete để chạy đoạn code mà
tương tác với ứng dụng, nhưng không nên chạy cho đến khi ứng dụng kết thúc quá trình load Chẳng hạn, nếu bạn muốn hiển thị một form mà cho user một
chọn các tài liệu để tạo khi chúng bắt đầu ứng dụng, bạn có thể đặt đoạn mã đó bên trong thủ tục sự kiện OnStartupComplete
Dim applicationObject As EnvDTE.DTE
Dim addInInstance as EnvDTE.AddIn
Public Sub OnStartupComplete(ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnStartupComplete Msgbox("IDE startup complete event occuring.")
End Sub
End Class
Trang 34II.10.3 Phương thức OnAddInsUpdate
Xuất hiện khi một đối tượng Add-in được load hay unload trong môi trường
Sự kiện OnAddInsUpdate xuất hiện trong vài trường hợp khác của các
đối tượng Add-In Chẳng hạn, nếu cả hai đối tượng Add -In A và B hiện tại cùng được load, và sau đó thì đối tượng Add -In C được load, thì sự kiện OnAddInsUpdate xuất hiện trong các đối tượng A và B Nếu C bị unload thì sự
kiện OnAddInsUpdate lại xuất hiện trong A và B
Dim applicationObject As EnvDTE.DTE
Dim addInInstance as EnvDTE.AddIn
Trang 35II.10.4 Phương thức OnBeginShutdown
Xuất hiện khi môi trường đang shut down
Sự kiện OnBeginShutdown xuất hiện khi một ứng dụng chủ bắt đầu
tiến trình shutdown của nó; nghĩa là khi một ứng dụng đóng trong khi đối tượng Add-In vẫn được load Nếu đối tượng Add-in hiện tại không được load khi ứng dụng đóng, thì sự kiện OnBeginShutdown không xuất hiện Khi điều
này xảy ra thì sự kiện này xuất hiện trước sự kiện OnDisConnection
Ta cũng có thể dùng sự kiện OnBeginShutdown để chạy khi user đóng
một ứng dụng Chẳng hạn, ta có thể chạy đoạn code mà lưu lại dữ liệu của form
tới một file
Sự kiện OnBeginShutdown cũng có thể xuất hiện nhiều hơn một lần
Nếu một đối tượng quản lý sự kiện thoát khỏi thao tác shutdown môi trường, thì ở lần sau khi môi trường bắt đầu shutdown, sự kiện OnBeginShutdown sẽ
lại xuất hiện
Trang 36
Public Sub OnBeginShutdown(ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnBeginShutdown Msgbox("Shutdown event occuring.")
End Sub
End Class
II.10.5 Phương thức OnDisconnection
Xuất hiện khi một Add-in được load từ môi trường
void OnDisconnection(
ext_DisconnectMode RemoveMode, object[] custom
Một đối tượng Add-in có thể bị unload trong một vài cách sau:
• Xoá check box tiếp theo tới đối tượng Add-in trong hộp thoại Add-In Manager
• Đóng ứng dụng chủ của nó Nếu một đối tượng Add -In được load và ứng dụng của nó đóng, thì sau đó đối tượng Add-In bị unload Nếu thuộc tính loadBehavior của đối tượng Add-In được thiết lập lúc Startup, thì nó đư ợc load
lại khi một ứng dụng bắt đầu trở lại
• Thuộc tính Connect của đối tượng Add-In tương ứng được
thiết lập False
Trang 37Dim applicationObject As EnvDTE.DTE
Dim addInInstance as EnvDTE.AddIn
Public Sub OnDisconnection(ByVal RemoveMode As
Extensibility.ext_DisconnectMode, ByRef custom As System.Array) Implements Extensibility.IDTExtensibility2.OnDisconnection Msgbox("Add-In disconnection event occuring.")
End Sub
End Class
Trang 38Chương III: KI ẾN THỨC WEB SERVICES
I Gi ới thiệu về Web Services
I.1 Vấn đề chia sẽ dữ liệu
Các máy tính cần được chia sẽ dữ liệu với nhau Có nhiều công việc cần
phải chia sẽ dữ liệu như: Những nhà kinh doanh cần chia sẽ dữ liệu với đối tác,
bộ phận này trong công ty cần gởi dữ liệu đến bộ phận khác, các ứng dụng của người dùng này cần phải làm việc với ứng dụng của người dùng khác
Microsoft đã nhận ra nhiều loại ứng dụng khác nhau có thể chia sẽ cùng
dữ liệu như:
• Những nhà cung cấp dữ liệu, những người cung cấp dữ liệu cho
thị trường chứng khoáng
• Môi trường xử lý dữ liệu giữa các đại lý trong cùng một công ty
cần chia sẽ dữ liệu của khách hàng, thông tin hoá đơn
• Tích hợp các ứng dụng lớn như tích hợp giũa dữ liệu về email
của công ty với dữ liệu về nhân sự
I.2 Gi ải quyết bằng phát triển các ứng dụng phân tán
Phát triển ứng dụng phân tán(Distributed application Development) là nghệ thuật và kỹ thuật để lấy dữ liệu từ máy này sang máy khác Có nhiều công nghệ cho việc xây dựng các ứng dụng có thể gởi và nhận dữ liệu CORBA(Common Object Request Broker Architerture), RMI(Remote Method Invocation), và DCOM(Distributed Component Object Model) Những công nghệ này đa số đều có các nhược điểm, và không được sử dụng cho các môi trường không đồng nhất
DCOM được xây dựng dựa trên COM (Component Object Model) là
một chuẩn nhị phân mà hầu như không thể triển khai được bên ngoài môi trường Microsoft Windows
CORBA là một công nghệ phân tán có thể chạy trên nhiều môi trường Tuy nhiên vì nhiều lý do, trong đó những nhà phát triển nhận thấy sự khó khăn trong việc thực thi các ứng dụng dựa trên CORBA
Trang 39I.3 Web Services
Web service là một công nghệ phân tán gồm có những đối tượng(object)
và phương thức(method) có thể được gọi lên từ bất kỳ client nào thông qua giao thức HTTP Web service được xây d ựng chủ yếu dựa trên giao thức SOAP(Simple Object Access Protocol) để hổ trợ truyền thông điệp qua tầng
vận chuyển HTTP và sử dụng định dạng XML để mô tả dữ liệu Dữ liệu liên
quan đến việc gọi phương thức và các tham số được truyền đến Web service ở
định dạng XML sử dụng giao thức SOAP trên tầng vận chuyển HTTP
I.3.1 Các đặc điểm của Web service
• Cho phép các ứng dụng giao tiếp thông qua mạng LAN, intranet, và
chạy trên các hệ điều hành khác nhau, được tạo ra từ các ngôn ngữ khác nhau
và được xây dựng bằng nhiều mô hình đối tượng khác nhau
Web service giao tiếp bằng cách sử dụng các giao thức Web chuẩn và các định dạng dữ liệu, như là HTTP, XML, và SOAP(Simple Object Access Protocol) Bất kỳ những hệ thống nào có hỗ trợ những chuẩn Web như vậy có
thể chạy được Web service
Web Service có thể được sử dụng cục bộ như một ứng dụng đơn lẽ, hay đuợc nhiều ứng dụng khác nhau truy xuất thông qua mạng cục bộ(LAN), intranet và internet Bởi vì Web service được truy xuất thông qua một giao diện chuẩn, Web service cho phép các hệ thống tách biệt làm việc cùng nhau, mô hình Web service độc lập ngôn ngữ, môi trường, nền và các mô hình đối tượng
Trang 40I.3.2 L ợi ích khi sử dụng Web service
I.3.2.1 Liên k ết lỏng(Loosely couple)
Loose couple có nghĩa là mỗi dịch vụ tồn tại độc lập với các dịch vụ khác hình thành nên ứng dụng Điều này cho phép các phần riêng lẽ của ứng
dụng được sửa chữa mà không ảnh hưởng đến những phần không liên quan, đây là một yêu cầu thực tiễn trong thiết kế các kiến trúc hướng dịch vụ(Service
Oriented Architecture)
I.3.2.2 Hổ trợ cấu trúc hướng dịch vụ
Web service thể hiện sự kết hợp giữa sự phát triển dựa trên dịch vụ (service-based development) của các ứng dụng và Web Trong mô hình SOA(Service oriented Architecture), các quy trình công việc tạo nên ứng d ụng
được tách biệt độc lập với nhau, dễ dàng phân tán các dịch vụ
I.3.2.4 D ễ truy xuất
Web service được phân tán trên Internet Web service sử dụng giao thức
vận chuyển như HTTP, tác động đến các kiến trúc đang có và cho phép thông
tin được yêu cầu và nhận trong thời gian thực
II Cơ sở hạ tầng Web Services
II.1 Các chu ẩn và giao thức
II.1.1 Extend Markup Language(XML):
Là nền tảng của Web service là XML XML là ngôn ngữ định dạng đánh
dấu dữ liệu ngày càng trở nên phổ biến Tương tự như HTML, XML dựa trên các Tag Mặc dù XML không thay thế HTML, nó là một định dạng bổ sung