ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Xuân Kỳ
TÌM HIỂU CÔNG NGHỆ WCF (WINDOWS COMMUNICATION
FOUNDATION)
VÀ ỨNG DỤNG QUẢN LÝ CÔNG TY DKT
LUẬN VĂN THẠC SĨ
Hà Nội - 2011
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Nguyễn Xuân Kỳ
TÌM HIỂU CÔNG NGHỆ WCF (WINDOWS COMMUNICATION
FOUNDATION)
VÀ ỨNG DỤNG QUẢN LÝ CÔNG TY DKT
Ngành: Công nghệ Thông tin
Chuyên ngành: Công nghệ phần mềm
Mã số: 60.48.10
LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS.Trần Thị Minh Châu
Hà Nội - 2011
MỤC LỤC
Bảng danh mục các hình vẽ .................................................................................. 6
Danh mục các từ viết tắt ....................................................................................... 7
Lời nói đầu ........................................................................................................... 8
Phần I- Tổng quan về kiến trúc hướng dịch vụ ..................................................... 9
1.1 Giới thiệu bài toán ........................................................................................ 9
1.2 Lịch sử hình thành và tương lai phát triển của kiến trúc hướng dịch vụ 10
1.3 Khái niệm, đặc trưng, tính chất của lập trình hướng dịch vụ ......................... 10
1.4 Ưu, nhược điểm của lập trình hướng dịch vụ ................................................ 11
1.5 RPC .............................................................................................................. 12
1.6 IDL ............................................................................................................... 12
1.7 SOAP .......................................................................................................... 13
1.8 WSDL .......................................................................................................... 14
1.9 UDDI............................................................................................................ 16
1.10 REST .......................................................................................................... 16
Phần II: Tổng quan công nghệ WCF ..................................................................... 17
2.1 Lịch sử hình thành ........................................................................................ 17
2.2 Các công nghệ trước ..................................................................................... 17
2.2.1 COM, DCOM .............................................................................. 17
2.2.2 NET Remoting ............................................................................ 18
2.2.3 Webservices ................................................................................ 19
2.2.4 MSMQ ........................................................................................ 20
2.3 Đặc trưng, tính chất của WCF ....................................................................... 20
2.4 Ưu, nhược điểm ............................................................................................ 22
2.5 Kiến trúc mô hình WCF................................................................................ 22
2.6 Address......................................................................................................... 26
2.7 Binding ........................................................................................................ 26
2.8 Contract ........................................................................................................ 28
2.8.1 Các loại hợp đồng ........................................................................ 28
2.8.2 Các hình thức giao tiếp giữa Client và Services ........................... 29
2.9 Hành xử( Behavior) ...................................................................................... 34
2.10 Chanel Stack ............................................................................................... 35
2.11 Chanel ........................................................................................................ 37
2.12 Điều phối ( Dispatcher)............................................................................... 38
2.13 Instance Management ................................................................................ 39
2.13.1 Per-Call Service ......................................................................... 39
2.13.2 Per-Session Service ................................................................... 40
2.13.3 Singleton Service ....................................................................... 41
2.14 Hosting dịch vụ .......................................................................................... 41
2.14.1 IIS 5/6 Hosting .......................................................................... 42
2.14.2 Self Hosting ............................................................................... 42
2.14.3 Windows Activation Service...................................................... 43
2.14.4 Windows Service Hosting .......................................................... 43
2.15 Bảo mật trong WCF ................................................................................... 44
Phần III: Chương trình ứng dụng .......................................................................... 46
3.1 Khảo sát bài toán ......................................................................................... 46
3.2 Thiết kế hệ thống ......................................................................................... 49
3.3 Xây dựng chương trình ............................................................................... 50
3.4 Những chức năng đã thực hiện .................................................................... 57
3.5 Đề xuất cải tiến ........................................................................................... 59
Kết luận ................................................................................................................ 60
Tài liệu tham khảo ................................................................................................ 61
6
BẢNG DANH MỤC CÁC HÌNH VẼ
Hình 1: Kiến trúc hướng dịch vụ SOA ............................................................. 10
Hình 2: Tin nhắn SOAP .................................................................................... 13
Hình 3: Các thành phần cơ bản trong WCF ....................................................... 17
Hình 4 Mô hình MSMQ ................................................................................... 20
Hình 5: Kiến trúc WCF .................................................................................... 22
Hình 6: Các thành phần tham gia gửi và nhận tin ............................................. 24
Hình 7: Service Layer và Messaging Layer ...................................................... 25
Hình 8: Mô hình Endpoint ................................................................................ 28
Hình 9: Các hình thức giao tiếp giữa Client và Service...................................... 29
Hình 10: Hình thức giao tiếp Request-Reply ..................................................... 30
Hình 11: Hình thức giao tiếp One- way ............................................................ 30
Hình 12: Hình thức giao tiếp Duplex ................................................................ 33
Hình 13: Channel Stack .................................................................................... 36
Hình 14: Channel Listener ................................................................................ 37
Hình 15: Channel Dispatcher ........................................................................... 39
Hình 16 Per-call ............................................................................................... 40
Hình 17: Tiến trình Per call .............................................................................. 40
Hình 18: Per- Session ....................................................................................... 41
Hình 19: Per- Singleton .................................................................................... 41
Hình 20: Quy trình dịch vụ Bizweb ................................................................... 47
Hình 21: Sơ đồ Use case .................................................................................. 49
Hình 22: Sơ đồ Class diagram ........................................................................... 50
Hình 23 Kiến trúc chương trình ........................................................................ 51
Hình 24: DMS gadget ...................................................................................... 57
Hình 25: Giao diện cập nhật hợp đồng ..............................................................58
7
DANH MỤC CÁC KÝ HIỆU VIẾT TẮT
CHỮ VIẾT TẮT
VIẾT ĐẦY ĐỦ
API
Application Programming Interface
CNTT
Công nghệ thông tin
COM
Component Object Model
DCOM
Distributed Component Object Model
DKT
DKT Technology Joint stock Company
HTTP
Hypertext Transfer Protocol
MSMQ
Microsoft Message Queuing
MTOM
Message Transmission Optimization Mechanism
OOP
Object Oriented Programing
REST
Representational State Transfer
RMI
Remote Method Invocation
RPC
Remote Procedure Call
SOA
Services Oriendted Architecture
TCP
Transmission Control Protocol
UDDI
Universal Description, Discovery, and Integration
WCF
Windows Communication Foundation
WSDL
Web Services Description Language
XML
Extensible Markup Language
8
LỜI NÓI ĐẦU
Trước đây, việc phát triển một ứng dụng phân tán rất khó khăn khi đụng chạm
đến nhiều vấn đề về cơ sở hạ tầng, ngôn ngữ lập trình và các kiến trúc phần mềm
khác. Trong khi nhu cầu các doanh nghiệp lại muốn hạn chế tối đa chi phí phát triển
phần mềm (chi phí nhân sự, vật chất và thời gian phát triển). Rất nhiều nhà cung
cấp đã đưa ra các thiết bị công nghệ không đồng bộ về chuẩn, dẫn đến các khác biệt
khi kết nối…
Vậy, có giải pháp nào là mẫu số chung để giải quyết tất cả các vấn đề đó. Chúng
ta đã quen thuộc với cách lập trình cấu trúc, lập trình hướng đối tượng, và ngày nay
chúng ta có thêm lập trình hướng dịch vụ. Tất cả những gì chúng ta cần là có thể gọi
một dịch vụ từ một nhà cung cấp nào đó mà không cần biết chi tiết công nghệ phía
dịch vụ được xây dựng như thế nào.
Đã có rất nhiều giải pháp để giải quyết các ứng dụng phân tán như COM, DCOM,
.NetRemoting, Web services. Nhưng tất cả chúng đều chứa những ưu và nhược
điểm riêng mà không thể giải quyết được các yêu cầu trọn vẹn của người dùng.
Từ khi phát hành bản Net framework 3.0, Microsoft đã đưa ra giải pháp công
nghệ để phát triển các ứng dụng phân tán, thống nhất các công nghệ hiện tại, tích
hợp và phát triển thêm những tính năng mới, thành công nghệ WCF (Windows
Communication Foundation).
Nhận thấy đây là một công nghệ khá hay nhưng chưa thực sự ứng dụng nhiều
trong các công ty phần mềm, trong giảng dạy đào tạo ở các trường đại học, cao
đẳng tại nước ta. Với những lý do đó, đề tài “Tìm hiểu công nghệ WCF (Windows
Communication Foundation) và ứng dụng quản lý công ty DKT” sẽ tập trung
nghiên cứu về công nghệ WCF, các ưu nhược điểm chính, các khái niệm cơ bản
nhất và ứng dụng công nghệ này vào phát triển chương trình quản lý nội bộ công ty
cổ phần công nghệ DKT.
Đề tài gồm các chương chính:
Chương 1: Tổng quan về kiến trúc và lập trình hướng dịch vụ
Chương 2: Tìm hiểu công nghệ WCF
Chương 3: Xây dựng ứng dụng quản lý công ty DKT
Mặc dù có nhiều cố gắng, song do kiến thức còn nhiều hạn chế nên luận văn chắc
chắn không thể tránh khỏi những thiếu sót. Kính mong nhận được sự chia sẻ và
những ý kiến đóng góp chân thành của các thầy cô và bạn bè đồng nghiệp để luận
văn được hoàn thiện hơn. Tôi xin chân thành cảm ơn.
9
PHẦN I: TỔNG QUAN VỀ KIẾN TRÚC HƢỚNG DỊCH VỤ (SOA)
1.1 Giới thiệu bài toán
Ngày nay, việc ứng dụng WCF trong giảng dạy, lập trình ở nước ta chưa nhiều.
Trong khi đó, công nghệ WCF là công nghệ nền tảng thống nhất nhiều mô hình lập
trình giao tiếp được hỗ trợ trong .NET 2.0 thành một mô hình duy nhất nhằm đáp
ứng mô hình lập trình hướng dịch vụ. Với những tính năng vượt trội so với các công
nghệ phân tán truyền thống, việc ứng dụng WCF sẽ mang lại các lợi ích rất lớn
trong việc giảm chi phí phát triển phần mềm, thời gian, nguồn nhân lực và hiệu suất
thực thi.
Công ty DKT, là một công ty cổ phần chuyên ứng dụng phát triển các ứng dụng
website thương mại điện tử, tin tức, thanh toán trực tuyến với các sản phẩm điển
hình như: www.bizweb.vn (trang thương mại điện tử), www.baokim.vn (trang thanh
toán trực tuyến), www.doanhnhan.net (báo điện tử dành cho doanh nhân),
www.lamsao.com (trang giải đáp thắc mắc trong cuộc sống), www.bizmail.vn
(trang Email Marketing, quảng bá sản phẩm qua email)…
Hiện tại công ty bao gồm các phòng ban như: phòng hành chính- kế toán, nhân
sự, kỹ thuật, kinh doanh, biên tập. Mỗi phòng ban đều có chức năng nhiệm vụ riêng.
Việc quản lý nhân viên và các công việc của từng nhân viên, quy trình các dự án đối
với một công ty phần mềm là rất khó khăn, vấn đề này càng phải đặt ra nếu không
có một quy trình chung và sự quản lý đầu mối.
Để giúp mọi người có một cái nhìn tổng quát về công nghệ WCF, giúp công ty
DKT có thể quản lý được các vấn đề phát sinh trong khi quản lý nhân viên và các
công việc nội bộ, tôi đã chọn đề tài “Tìm hiểu công nghệ WCF (Windows
Communication Foundation) và ứng dụng quản lý công ty công nghệ DKT”.
Các vấn đề chính cần giải quyết:
Tìm hiểu mô hình, kiến trúc hướng dịch vụ
Các công nghệ phân tán ra đời trước khi xuất hiện WCF
Chi tiết công nghệ WCF, bao gồm các vấn đề chính như: các khái niệm cơ
bản của WCF, quy trình hoạt động giao tiếp giữa Client và Server, các vấn
đề an ninh, bảo mật, quản lý lỗi…
Xây dựng chương trình dựa trên công nghệ WCF. Tìm hiểu các quy trình
hoạt động của các phòng ban trong công ty DKT, chức năng nhiệm vụ từng
nhân viên, các công việc chủ yếu trong một công ty công nghệ , từ đó xây
dựng giải pháp, phát triển ứng dụng quản lý nội bộ.
Trong chương trình này tôi sẽ áp dụng các công nghệ mới của Microsoft như:
công nghệ ASP.NET 2.0, XMScripting , WCF, Gadget trên nền tảng VisualStudio
2008 và SQL Server 2005.
10
1.2 Lịch sử hình thành và tƣơng lai phát triển của kiến trúc hƣớng dịch vụ
Tên gọi đầu tiên của lập trình hướng dịch vụ là “dịch vụ dựa trên hệ thống phân phối”.
Về cơ bản, SOA là kỹ thuật phân hủy chức năng thành một tập hợp các dịch vụ
tương thích có thể được truy cập thông qua các API mạng. Người ta thường nghĩ đây là
một "ý tưởng mới", hình thành trong cuối những năm 90. Nhưng nó đã được nhiều
người tìm hiểu bắt đầu từ đầu những năm 80[14].
Hình 1: Kiến trúc hướng dịch vụ SOA
Dịch vụ là quá trình tiến hóa tiếp theo từ các component, SOA là cách tốt nhất để
xây dựng các ứng dụng phân tán, nâng cao năng suất, khả năng bảo trì, mở rộng và
tái sử dụng[5].
Dịch vụ có đặc trưng về ngôn ngữ, công nghệ (. NET FX, J2EE), các nền tảng
(Windows), phiên bản (Major.Minor.Build.Revision). Giữa các dịch vụ có các phụ
thuộc về tiêu chuẩn, giao thức (HTTP, MSMQ, IPC…), chính sách (giao dịch, độ
tin cậy), hợp đồng (WSDL), tin nhắn (SOAP).
SOA có các nguyên lý như: các ranh giới là rõ ràng, các dịch vụ được tự trị, dịch
vụ chia sẻ lược đồ và hợp đồng, khả năng tương thích dựa trên chính sách[4].
1.3 Khái niệm, đặc trƣng, tính chất của lập trình hƣớng dịch vụ
Phần mềm đang ngày càng trở nên phức tạp quá mức và dường như vượt quá khả
năng kiểm soát của các mô hình phát triển hiện có. SOA là kiến trúc phần mềm mới
được kỳ vọng là chìa khóa giải quyết vấn đề phức tạp này[4].
SOA là viết tắt của Service Oriented Architechture - Kiến trúc hướng dịch vụ.
SOA là một mẫu kiến trúc để xây dựng các hệ thống phân tán. Phân phát các chức
năng dưới dạng dịch vụ và được người dùng cuối sử dụng vào ứng dụng của mình,
hoặc được sử dụng để xây dựng một dịch vụ khác. SOA cho phép tạo ra các giải
pháp dễ dàng, nhanh chóng thông qua việc tích hợp các dịch vụ đã được xây dựng
sẵn.
Dịch vụ là yếu tố then chốt trong SOA. Đó là các hàm chức năng (mô-đun phần
mềm) thực hiện các quy trình nghiệp vụ. SOA là tập hợp các dịch vụ kết nối mềm
dẻo với nhau, các ứng dụng có thể giao tiếp với nhau mà không cần biết các chi tiết
kỹ thuật bên trong. SOA là cấp độ cao hơn của phát triển ứng dụng, chú trọng đến
11
quy trình nghiệp vụ và dùng giao tiếp chuẩn để che đi sự phức tạp kỹ thuật bên
dưới[16].
SOA tách riêng phần thực hiện dịch vụ với giao tiếp gọi dịch vụ. Điều này tạo
nên một giao tiếp nhất quán cho ứng dụng Client, sử dụng dịch vụ bất chấp công
nghệ thực hiện dịch vụ. Thay vì xây dựng các ứng dụng đơn lẻ và đồ sộ, nhà phát
triển sẽ xây dựng các dịch vụ tinh gọn có thể triển khai và tái sử dụng trong toàn bộ
quy trình nghiệp vụ. Điều này cho phép tái sử dụng phần mềm tốt hơn, cũng như
tăng sự linh hoạt vì nhà phát triển có thể cải tiến dịch vụ mà không làm ảnh hưởng
đến ứng dụng Client sử dụng dịch vụ[16].
1.4 Ƣu, nhƣợc điểm của lập trình hƣớng dịch vụ
Ưu điểm quan trọng nhất của SOA là khả năng kết nối linh hoạt nhờ sự chuẩn hóa
giao tiếp và tái sử dụng. Các dịch vụ có thể được sử dụng với trình khách chạy trên
bất kỳ nền tảng nào và được viết với ngôn ngữ bất kỳ.
SOA dựa trên 2 nguyên tắc thiết kế quan trọng:
Mô-đun: Tách vấn đề lớn thành nhiều vấn đề nhỏ.
Đóng gói: Che đi dữ liệu và lô-gic trong từng modul đối với truy cập từ ngoài.
Rất nhiều hệ thống phần mềm được thực hiện quá phức tạp, chi phí phát triển và
bảo trì cao, đặc biệt với các hệ thống phần mềm cao cấp. Các kiến trúc phần mềm
đã cố gắng giải quyết nhưng độ phức tạp vẫn tiếp tục tăng và dường như vấn đề này
đã vượt quá khả năng xử lý của các kiến trúc truyền thống. Điều này một phần do
ngày càng xuất hiện nhiều công nghệ mới tạo nên môi trường không đồng nhất, một
phần do yêu cầu trao đổi tương tác giữa các hệ thống phần mềm với nhau. Những
yêu cầu truyền thống đặt ra đối với tổ chức CNTT vẫn còn, trong khi cùng lúc phải
đáp ứng nhanh chóng các yêu cầu mới, đòi hỏi phải liên tục giảm chi phí, có khả
năng sử dụng và tích hợp các thành phần mới... Tất cả đã tạo nên một áp lực nặng
nề đối với các nhà phát triển phần mềm. Chúng ta đã có các kiến trúc như hướng
đối tượng OOP, COM/DCOM, CORBA …và nhiều phương thức tích hợp ứng dụng
nhanh và tốt hơn. Thế nhưng vẫn chưa có giải pháp nào hoàn chỉnh. Giờ đây, SOA
đang được xem có thể đảm nhận trọng trách này và được kỳ vọng tạo nên cuộc cách
mạng trong kiến trúc phần mềm.
Ưu điểm: Hệ thống uyển chuyển và lâu dài . Dễ dàng và nhanh chóng tạo ra các
xử l nghiệp vụ từ các dịch vụ đã có. Khả năng tương tác của các dịch vụ cao.
Nhược điểm: Hệ thống phức tạp và khó miêu tả dữ liệu không cấu trúc trong
header của tin nhắn.
Lợi ích khi sử dụng SOA[1,2,4]
Độc lập hệ thống : dịch vụ không phụ thuộc vào hệ thống và mạng cụ thể
Khả năng tái sử dụng .
12
Khả năng hồi đáp thích nghi tốt và nhanh hơn để đáp ứng với sự thay đổi về
yêu cầu giao dịch.
Cho phép dễ dàng triển khai chương trình, môi trường chạy và quản lý dịch vụ
dễ dàng hơn.
Kiến trúc kết nối lỏng lẻo, cho phép dễ dàng tích hợp thành phần, chương
trình, tiến trình hay những dịch vụ phức tạp từ những dịch vụ đơn giản
Cho phép Client tìm kiếm và kết nối với những dịch vụ động khác.
Những sự xác nhận và chứng minh của Client về tính năng bảo mật dựa trên
giao tiếp dịch vụ tốt hơn cơ chế kết nối chặt chẽ.
So sánh SOA và OOP[16]
SOA hỗ trợ việc kết nối lỏng lẻo các dịch vụ. OOP dựa nhiều trên các lớp
được định nghĩa sẵn, kết quả là các đối tượng kết nối chặt chẽ với nhau
Hướng dịch vụ sử dụng các tin nhắn miêu tả thông tin về dịch vụ để thực
hiện chức năng của mình, trong khi đó OOP lại sử dụng các hàm APIs để
miêu tả các đối tượng của mình.
Phạm vi hoạt động của các dịch vụ trong SOA rộng lớn hơn là các đối tượng
của OOP
SOA khuyến khích các dịch vụ được thiết kế phi trạng thái càng nhiều càng
tốt còn OOP thì lại liên kết dữ liệu một cách logic từ đó tạo ra các đối tượng
có trạng thái. Hỗ trợ việc kết nối lỏng lẻo các dịch vụ với nhau, còn OOP thì
khuyến khích việc kế thừa các đối tượng, từ đó các đối tượng liên kết với
nhau môt cách chặt chẽ.
1.5 RPC (Remoting Procedure Call)
Thủ tục gọi hàm từ xa là một kỹ thuật tiến bộ cho quá trình kết nối từ Client đến
Server để sử dụng các ứng dụng và dịch vụ. RPC cho phép Client có thể kết nối tới
1 dịch vụ sử dụng cổng động nằm ở một máy tính khác. Trong hệ thống mạng máy
tính hiện nay có rất nhiều dịch vụ và ứng dụng sử dụng cơ chế kết nối RPC, ví dụ
quá trình đồng bộ của các Domain Controller trong hệ thống Active Directory,
hoặc MS Outlook kết nối tới MS Exchange Server[2].
1.6 IDL
IDL là một ngôn ngữ chuẩn dùng để mô tả giao diện với một thành phần. IDL đặc
biệt hữu dụng khi gọi các thành phần trên máy tính khác thông qua RPC, có thể
được chạy trên một xây dựng nền tảng khác nhau hoặc sử dụng một ngôn ngữ khác
nhau và có thể không chia sẻ cùng một ngữ nghĩa cuộc gọi[4].
13
1.7 SOAP(Simple Object Access Protocol)
SOAP là một giao thức mới giống như HTTP-Get, HTTP-Post. Dựa trên nền tảng
XML. SOAP là một trong những giao thức chuẩn cho việc xây dựng Web Services.
Web Services phát triển trên ý tưởng RPC (Remoting Procedure Call), gọi thực hiện
các hàm ở máy chủ phân tán trong hệ thống Internet. Một ứng dụng có thể yêu cầu
một dịch vụ thông qua gửi và nhận các SOAP envelop. SOAP dựa trên việc nến
tảng XML nên rất thích hợp cho môi trường phân tán[4].
SOAP là một đặc tả sử dụng các tài liệu XML theo dạng các thông điệp. Bản thân
SOAP không định ra các ngữ nghĩa ứng dụng hoặc cách cài đặt chi tiết. SOAP cung
cấp một cơ chế đơn giản và gọn nhẹ cho việc trao đổi thông tin có cấu trúc và định
dạng giữa các thành phần trong một môi trường phân tán sử dụng XML. SOAP
được thiết kế dựa trên những chuẩn nhằm giảm chi phí tích hợp các hệ thống phân
tán xây dựng trên nhiều nền tảng khác nhau ở mức càng thấp càng tốt. Đặc tả về
SOAP định nghĩa một mô hình trao đổi dữ liệu dựa trên 3 khái niệm cơ bản: các
thông điệp là các tài liệu XML, chúng được truyền đi từ bên gửi đến bên nhận, bên
nhận có thể chuyển tiếp dữ liệu đến nơi khác.
Khái niệm cơ bản nhất của mô hình SOAP là việc sử dụng các tài liệu XML như
những thông điệp trao đổi. Điều này có nhiều ưu điểm hơn các giao thức truyền dữ
liệu khác. Các thông điệp XML có thể được tổng hợp và đọc với một bộ soạn thảo
text đơn giản, ta có thể làm việc với XML trên hầu hết mọi nền tảng. Sau đây là một
ví dụ về một thông điệp SOAP[2].
Hình 2: Thông điệp SOAP
Khi trao đổi các thông điệp SOAP, có hai thành phần liên quan: bên gửi và bên
nhận. Thông điệp sẽ được chuyển từ bên gửi sang bên nhận. Đây là ý niệm đơn giản
nhất trong trao đổi thông điệp SOAP. Trong nhiều trường hợp, kiểu trao đổi này
không cung cấp đủ chức năng. Nhưng đây là mô hình cơ bản, dựa trên đó sẽ phát
triển các mô hình trao đổi phức tạp hơn. Một cấu trúc SOAP được định nghĩa gồm
các phần: , , Envelop là thành phần gốc của một thông điệp
SOAP, nó chứa các thành phần Header và Body. Thành phần Header là một cơ chế
mở cho phép thêm các tính năng vào bên trong một thông điệp SOAP. Mỗi thành
phần con của Header gọi là một Header Entry. Các Header Entry dùng để diễn giải,
quy định một số ngữ nghĩa của thông điệp SOAP. Các ứng dụng có thể xử lý và
định tuyến các thông điệp dựa trên thông tin header và thông tin bên trong thông
điệp đó. Đây là ưu điểm mà các mô hình kiến trúc như DCOM, CORBA và RMI
không có được, vì các protocol header của chúng phải được chỉ định chi tiết cho
mỗi ứng dụng[2].
14
1.8 WSDL (Web Service Description Language)
Ngôn ngữ mô tả dịch vụ Web là một đặc tả trình bày chi tiết tiêu chuẩn một dịch
vụ Web dựa trên SOAP. WSDL khi được kết hợp với những công cụ thích hợp, mà
không cần biết dịch vụ Web đang tìm kiếm những gì; ứng dụng này có thể trích
xuất những chi tiết đó từ tệp WSDL và cung cấp một giao diện chương trình sử
dụng[4]. Một khách hàng muốn kết nối với một dịch vụ web có thể đọc WSDL
để xác định hợp đồng có sẵn trên các dịch vụ web.
WSDL tương tự ngôn ngữ mô tả cho giao diện (IDL) ở các dịch vụ web. Các
thông tin từ các tài liệu WSDL thường được giải thích ở thời gian thiết kế để tạo ra
một đối tượng proxy. Các khách hàng sử dụng đối tượng proxy trong thời gian chạy
để gửi và nhận thông tin SOAP vào và ra từ các dịch vụ.
WSDL định nghĩa một lược đồ XML dùng để mô tả cấu trúc các dịch vụ theo
dạng XML. Nó cung cấp thông tin cho các hệ thống phân tán và cho phép các ứng
dụng trao đổi với nhau một cách tự động. Trong khi SOAP tập trung vào việc trao
đổi thông tin giữa bên yêu cầu và bên cung cấp thì WSDL mô tả dịch vụ được cung
cấp bởi bên cung cấp và được xem như một công thức để phát sinh các thông điệp
SOAP đến các dịch vụ[1,4].
Một tài liệu WSDL mô tả một Web Service như một tập các đối tượng trừu tượng
gọi là các “ports” và “endpoint”. Tài liệu WSDL cũng định nghĩa bên trong nó
những hành vi. Hành vi tương ứng với “operation” và dữ liệu tương ứng với
“message”. Một tập các hành vi liên quan được nhóm lại vào trong một “contract” .
Một ràng buộc kết nối (binding) chỉ định một giao thức mạng và đặc tả định dạng
dữ liệu cho một contract cụ thể. Kế đến một address được định nghĩa bằng cách kết
hợp một địa chỉ mạng với một binding. Nếu một Client có được một tài liệu WSDL
và tìm thấy binding và địa chỉ cho mỗi port, nó có thể gọi các phương thức của dịch
vụ theo đúng giao thức và định dạng dữ liệu đã đặc tả.
Phần tử gốc của tất cả các tài liệu WSDL luôn là phần tử . Nó chứa
bên trong sáu thành phần, chia thành hai nhóm : thông tin trừa tượng và thông tin cụ
thể. Thông tin trừu tượng (types, messages, portype). Thông tin cụ thể (bindings,
services). Các thành phần chứa những tham chiếu lẫn nhau. Sau đây là một ví dụ
mẫu về một đặc tả WSDL[1,2].
15
16
1.9 UDDI (Universal Description, Discovery and Integration)
Về cơ bản UDDI là một nơi mà các tổ chức đăng ký và tìm kiếm các web service.
Nó đóng vai trò như service broker cho phép người sử dụng dịch vụ tìm đúng nhà
cung cấp dịch vụ cần tìm[4]. UDDI hỗ trợ chức năng:
Thực hiện tìm kiếm, định vị những doanh nghiệp cung cấp dịch vụ hay sản phẩm
theo phân loại vùng địa lý. Thông tin về một nhà cung cấp dịch vụ bao gồm địa chỉ,
thông tin liên lạc và các định danh. Thông tin kỹ thuật (technical information) về
web service mà doanh nghiệp cung cấp (như cách sử dụng dịch vụ được cung cấp).
Để sử dụng đến các dịch vụ của UDDI, bản thân UDDI cung cấp một tập hàm
API dưới dạng SOAP Web Service. Tập API được chia làm hai phần: Inquiry API
dùng truy vấn và Publisher’s API dùng đăng ký. Phần API dùng để truy vấn bao
gồm hai phần con: một phần dùng để tạo ra các chương trình cho phép tìm kiếm và
duyệt thông tin trên một UDDI registry, phần còn lại dùng để xử lý lỗi triệu gọi.
Thành phần xử lý chính là bộ đăng ký UDDI, đó là một file XML dùng để mô tả
một thực thể kinh doanh kèm theo các web service đi cùng. Sử dụng các dịch vụ của
UDDI, các doanh nghiệp đăng ký thông tin về những web service mà họ định cung
cấp. Thông tin này đuợc thêm vào UDDI registry thông qua website hoặc sử dụng
các công cụ lập trình sử dụng các dịch vụ theo đúng đặc tả[4].
1.10 REST
REST là một cách tiếp cận để nhận được nội dung thông tin từ một trang web
bằng cách đọc một trang web có chứa một tập tin XML mô tả và bao gồm các nội
dung mong muốn thay vì sử dụng các cơ chế phức tạp như CORBA, RPC hay
SOAP để kết nối giữa các máy, HTTP đơn giản được sử dụng để thực hiện cuộc gọi
giữa các máy. REST sử dụng HTTP cho tất cả bốn thao tác CRUD (Create / Read /
Update / Delete)[2].
17
PHẦN II: TỔNG QUAN CÔNG NGHỆ WCF
2.1 Lịch sử hình thành
WCF là một API được dùng để thiết kế và triển khai các ứng dụng phân tán theo
kiến trúc SOA. Được thiết kế theo nguyên tắc kiến trúc hướng dịch vụ để hỗ trợ các
tính toán phân tán. Các dịch vụ được liên kết với nhau, chúng thường có một giao
diện WSDL mà bất kỳ khách hàng WCF có thể biết và sử dụng các dịch vụ, không
phân biệt nền tảng dịch vụ được lưu trữ . WCF thực hiện nhiều dịch vụ web tiên
tiến (WS) tiêu chuẩn như WS-Addressing, WS-ReliableMessaging và WSSecurity[3,4].
WCF được tích hợp sẵn trong bản .NET Framwork 3.0 năm 2006. Với phiên bản
của. NET Framework 3.5 vào năm 2007, Microsoft phát hành một bộ mã hóa thêm
hỗ trợ cho các định dạng tuần tự JSON cho các nhu cầu AJAX cho các trang web.
WCF là một thành phần cốt lõi của. NET Framework 3.0 (trước đây là WinFX)
với Windows Vista, hỗ trợ Windows 2003, Windows XP cũng như phiên bản tương
lai của Windows Server.
Các API của WCF thống nhất các dịch vụ web ASMX., NET Remoting,… thành
một mô hình lập trình duy nhất (trong khi đảm bảo khả năng tương tác).
Hình 3: Các thành phần cơ bản trong WCF
2.2 Các công nghệ trƣớc
2.2.1 COM, DCOM
18
Microsoft phát triển COM cho phép các ứng dụng tương tác với nhau, thúc đẩy
tái sử dụng. Lợi thế của việc sử dụng COM là các thành phần khác nhau được phát
triển bằng các ngôn ngữ khác nhau có thể tương tác với nhau bằng cách sử dụng các
tiêu chuẩn. Hầu hết các sản phẩm của Microsoft, bao gồm Microsoft Office, SQL
Server, và thậm chí cả Windows, được dựa trên COM. COM cung cấp khả năng sử
dụng lại ở các thành phần cục bộ, không được thiết kế để làm việc tốt với các thành
phần từ xa.
Để giải quyết vấn đề này, Microsoft đã phát triển DCOM. Về cơ bản DCOM là sự
kết hợp của COM và giao thức mạng cho phép chạy một đối tượng COM ở một
máy tính từ xa.
DCOM là một giao thức độc quyền tiêu chuẩn của Microsoft để mở rộng COM,
giúp nó có thể làm việc trong môi trường phân tán. DCOM còn hỗ trợ một số tính
năng như độ tin cậy, an ninh, hiệu quả giao tiếp giữa các đối tượng COM trên các
quy trình và máy móc khác nhau. DCOM có trước khi bùng nổ Internet. Do đó nó
không bao giờ được xây dựng với Internet[4,7,8,9].
2.2.2 .NET Remoting
.NET Remoting là một kĩ thuật .NET giới thiệu từ .NET framework 1.1. Cùng với
Webservice, .NET remoting là lựa chọn cho giải pháp xử lý tính toán từ xa, .NET
Remoting là một kĩ thuật cho phép một đối tượng này truy xuất đến một đối tượng
khác nằm ở các Application Domain khác nhau. Ta có thể sử dụng .NET Remoting
đế gọi một chương trình hoặc một dịch vụ chạy trên một máy tính khác để xử lý
một cái gì đó và trả kết quả tính toán lại[4,11].
DCOM dựa trên một tập giao thức mà không phải đối tượng nào cũng hỗ trợ và
điều này khiến DCOM không chạy được trên những nền khác nhau. Ngoài ra,
DCOM sử dụng nhiều cổng trong khi các cổng ấy thường bị chặn bởi tường lửa.
Việc mở những cổng đó để nó hoạt động được không khó nhưng đó là một trong
những phiền phức.
.NET Remoting khắc phục những yếu kém của DCOM bằng cách hỗ trợ nhiều
giao thức khác nhau. Về khía cạnh xử lý từ xa thì Web Services hoàn toàn tương tự
như .NET Remoting. Thậm chí người ta có thể làm cho .NET Remoting trở thành 1
Web Services bằng cách host nó trong IIS. Web Services cho phép các ứng dụng có
thể giao tiếp với nhau mà không phụ thuộc nền tảng, ngôn ngữ lập trình… Tuy
nhiên Web Services không lưu lại bất kì trạng thái gì của lần gọi trước và nó cũng
không biết gì về phía Client đang thực hiện request (stateless). Client và Services
chỉ có thể trao đổi với nhau bằng các thông điệp SOAP. Những điểm sau đây là các
điểm khác nhau chính giữa .NET Remoting và Web Serices, chúng cũng là những
nhân tố để ta chọn lựa giữa 2 công nghệ này:
Web Services chỉ có thể được truy xuất qua HTTP còn .NET Remoting có thể
được dùng trên nhiều giao thức khác nhau như TCP, HTTP.
Web Services là một môi trường stateless. Khi có một request từ phía Client,
sẽ có một đối tượng mới được tạo ra để thực hiện request đó trên Server. Còn
19
.NET Remoting lại hỗ trợ nhiều lựa chọn và có thể thực hiện nhiều request từ
một Client, đồng thời có hỗ trợ callbacks.
Web Services serialize các đối tượng thành XML bên trong tin nhắn SOAP, vì
thế có thể truyền tải thông tin của bất cứ thành phần nào miễn có thể chuyển
thành XML. Còn đối với .NET Remoting thì tùy giao thức và định dạng tin
nhắn mà nó có thể truyền đi thông tin như thế nào. Ngoài ra theo như giới
thiệu thì .NET Remoting có cho phép đối tượng được truyền vào theo cả kiểu
tham chiếu( reference) và tham trị (value).
Web services có thể hoạt động trên các môi trường khác nhau trong khi .NET
Remoting yêu cầu phía Clients phải là .NET Application, .NET Remoting dựa
trên trên các tính toán phân tán dễ dàng bằng cách cung cấp một khả năng đơn
giản, mở rộng mô hình lập trình, mà không làm giảm tính linh hoạt, khả năng
mở rộng. Nó đi kèm với một thực thi mặc định của các thành phần như các
kênh và giao thức, nhưng tất cả đều được cắm và có thể được thay thế bằng
các tùy chọn tốt hơn mà không cần nhiều mã.
Mặc dù. NET Remoting cung cấp hiệu năng tốt nhất và linh hoạt, nó cũng bị một số
nhược điểm như:
Nhƣợc điểm:
Hoạt động tốt nhất trong mạng nội bộ, nơi có toàn quyền kiểm soát việc triển
khai, phiên bản, và thử nghiệm.
Thực tế, NET Remoting sở hữu độc quyền. NET và các ứng dụng liền mạch
để trao đổi dữ liệu giữa hai ứng dụng NET.
Đòi hỏi phải có một bước nhảy vọt lớn giữa các chương trình ở mức cao và cơ
sở hạ tầng.
Bị các vấn đề về chia tải bởi vì nó không phải đủ thông minh để phân chia
công việc giữa các máy tính khác nhau.
2.2.3 Web services
Với công nghệ phân tán hiện có, sẽ bị giới hạn về khả năng tương tác giữa các
nền tảng. Nếu triển khai một ứng dụng COM qua tường lửa hoặc qua các bộ định
tuyến thông minh, chúng ta sẽ tìm thấy một số khác biệt đáng kể. Hầu hết các công
nghệ phân tán không được xây dựng để đối phó với các bức tường lửa và các
router thông minh. Web services giải quyết những vấn đề này bằng cách dựa vào
các tiêu chuẩn mở và các giao thức được chấp nhận rộng rãi.
Web services không chỉ là một cách khác để tạo các ứng dụng phân tán. Việc
phân biệt web services với các công nghệ phân tán khác là dựa vào các giao thức,
dịch vụ web dựa trên các tiêu chuẩn web mở (SOAP, HTTP, XML). Các tiêu chuẩn
mở được công nhận rộng rãi và được chấp nhận trên toàn ngành công nghiệp. Web
services được thiết kế với khả năng tương tác và dễ dàng gọi từ nền tảng phi
20
Windows. Người ta thường nhầm lẫn giữa Web servies và .NET Remoting. Nhưng
các Web services có một mô hình lập trình đơn giản hơn .NET Remoting.
Webservices dựa trên đồ hình XML cho dữ liệu và NET Remoting dựa trên
CLR. Có thể sử dụng NET Remoting để xây dựng các dịch vụ web nhưng WSDL
được tạo ra bởi. NET Remoting không được sử dụng rộng rãi và có thể bị bỏ qua
bởi một số Client. NET Remoting thích hợp cho việc tạo các thành phần được sử
dụng bởi ứng dụng chạy trong môi trường NET. và Webservices tạo ra các thành
phần có thể được truy cập bất kỳ ứng dụng kết nối qua Internet.
2.2.4 MSMQ
Microsoft Message Queuing (MSMQ) là công nghệ tin nhắn không đồng bộ. Bất
cứ khi nào có hai hay nhiều ứng dụng gửi tin nhắn cho nhau mà không cần phải biết
kết quả ngay lập tức, chúng ta có thể được sử dụng MSMQ. MSMQ có thể giao
tiếp giữa các máy từ xa, thậm chí qua internet.
Hình 4: Mô hình MSMQ
2.3 Đặc trƣng, tính chất của WCF
WCF không chỉ là một cách khác để tạo ra một giải pháp phân tán mà còn
cung cấp một số lợi ích hơn những công nghệ trước nó. WCF bắt đầu với việc
phát hành. NET. Microsoft ra mắt công nghệ này tại hội nghị phát triển năm 2003
tại Los Angeles, California. Cho thấy có ba thiết kế chính trong các mục tiêu của
WCF[4,9,12].
Thống nhất các công nghệ hiện tại
Khả năng cộng tác trên nền tảng
Dịch vụ định hướng phát triển
Thống nhất của các công nghệ hiện tại
Thế giới đang tồn tại nhiều công nghệ phân tán khác nhau, mỗi công nghệ có một
khái niệm, nhiệm vụ và vai trò riêng biệt. Bên cạnh đó, các công nghệ phân tán này
dựa trên các mô hình lập trình khác nhau. Vấn đề này sẽ tác động đến các nhà phát
21
triển, những người phải tiếp tục học các API khác nhau khi xây dựng các thành
phần phân tán khác nhau.
Các tranh luận liên tục từ những năm 1990 giữa các công nghệ phân tán đã dẫn
đến một cuộc tranh luận về những công nghệ tốt nhất cho phát triển ứng dụng phân
tán trong dài hạn. Một trong những câu hỏi thú vị là, tại sao không chỉ có một công
nghệ có thể được sử dụng trong tất cả các tình huống?
WCF là giải pháp của Microsoft để phát triển ứng dụng phân phối cho ứng
dụng. Nó tránh tham gia tất cả các khả năng của công nghệ phân tán và cho phép sử
dụng một API trong sạch và đơn giản. Nói cách khác, WCF mang đến cho toàn bộ
phân tán hiện có chồng dưới một mái nhà. Tất cả có chung trong một namespaces
System.ServiceModel
Khả năng tƣơng tác qua nhiều nền tảng
Hầu hết các công ty phần mềm lớn đang phát triển phần mềm sử dụng giao thức
độc quyền được kết chặt chẽ với một nền tảng cụ thể. Điều này sẽ làm các hệ thống
này không tương thích với nhau. Khả năng liên kết hệ thống sẽ trở thành một nhu
cầu quan trọng đối với một số lượng lớn của các tổ chức. Trong khi các ứng dụng
cần phải tương hợp với nền tảng hiện có, doanh nghiệp cần hỗ trợ các ứng dụng
được viết bằng ngôn ngữ lập trình khác nhau với các công nghệ khác nhau.
Ngoài ra, các doanh nghiệp cần khả năng tương tác liền mạch trong toàn tổ chức.
Như vậy, khả năng tương tác đã được một vấn đề lớn cho tất cả các nhà cung cấp
phần mềm và họ muốn sử dụng một bộ các giao thức đã được chấp nhận rộng
rãi. Các nhà lãnh đạo như Microsoft, IBM, BEA, và Sun đã thành lập các dịch vụ
Web liên cường khả năng (WS-I) tổ chức, phát triển một bộ liên tục của thông số kỹ
thuật, cho phép phần mềm liên tục giao tiếp với phần mềm khác chạy trên nền tảng
khác nhau. Một trong những tính năng tuyệt vời của các chi tiết kỹ thuật WS-I là
chúng rất đơn giản, nhỏ và dễ thực hiện. Được tự do lựa chọn những đặc điểm kỹ
thuật cần thực hiện.
Ví dụ, thực hiện WS-Security. Nó được chia thành nhiều lớp. Có một chữ ký kỹ
thuật số trong một thông điệp SOAP và đặc điểm kỹ thuật khác nhau để gửi một tên
người dùng và mật khẩu trong SOAP. Kiến trúc cốt lõi của một đặc tả dịch vụ web
cho tất cả điều này là WSDL. Do đó, WCF là ngôn ngữ của bộ ứng dụng dịch vụ
web mới nhất để đạt được khả năng tương tác trên nền tảng liên tục. WCF tương tác
với các công nghệ khác nhau chạy trên nền tảng khác nhau với hệ điều hành không
phải Windows. Thế giới kỹ thuật sẽ không nói chuyện bằng ngôn ngữ khác nhau,
với WCF hệ thống đa dạng và không đồng nhất có thể cùng tồn tại như nhau.
WCF Là một công cụ phát triển hƣớng dịch vụ
WCF là mô hình lập trình đầu tiên được xây dựng để cung cấp dịch vụ rõ ràngđịnh hướng phát triển ứng dụng và định hướng kinh doanh. Định hướng dịch vụ
không phải là một công nghệ mà thay vào đó là một khái niệm thiết kế. Định hướng
dịch vụ sử dụng tốt nhất cho các ứng dụng phân tán hiện nay. Định hướng dịch vụ
không phải là một khái niệm mới, mà nó đã được sử dụng một số năm. Một số dự
án đã cố gắng thực hiện khái niệm về định hướng dịch vụ bằng cách tinh chỉnh các