Khóa luận Sử dụng công nghệ Windows Communication Foundation trong các ứng dụng trên diện rộng

ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  
NGUYỄN QUANG HÙNG  
SỬ DỤNG CÔNG NGHỆ WINDOWS  
COMMUNICATION FOUNDATION TRONG CÁC  
ỨNG DỤNG TRÊN DIỆN RỘNG  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Công nghệ thông tin  
HÀ NỘI - 2009  
ĐẠI HỌC QUỐC GIA HÀ NỘI  
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ  
NGUYỄN QUANG HÙNG  
SỬ DỤNG CÔNG NGHỆ WINDOWS  
COMMUNICATION FOUNDATION TRONG CÁC  
ỨNG DỤNG TRÊN DIỆN RỘNG  
KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY  
Ngành: Công nghệ thông tin  
Cán bộ hướng dẫn: ThS. Đào Kiến Quốc  
Cán bộ đồng hướng dẫn: ThS.Nguyễn Xuân Hoàng  
NỘI - 2009  
2
TÓM TẮT KHÓA LUẬN  
Hiện nay đã có rất nhiều phần mềm dành cho doanh nghiệp. Tuy nhiên một số các  
phần mềm này lại có giá quá cao khiến doanh nghiệp không đủ kinh phí để triển khai.  
Còn đối các sản phẩm giá thấp hơn thì lại không thể đáp ứng được nhu cầu sử dụng dữ  
liệu tập trung và tổng hợp dữ liệu một cách thường xuyên của các doanh nghiệp có nhiều  
chi nhánh tại nhiều vị trí địa lý khác nhau.  
Nội dung của khóa luận này strình bày về một công nghệ mới nằm trong .NET 3.0  
của Microsoft, đó là công nghệ Windows Communication Foundation (WCF). Đây là một  
công nghệ được Microsoft đưa ra để xây dựng các ứng dụng theo kiến trúc hướng đối  
tượng (SOA). Đó là chìa khóa để giải quyết các vấn đề trên. Đồng thời, khóa luận cũng  
nói đến việc áp dụng WCF để xây dựng phần mềm Quản lý quan hệ khách hàng (CRM) –  
một giải pháp đang được áp dụng ở khá nhiều doanh nghiệp.  
3
MỤC LỤC  
LỜI MỞ ĐẦU ........................................................................................................................8  
1. Tính cấp thiết của đề tài:.................................................................................................... 8  
2. Mục tiêu của đề tài: ......................................................................................................... 10  
CHƯƠNG 1: CÔNG NGHỆ WINDOWS COMMUNICATION FOUNDATION.................13  
1.1. Tổng quan về Windows Communication Foundation.................................................... 13  
1.1.1. Windows Communication Foundation là gì?.......................................................... 13  
1.1.2. Tại sao sử dụng WCF?.......................................................................................... 14  
1.2. Kiến trúc của Windows Communication Foundation .................................................... 16  
1.2.1. Hợp đồng (Contracts) ............................................................................................ 17  
1.2.2. Dịch vụ thực thi (Runtime service) ........................................................................ 18  
1.2.3. Bản tin (Message).................................................................................................. 19  
1.2.4. Chứa và kích hoạt (Host and activation)................................................................. 19  
1.3. Các tính năng của WCF................................................................................................ 19  
1.3.1. Giao dịch (Transaction) ......................................................................................... 19  
1.3.2. Chứa (Host)........................................................................................................... 20  
1.3.3. Bảo mật (Security)................................................................................................. 20  
1.4. Mô hình lập trình với WCF........................................................................................... 20  
1.4.1. Các phương pháp lập trình..................................................................................... 21  
1.4.2. Nguyên lý ABCs.................................................................................................... 26  
1.4.3. Địa chỉ (Address)................................................................................................... 26  
1.4.4. Liên kết (Binding) ................................................................................................. 29  
1.4.5. Hợp đồng (Contract).............................................................................................. 33  
CHƯƠNG 2: GIỚI THIỆU GIẢI PHÁP CRM CHO DOANH NGHIỆP...............................45  
2.1. CRM là gì?................................................................................................................... 45  
2.2. Lịch sử học thuyết CRM............................................................................................... 47  
2.3. Các khái niệm liên quan trọng trong CRM.................................................................... 49  
2.3.1. Tiềm năng.............................................................................................................. 49  
2.3.2. Tổ chức ................................................................................................................. 49  
2.3.3. Liên h.................................................................................................................. 49  
2.3.4. Cơ hội.................................................................................................................... 49  
2.3.5. Chiến dịch ............................................................................................................. 49  
2.3.6. Hợp đồng............................................................................................................... 49  
2.3.7. Tình huống ............................................................................................................ 49  
2.3.8. Sản phẩm............................................................................................................... 50  
2.3.9. Đối tác................................................................................................................... 50  
2.3.10. Đối thủ................................................................................................................. 50  
2.4. Lợi ích của CRM.......................................................................................................... 50  
CHƯƠNG 3: SỬ DỤNG CÔNG NGHỆ WCF ĐỂ XÂY DỰNG HỆ THỐNG CRM WCF 2010  
.............................................................................................................................................52  
3.1. Vấn đề đặt ra ................................................................................................................ 52  
3.2. Tổng quan về CRM WCF 2010 .................................................................................... 54  
3.3. Quy trình tác nghiệp của CRM WCF 2010 .................................................................... 56  
3.3.1. Quy trình tiếp th................................................................................................... 56  
3.3.2. Quy trình Bán hàng................................................................................................ 57  
3.3.3. Quy trình dịch vụ sau bán hàng.............................................................................. 58  
4
3.4. Các use case chính của hệ thống CRM WCF 2010........................................................ 59  
3.4.1. Quản lý tổ chức ..................................................................................................... 59  
3.4.2. Quản lý cơ hội ....................................................................................................... 60  
3.4.3. Quản lý hợp đồng .................................................................................................. 61  
3.4.4. Quản lý tiềm năng.................................................................................................. 62  
3.4.5. Quản lý chiến dịch................................................................................................. 64  
3.4.6. Quản lý báo cáo..................................................................................................... 65  
3.5. Biểu đồ tuần tự của hệ thống ........................................................................................ 66  
3.5.1. Thêm, sửa tổ chức ..................................................................................................... 66  
3.5.2. Xóa tổ chức ............................................................................................................... 66  
3.5.3. Thêm, sửa tiềm năng ................................................................................................... 67  
3.5.4. Xóa tiềm năng ........................................................................................................... 67  
3.5.5. Thêm, sửa cơ hội....................................................................................................... 68  
3.5.6. Xóa cơ hội................................................................................................................. 68  
3.5.7. Thêm, sửa hợp đồng .................................................................................................. 69  
3.5.8. Xóa hợp đồng............................................................................................................ 69  
3.5.9. Thêm, sửa liên h...................................................................................................... 70  
3.5.10. Xóa liên h.............................................................................................................. 70  
3.5.11. Thêm, sửa chiến dịch............................................................................................... 71  
3.5.12. Xóa chiến dịch......................................................................................................... 71  
3.5. Kiến trúc và công cụ phát triển CRM WCF 2010.......................................................... 72  
3.5.1. Kiến trúc của CRM WCF 2010.............................................................................. 72  
3.5.2. Môi trường phát triển CRM WCF 2010 ................................................................. 73  
3.6. Giao diện minh họa các phân hệ chính của CRM WCF 2010........................................ 73  
3.6.1. Phân hệ Tổ chức ..................................................................................................... 73  
3.6.2. Phân hệ liên h...................................................................................................... 75  
3.6.3. Phân hệ cơ hội ....................................................................................................... 76  
KẾT LUẬN ..........................................................................................................................78  
TÀI LIỆU THAM KHẢO.....................................................................................................78  
5
BẢNG CÁC KÝ HIỆU VIẾT TẮT  
Ký hiệu  
SOA  
Từ viết tắt  
Ý nghía  
Service-oriented architecture  
Kiến trúc hướng dịch vụ  
WCF  
Windows Communication  
Foundation  
Công nghệ mới của Microsoft trong  
.NET 3.0  
Quản lý quan hệ khách hàng  
CRM  
Customer relationship  
management  
BẢNG DANH SÁCH CÁC HÌNH VẼ  
Hình vẽ  
Trang  
Hình 1 1: Kiến trúc của mô hình CORBA  
Hình 1 2: Kiến trúc của mô hình EJB  
Hình 1 3: Kiến trúc của mô hình DCOM  
Hình 1 4: Kiến trúc cơ bản của SOA  
Hình 1 5: Kiến trúc .NET 3.0  
7
7
8
9
11  
13  
15  
24  
31  
45  
51  
54  
55  
56  
57  
Hình 1 6: Khả năng hợp nhất của WCF  
Hình 1 7: Kiến trúc của WCF (microsoft.com)  
Hình 1 8: Mô hình lập trình WCF  
Hình 1 9: Sơ đồ lựa chọn Binding  
Hình 1 10: “Khách hàng là trung tâm của mọi hoạt động”  
Hình 1 11: Quy trình chung của hệ thống CRM  
Hình 1 12: Quy trình tiếp thị  
Hình 1 13: Quy trình bán hàng  
Hình 1 14: Quy trình dịch vụ sau bán hàng  
Hình 1 15: Sơ đồ use case quản lý tổ chức  
6
Hình 1 16: Sơ đồ use case quản lý cơ hội  
Hình 1 17: Sơ đồ use case quản lý hợp đồng  
Hình 1 18: Sơ đồ use case quản lý tiềm năng  
Hình 1 19: Sơ đồ use case quản lý chiến dịch  
Hình 1 20: Sơ đồ use case quản lý báo cáo  
58  
59  
60  
62  
63  
64  
64  
65  
65  
66  
66  
67  
67  
68  
68  
69  
69  
70  
71  
73  
74  
Hình 1 21: Biểu đồ tuần tự thêm ,sửa tổ chức  
Hình 1 22: Biểu đồ tuần tự xóa tổ chức  
Hình 1 23: Biểu đồ tuần tự thêm, sửa tiềm năng  
Hình 1 24: Biểu đồ tuần tự xóa tiềm năng  
Hình 1 25: Biểu đồ tuần tự thêm, sửa cơ hội  
Hình 1 26: Biểu đồ tuần tự xóa cơ hội  
Hình 1 27: Biểu đồ tuần tự thêm, sửa hợp đồng  
Hình 1 28: Biểu đồ tuần tự xóa hợp đồng  
Hình 1 29: Biểu đồ tuần tự thêm, sửa liên hệ  
Hình 1 30: Biểu đồ tuần tự xóa liên hệ  
Hình 1 31: Biểu đồ tuần tự thêm, sửa chiến dịch  
Hình 1 32: Biểu đồ tuần tự xóa chiến dịch  
Hình 1 33: Kiến trúc CRM WCF 2010  
Hình 1 34: Giao diện phân hệ Tổ chức  
Hình 1 35: Giao diện phân hệ Liên hệ  
Hình 1 36: Giao diện phân hệ Cơ hội  
7
LỜI MỞ ĐẦU  
1. Tính cấp thiết của đề tài:  
Hiện tại đã có rất nhiều phần mềm dành cho các doanh nghiệp ra đời nhằm nâng cao  
hiệu quả kinh doanh. Tuy nhiên do tính phức tạp và không đồng nhất của các nền  
tảng công nghệ hiện nay nên việc các doanh nghiệp tái sử dụng các hệ thống cũ và  
vấn đề giao tiếp giữa các hệ thống khác nhau chưa thể đáp ứng được. Đồng thời với  
các doanh nghiệp muốn triển khai các hệ thống ứng dụng của mình trên diện rộng  
với nhiều chi nhánh thì vẫn gặp nhiều khó khăn do các phần mềm chưa đáp ứng  
được vấn đề bảo mật khi trao đổi thông tin qua môi trường Internet cũng như khó  
khăn trong việc triển khai và quản lý hệ thống. Điều này dẫn đến doanh nghiệp nói  
chung và nhà quản lý doanh nghiệp nói riêng gặp rất nhiều khó khăn và không thể  
tập trung thời gian cho việc quản lý và hoạch định chiến lược kinh doanh cho doanh  
nghip. Ví dụ, với các doanh nghiệp đa chi nhánh thì hiện tại việc thống kê, hạch  
toán sẽ phải thực hiện riêng rẽ trên từng chi nhánh rồi mới được người quản lý tổng  
hợp lại, điều này gây lãng phí thời gian và công sức, đồng thời có thể gây thiếu đồng  
bộ về thông tin giữa các chi nhánh.  
Các kiến trúc phân tán đã ra đời để giải quyết vấn đề này như CORBA, EJB,  
DCOM. Tuy nhiên chúng vẫn còn khá hạn chế và chưa đáp ứng được nhu cầu của  
khách hàng.  
CORBA - Common Object Requesting Broker Architecture  
- CORBA được định nghĩa bởi Object Management Group (OMG) là một kiến trúc  
phân tán mở, độc lập nền tảng và độc lập ngôn ngữ. Với CORBA các thành phần  
của hệ thống có thể được viết trên nhiều ngôn ngữ và chạy trên các nền tảng khác  
nhau vẫn có thể làm việc được với nhau.  
- Ưu nhược điểm của CORBA là các lập trình viên có thể chọn bất kỳ ngôn ngữ, nền  
tảng phần cứng, giao tiếp mạng và các công nghệ để phát triển mà vẫn thỏa mãn các  
tính chất của CORBA. Tuy nhiên, CORBA có một số nhược điểm là: nó là ngôn  
ngữ lập trình bậc thấp, rất phức tạp, khó học, và cần một đội ngũ phát triển có kinh  
nghiệm. Ngoài ra các đối tượng CORBA cũng khó tái sử dụng.  
8
Hình 1 36: Kiến trúc của mô hình CORBA  
EJB - Enterprise JavaBeans  
- Kiến trúc EJB là một kiến trúc thành tố bên phía máy chủ dùng cho việc phát triển  
và triển khai các ứng dụng phân tán hướng đối tượng cỡ vừa và lớn  
- EJB là một kiến trúc tốt cho việc tích hợp các hệ thống vì nó là độc lập nền tảng  
nhưng nó cũng gặp vấn đề là: nó không phải một chuẩn mở, khả năng giao tiếp với  
các chuẩn khác vẫn còn hạn chế.  
Hình 1 37: Kiến trúc của mô hình EJB  
9
DCOM - Distributed Component Object Model  
- DCOM là một mô hình phân tán dễ triển khai với chi phí thấp. Mô hình  
Component Object Model (COM) định nghĩa cách thức các thành phần và Client  
liên lạc trao đổi với nhau trong cùng một máy. DCOM mở rộng COM bằng cách sử  
dụng các giao thức mạng chuẩn khi cần trao đổi dữ liệu với máy khác trên mạng.  
DCOM hỗ trợ kết nối giữa các đối tượng và các kết nối này có thể thay đổi khi ứng  
dụng đang chạy.  
- DCOM mang đến nhiều ưu điểm như tính ổn định, không phụ thuộc vị trí địa lý,  
quản lý kết nối hiệu quả và dễ dàng mở rộng, là một lựa chọn tốt cho các doanh  
nghiệp sử dụng công nghệ trên Windows để chạy các ứng dụng có yêu cầu cao về sự  
chính xác và ổn định. Tuy nhiên các công nghệ của Microsoft có một nhược điểm  
lớn là chúng bị giới hạn trên nn tảng Windows, đặc biệt các hệ thống DCOM khó  
tái sử dụng và bị chặn bởi Firewall khi giao tiếp qua Internet.  
Hình 1 38: Kiến trúc của mô hình DCOM  
2. Mục tiêu của đề tài:  
Trước các khó khăn trên thì các doanh nghiệp cần có một cách tiếp cận mới để giải  
quyết vấn môi trường không đồng nhất và tốc độ thay đổi đến chóng mặt của thực tế  
trong khi phải xoay sở với nguồn ngân sách hạn hẹp và nền kinh tế khó khăn. May  
thay, đã có một hướng tiếp cận giải quyết khá toàn diện các vấn đề trên và đã được  
triển khai trong thực tế. Đó là “Kiến trúc hướng dịch vụ” – Service Oriented  
Architecture (SOA).  
Kiến trúc hướng dịch vụ là một hướng tiếp cận với việc thiết kế và tích hợp các phần  
mềm, chức năng, hệ thống theo dạng các module. Trong đó mỗi module đóng vai trò  
là một “dịch vụ”, và có khả năng được truy cập qua môi trường mạng. Hiểu một  
10  
cách đơn giản thì một hệ thống SOA là một tập các dịch vụ được chuẩn hóa trên môi  
trường mạng và trao đổi với nhau trong ngữ cảnh một tiến trình nghiệp vụ..  
Hình 1 39: Kiến trúc cơ bản của SOA  
SOA tách riêng phần thực hiện dịch vụ (phần mềm) 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 khách (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ụ.  
Ưu điểm của kiến trúc hướng dịch vụ  
- Tái sử dụng phần mềm: Nếu gói mã mà tạo thành một dịch vụ có quy mô và kích  
thước phù hợp sau đó nó có thể được tái sử dụng cho lần kế tiếp, một đội phát triển  
cần chức năng cụ thể đó cho một ứng dụng phần mềm mới mà nó mong muốn xây  
dựng. Họ không cần biết bất cứ thứ gì về việc mã được gói chặt như thế nào hay nó  
có nguồn gốc từ đâu. Tất cả những thứ mà họ cần làm đó là xây dựng mt sự kết nối  
đến mã đó.  
11  
- Tính linh hoạt và dễ dàng triển khai: Phía triệu gọi dịch vụ không cần quan tâm  
đến công nghệ nền tảng của phía Service. Nó mang đến khả năng linh hoạt cao và  
nhiều lợi ích khác. Trong một hệ thống SOA ta gọi dịch vụ thông qua các interface  
theo một dạng thức chuẩn nên khi cần kết nối với các đối tác thương mại thì những  
interface chuẩn càng đem lại nhiều lợi ích hơn. Với một hệ thống SOA thật dễ dàng  
khi cung cáp một loạt những dịch vụ ra bên ngoài cho một đối tác nào đó sử dụng.  
Tương tự cho điều ngược lại, nếu các đối tác đã xây dựng một hệ thống SOA thì  
việc đem sử dụng chức năng một số dịch vụ của họ vào sử dụng bên trong hệ thống  
của mình cũng thật dễ dàng và nhanh chóng.  
- Khả năng thích ứng cao với những thay đổi trong tương lai: Các phương pháp tiếp  
cận truyền thống trong quy trình phát triển phần mềm có thể mô tả ngắn gọn là  
người dùng mô tả họ cần gì và công ty phát triển phần mềm sẽ triển khai theo yêu  
cầu. Quy trình này đôi khi gặp khó khăn khi gặp những tình huống thay đổi không  
định trước. Với SOA, công ty phát triển phần mềm có thể tạo nên những quy trình  
nghiệp vụ uyển chuyển , phức tạp có khả năng biến đổi tuy theo yêu cầu của khách  
hàng.  
WCF là một công nghệ được Microsoft đưa ra trong bản .NET 3.0. WCF là nền tảng  
giúp xây dựng các ứng dụng theo kiến trúc hướng dịch vụ. WCF không phải là công  
nghệ để hỗ trợ việc xử lý các nghiệp vụ cho ứng dụng mà nó giúp xây dựng các dịch  
vụ mà việc xử lý nghiệp vụ được thực hiện bởi các ngôn ngữ lập trình quen thuộc  
trong .NET như C# hay VB.NET. WCF sẽ giúp các tầng của ứng dụng có thể gọi  
nhau qua môi trường Internet hay LAN. Điều này giải quyết được vấn đề mở rộng  
phạm vi hoạt động đa chi nhánh của doanh nghiệp và giúp doanh nghiệp cũng như  
nhà phát triển phần mềm có thể tái sử dụng các hệ thống đang có. Luận văn này sẽ  
giới thiệu về công nghệ WCF cùng việc sử dụng nó để xây dựng hệ thống CRM, là  
một hệ thống quan trọng trong việc nâng cao hiệu quả kinh doanh trong doanh  
nghiệp.  
12  
CHƯƠNG 1: CÔNG NGHỆ WINDOWS COMMUNICATION  
FOUNDATION  
1.1. Tổng quan về Windows Communication Foundation  
1.1.1. Windows Communication Foundation là gì?  
Windows Communication Foundation (WCF) là một công nghệ được Microsoft giới  
thiệu tại Hội nghị các nhà phát triển sản phẩm Microsoft (Microsoft Product  
Developers Conference 2003) ở Los Angeles, California năm 2003. WCF được biết  
đến với cái tên quen thuộc hơn là Indigo trong công cụ phát triển Visual Studio  
2005.  
WCF là một bộ các thư viện lớp được xậy dựng trên nền tảng .NET Framework 2.0  
CLR và tích hợp trong .NET Framework 3.0 cùng với WF, WPF và Windows  
Cardspace.  
Hình 1 40: Kiến trúc .NET 3.0  
WCF là công nghệ nền tảng nhằm 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. Vào tháng 11 năm 2005, .NET  
2.0 được Microsoft phát hành trong đó có cung cấp các hàm API riêng biệt cho các  
liên lạc dựa trên SOAP để tối đa hoá sự làm việc giữa các nền tảng sử dụng Web  
Services, đồng thời .NET 2.0 còn cung cấp các API để tối ưu việc liên lạc dựa trên  
mã nhị phân giữa các ứng dụng chạy trên hệ thống Windows gọi là .NET Remoting,  
các API cho các giao dịch phân tán, và API cho liên lạc dị bộ. WCF thống nhất các  
API này 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ụ.  
WCF có thể sử dụng các bản tin SOAP giữa hai tiến trình, do đó làm cho các ứng  
dụng dựa trên WCF có thể làm việc với các tiến trình khác thông qua việc giao tiếp  
sử dụng bản tin SOAP. Khi một tiến trình WCF liên lạc với một tiến trình không là  
WCF, các bản tin SOAP được mã hoá trên cơ sở XML, nhưng khi nó liên lạc với  
13  
một tiến trình WCF khác, bản tin SOAP có thể được tối ưu hoá dựa trên mã hoá nhị  
phân.  
WCF không chỉ là một phương pháp khác để xây dựng hệ thống phân tán mà còn  
đem đến nhiều tính năng mới hơn so với các công nghệ trước đó.  
1.1.2. Tại sao sử dụng WCF?  
Như phần trên đã trình bày, .NET 2.0 hỗ trợ rất nhiều phương pháp liên lạc giữa các  
ứng dụng khác nhau nhằm vào các mục tiêu khác nhau. Các phương pháp liên lạc  
này khá phức tạp và phải mất nhiều thời gian để làm chủ được công nghệ. Tuy nhiên  
kiến thức thu được từ việc triển khai một phương pháp ít có khả năng dùng được khi  
làm việc với phương pháp khác.  
Với việc ra đời của WCF, mọi phương pháp liên lạc trước kia đều có thể thực hiện  
trên WCF. Do vậy nhà phát triển chỉ cần làm chủ được công nghệ WCF là có thể  
xây dựng các ứng dụng một cách nhanh chóng.  
WCF là một mô hình lập trình cho phép nhà phát triển xây dựng các giải pháp dịch  
vụ đảm bảo tính ổn định, và bảo mật và thậm chí là đảm bảo giao dịch. Nó làm đơn  
giản hoá việc phát triển các ứng dụng kết nối và đưa ra cho nhà phát triển những giá  
trị mà có thể họ chưa nhận ra ngay, đó là cách tiếp cận phát triển hệ thống phân tán  
thống nhất, đơn giản, và quản lý được.  
Do WCF được xây dựng trên cơ sở của .NET Framework 2.0 CLR, nó là tập các lớp  
cho phép các nhà phát triển xây dựng các ứng dụng hướng dịch vụ bằng môi trường  
lập trình quen thuc của họ như VB.NET hay C#.  
Microsoft đưa ra WCF với kỳ vọng WCF sẽ giải quyết được ba mục tiêu:  
- Hợp nhất công nghệ đã tồn tại  
- Tương tác đa nền  
- Phát triển hướng dịch vụ  
14  
Hình 1 41: Khả năng hợp nhất của WCF  
Mục tiêu 1: Hợp nhất công nghệ  
Bài toán xử lý với các ứng dụng phân tán luôn là một bài toán khó với các nhà phát  
triển. Sự cạnh tranh của các công nghệ phân tán đầu những năm 1990 đã dẫn đến sự  
tranh cãi: Sẽ chọn công nghệ nào là công nghệ tốt nhất, phù hợp nhất để phát triển  
hệ thống phân tán trong thời gian dài. Nếu như một hệ thống được phát triển dựa  
trên môi trường HTTP thì chắc chắn phải thay đổi mô hình lập trình nếu muốn triển  
khai trên môi trường TCP. Hoặc như ta có một hệ thống xây dựng theo mô hình  
Web Services, hệ thống này không thể hỗ trợ các giao dịch hướng Message nếu như  
không thay đổi mô hình lập trình. Vậy tại sao lại không có một công nghệ tập hợp  
tất cả những ưu điểm của các công nghệ trước đó.  
Microsoft đưa ra giải pháp WCF giúp giải quyết điều đó. WCF tránh được việc thay  
đổi mô hình giao tiếp khi làm việc với nhiều công nghệ phân tán, cho phép sử dụng  
một API đơn giản và trong sáng.  
WCF tổng hợp được những gì tốt nhất của các công nghệ phân tán hiện có. WCF  
mang đến sự hiệu quả của ASMX, xử lý giao dịch của Enterprise Service, linh hoạt  
của .NET Remoting, ưu điểm trong hướng message của MSMQ, bảo mật của WSE.  
Microsoft đã mang tất cả những điều đó để xây dựng một nền cơ sở công nghệ độc  
lập và vững chắc.  
15  
Mục tiêu 2: Tương tác đa nền  
Hầu hết các công ty phần mềm lớn đều sử dụng những giao thức riêng gắn liền với  
một nền tảng nhất định nào đó. Mặt khác một doanh nghiệp lớn thường có các hệ  
thống riêng rẽ, mua ở những thời điểm khác nhau, của những công ty khác nhau. Và  
tất nhiên chúng sẽ không tương thích tốt với nhau. Việc liên kết các hệ thống lại  
thành một thể thống nhất và làm việc hiệu quả là một yêu cầu cần thiết.  
WCF sẽ làm điều đó thay vì chúng ta. Thế giới công nghệ sẽ không nói chuyện với  
nhau bằng các ngôn ngữ khác nhau nữa, các hệ thống có thể tồn tại một cách hòa  
bình với nhau.  
Mục tiêu 3: Phát triển hướng dịch vụ  
Công nghệ và nghiệp vụ thay đổi rất nhanh, doanh nghiệp phải đầu tư một lượng  
lớn kinh phí cho việc phát triển ứng dụng. Trong nhiều năm, các lập trình viên và  
các tổ chức cố gắng xây dựng phần mềm trên mô hình hướng đối tượng (OOP) để  
phù hợp với thực tế. Nhưng thiết kế hệ thống cần phải linh hoạt và chuẩn mực để  
việc phát triển nghiệp vụ sau này không gặp khó khăn. Chính vì vậy các dịch vụ  
nghiệp vụ ra đời. WCF là một công cụ phát triển hướng dịch vụ. WCF đảm bảo các  
dịch vụ được xây dựng một cách tự động theo nguyên tắc SOA. Điều đó đảm bảo  
giảm giá thành bảo trì, cho phép thay đổi và tương tác đa nền.  
1.2. Kiến trúc của Windows Communication Foundation  
Windows Communication Foundation là một Framework trong .NET 3.0. Nó gồm  
rất nhiều các thư viện, không gian tên (namespace) cho việc lập trình ứng dụng  
WCF. Dưới đây là hình ảnh mô tả kiến trúc WCF và các tầng chính của nó.  
16  
Hình 1 42: Kiến trúc của WCF (microsoft.com)  
1.2.1. Hợp đồng (Contracts)  
Khái niệm contract trong WCF cũng giống như các hợp đồng mà ta ký trong đời  
sống thật. Một hợp đồng ta ký có thể chứa các thông tin như kiểu công việc ta sẽ  
làm, và những thông tin mà ta muốn đưa ra cho các bên khác. WCF contract cũng  
chứa các thông tin tương tự như vậy. Contract định nghĩa các đặc tả trong hệ thống  
bản tin.Thông thường có các loại contract sau:  
Data Contract: Mô tả các tham số cho các bản tin mà một dịch vụ có thể  
tạo ra hay sử dụng. Các tham số bản tin được định nghĩa bằng các tài liệu sử  
dụng ngôn ngữ đặc tả XML Schema (XSD), điều này cho phép các hệ thống  
hiểu XML có thể xử lý tài liệu dễ dàng. Các dịch vụ khi liên lạc với nhau có thể  
không cần đồng ý với nhau về các kiểu, nhưng cần đồng ý về contract dữ liệu,  
nghĩa là đồng ý về các tham số và các kiểu trả về.  
Message Contract: Định nghĩa các phần có trong bản tin sử dụng các giao  
thức SOAP, và nó cho phép điều khiển sâu hơn tới các phần trong bản tin khi  
có yêu cầu sự chính xác như vậy.  
17  
Services Contract: Đặc tả chi tiết các phương thức của dịch vụ, và được  
phân phối như là một giao diện trong các ngôn ngữ lập trình như Visual Basic  
hay Visual C#. Có thể hình dung vcontract dịch vụ một cách gián tiếp như  
sau: “Đây là các kiểu dữ liệu của các bản tin của tôi, đây là nơi tôi cung cấp, và  
đây là các giao thức mà tôi có thể liên lạc”.  
Policy and Bindings: Mô tả các điều kiện cần có để giao tiếp với một dịch vụ.  
Các chính sách sẽ bao gồm cả các yêu cầu về bảo mật và các điều kiện khác  
cần phải có khi kết nối với một dịch vụ.  
1.2.2. Dịch vụ thực thi (Runtime service)  
Lớp dịch vụ thực thi chứa các hành xử sẽ xảy ra trong quá trình thực hiện của dịch  
vụ, nghĩa là các hành xử thực thi của dịch vụ. Ta sẽ thấy một số các hành xử như  
sau:  
Throttling behavior: Điều khiển luồng nhằm quy định xem có bao nhiêu  
bản tin được xử .  
Error behavior: Hành xử lỗi quy định những hành động khi lỗi xảy ra  
trong hệ thống.  
Metadata behavior: Hành xử với các siêu dữ liệu quy định xem làm thế  
nào và khi nào thì các siêu dữ liệu được đưa ra bên ngoài dịch vụ.  
Instance behavior: Hành xử thực thể quy định xem có bao nhiêu thực thể  
của dịch vụ đó được chạy.  
Transaction behavior: Hành xử giao dịch cho phép việc rollback các giao  
dịch nếu xảy ra lỗi.  
Message inspection: Kiểm tra bản tin đem lại cho dịch vụ khả năng kiểm  
tra tất cả hay một số phần của bản tin.  
Dispatch behavior: Khi mt bản tin được xử lý bởi nền tảng WCF, dịch vụ  
Dispatch behavior xác định xem bản tin được xử lý như thế nào.  
Concurrency behavior: Hành xử đồng thời xác định xem việc xử lý thế  
nào với việc đa luồng của mỗi dịch vụ hay mỗi thực thể của dịch vụ. Hành xử  
này giúp cho việc điều khiển số lượng luồng có thể truy nhập tới một thực thể  
của dịch vụ.  
18  
Parameter filtering: Khi một bản tin được đưa tới một dịch vụ, sẽ xảy ra  
một số hành động dựa trên nội dung phần đầu đề của bản tin. Phần lọc tham số  
sẽ thực hiện lọc các đầu đề bản tin và thực hiện các hành động đặt sẵn dựa trên  
việc lọc đầu đề bản tin.  
1.2.3. Bản tin (Message)  
Lớp bản tin là tập hợp các kênh. Mỗi kênh là một thành phần xử lý bản tin theo một  
cách nào đó. Một tập các kênh thường được gọi là ngăn xếp kênh. Các kênh làm  
việc trên bản tin và trên đầu đề của bản tin. Lớp này khác với lớp thực thi dịch vụ  
chủ yếu bởi sự khác nhau trong việc xử lý nội dung bản tin.  
Có hai kênh khác nhau là kênh vận chuyển (transport channel) và kênh điều khiển  
(control channel).  
Kênh vận chuyển phụ trách việc đọc và ghi các bản tin từ mạng (network)  
hoặc từ một số điểm giao dịch bên ngoài.  
Kênh điều khiển thực hiện xử lý bản tin theo giao thức, thông thường làm  
việc bằng cách đọc và ghi thêm các đầu đề cho bản tin.  
1.2.4. Chứa và kích hoạt (Host and activation)  
Nhìn một cách tổng thể thì một dịch vụ thực chất là một chương trình. Cũng giống  
như các chương trình khác, một dịch vụ cần phải chạy trong một tệp thực thi. Dịch  
vụ này thường được gọi là dịch vụ tự chứa.  
Các dịch vụ còn có thể được chứa, hoặc chạy trong một tệp thực thi được quản lý  
bởi một agent bên ngoài như IIS hay Windows Activation Services (WAS). WAS  
cho phép WCF được kích hoạt một cách tự động khi phân phối tới một máy tính có  
chạy WAS.  
1.3. Các tính năng của WCF  
1.3.1. Giao dịch (Transaction)  
Một giao dịch là một đơn vị của công việc. Một giao dịch đảm bảo chắc chắn rằng  
mọi thứ diễn ra trong giao dịch thành công hay thất bại đều là kết quả tổng thể. Ví  
dụ, nếu một giao dịch chứa ba mục công việc cần thực hiện, trong quá trình thực  
hiện giao dịch, một trong số các mục đó bị thất bại, khi đó cả ba mục sẽ là thất bại.  
Giao dịch chỉ thành công khi cả ba mục công việc đều thành công. Giao dịch thường  
thấy trong các thao tác với cơ sở dữ liệu.  
19  
WCF cho phép đưa vào việc xử lý giao dịch như trên với các liên lạc. Nhà phát triển  
có thể nhóm các liên lạc với nhau thành các giao dịch. Ở mức doanh nghiệp, tính  
năng này cho phép bạn thực hiện các công việc giao dịch qua các nền tảng khác  
nhau.  
1.3.2. Chứa (Host)  
WCF cho phép các dịch vụ được chứa trong một số lớn các môi trường khác nhau,  
như Windows NT Services, Windows Forms, và ứng dụng console, cũng như ở trên  
IIS (Internet Information Server) và WAS (Windows Activation Services).  
Chứa ứng dụng trên IIS còn có thêm các lợi điểm khác là dịch vụ có thể nhận các ưu  
điểm của rất nhiều tính năng có sẵn trên IIS, ví dụ IIS có thể điều khiển một cách tự  
động việc bắt đầu hay kết thúc một dịch vụ.  
1.3.3. Bảo mật (Security)  
Bảo mật là tính năng không thể thiếu trong WCF nói riêng và trong liên lạc nói  
chung. Trong WCF, tất cả mọi thứ từ các bản tin tới các client hay server đều phải  
xác thực và WCF có tính năng để đảm bảo rằng các bản tin không bị lẫn trong quá  
trình vận chuyển. WCF bao gồm việc đảm bảo tính toàn vẹn và bo mật của bản tin.  
WCF còn cho phép bạn tích hợp ứng dụng của bạn với cơ sở hạ tầng bảo mật sẵn có,  
bao gồm cả các chuẩn bên ngoài môi trường Windows bằng cách sử dụng các bản  
tin SOAP bảo mật.  
1.4. Mô hình lập trình với WCF  
Nếu bạn đã từng làm việc với dịch vụ web, bạn sẽ thấy mô hình này quen thuộc với  
bạn theo một cách nào đó. Khi bạn tạo một dịch vụ web, bạn thực sự tạo ra một dịch  
vụ (service). Dịch vụ web chứa một tài liệu XML để mô tả tất cả mọi thứ cần biết về  
dịch vụ đó. Tài liệu này được mô tả bằng ngôn ngữ Web Service Description  
Language (ngôn ngữ mô tả dịch vụ web). Nó chứa ba phần:  
Dịch vụ (Service): Chứa thông tin về vị trí của dịch vụ  
Liên kết (Binding): Chứa thông tin về cách liên lạc với dịch vụ, như dịch  
vụ sử dụng giao thức gì, vv.  
Kiểu cổng (PortType): Giải thích về dịch vụ sẽ làm gì  
20  
Mô hình dịch vụ trên WCF cũng tương tự như với mô hình dịch vụ web. Điểm khác  
biệt là ở cách đặt tên. Trong WCF các phần không được gọi là service, binding, và  
portType mà được gọi tương ứng là address (địa chỉ), binding, và contract.  
WCF là một mô hình lập trình cho phép nhà phát triển xây dựng các giải pháp dịch  
vụ đảm bảo tính ổn định, và bảo mật và thậm chí là đảm bảo giao dịch. Nó làm đơn  
giản hoá việc phát triển các ứng dụng nối kết và đưa ra cho nhà phát triển những giá  
trị mà có thể họ chưa nhận ra ngay, đó là cách tiếp cận phát triển hệ thống phân tán  
thống nhất, đơn giản, và quản lý được.  
1.4.1. Các phương pháp lập trình  
Có ba phương pháp hay được sử dụng khi phát triển dịch vụ WCF như sau:  
Phương pháp khai báo (Declarative programming)  
Phương pháp lập trình trực tiếp (Explicit programming)  
Phương pháp sử dụng tập tin cấu hình  
Mỗi phương pháp có ưu điểm và khuyết điểm riêng của nó. Điều đặc biệt về WCF  
là luôn có hơn một cách để giải quyết một vấn đề trong WCF, và ta không nhất thiết  
phải chọn duy nhất một phương pháp nào. Trong thực tế, cách làm tốt nhất là tổ hợp  
các phương pháp để có được sự linh hoạt và mềm dẻo cho dịch vụ.  
Phương pháp khai báo (Declarative programming)  
Lập trình khai báo đạt được thông qua các thuộc tính. Những thuộc tính này được sử  
dụng để định nghĩa các contract và xác định hành xử của dịch vụ. Chúng được sử  
dụng để xác định thêm các tham số để thay đổi các chi tiết của contract và hành xử  
dịch vụ.  
Thuộc tính ServiceContract dùng để quy định là giao diện này định nghĩa các chức  
năng của một dịch vụ. Thuộc tính OperationContract được sử dụng ở các hàm để  
quy định rằng hàm này được khai báo là một phần của dịch vụ. Đó là tất cả những gì  
cần để tạo ra một dịch vụ WCF.  
Thêm nữa, ta không nhất thiết phải sử dụng các giao diện (interface) khi cài đặt một  
dịch vụ, điều này cũng giống như việc ta không cần phải sử dụng giao diện để định  
nghĩa một lớp. Tuy vậy ta nhất thiết phải quy định phần nào thuộc về dịch vụ. Ta có  
thể định nghĩa những phần khác cần cho giao diện, nhưng chỉ những hàm (phương  
thức) có gắn thuộc tính [OperationContract].  
21  
Ví dụ ta có một dịch vụ thực hiện phép tính cộng giữa 2 số nguyên AddInt và 2 số  
thực AddDouble. Ta khai báo dịch vụ như sau:  
[ServiceContract]  
public interface ICalcService  
{
[OperationContract]  
int AddInt(int x, int y);  
[OperationContract]  
double AddDouble(double x, double y);  
}
Như vậy dịch vụ của chúng ta sau khi khai báo sẽ có 2 phương thức (khai báo với  
thuộc tính OperationContract) là AddInt và AddDouble. Tuy nhiên khi khai báo  
trong C#, việc đặt tên AddInt và AddDouble, và có thể có một số hàm add cho các  
kiểu dữ liệu khác, có thể rút gọn lại thành một tên hàm Add mà thôi. Nhưng các dịch  
vụ lại không cho phép đặt trùng tên hàm như thế. Chúng ta có thể khai báo thêm với  
thuộc tính OperationContract để thực hiện, cách làm như sau:  
[ServiceContract]  
public interface ICalcService  
{
[OperationContract(Name="AddInt")]  
int Add(int x, int y);  
[OperationContract(Name="AddDouble")]  
double Add(double x, double y); }  
Vậy là chúng ta sử dụng được phép nạp chồng tên trong C# và sử dụng thêm tham  
sName để quy định thêm tên hàm ở dịch vụ. Ngoài ưu điểm trong việc giải quyết  
nạp chồng tên hàm, ta còn thấy một lợi ích khác nữa là, việc quy định tham số Name  
trong thuộc tính OperationContract còn cho ta thêm linh hoạt trong việc đổi tên các  
hàm trong giao diện mà không làm thay đổi định nghĩa dịch vụ, nghĩa là các ứng  
dụng khác sử dụng dịch vụ này không cần phải biên dịch lại.  
Phương pháp lập trình trực tiếp (Explicit programming)  
Là phương pháp lập trình hướng đối tượng, ta làm việc trực tiếp với các lớp và giao  
diện cung cấp bởi mô hình đối tượng của WCF. Làm việc trực tiếp với mô hình đối  
tượng cho phép nhà phát triển tính linh hoạt cao hơn và khả năng điều khiển tốt hơn  
22  
thông qua mã nguồn của họ. Thêm nữa nó cho phép điều khiển sâu hơn rất nhiều so  
với phương pháp khai báo và phương pháp sử dụng tập tin cấu hình.  
Phương pháp sử dụng tập tin cấu hình  
Cũng giống như phương pháp khai báo, có rất nhiều thứ mà ta có thể quy định liên  
quan đến hành xử của một dịch vụ thông qua tập tin cấu hình của dịch vụ. Điều hay  
trong cách tiếp cận này là những thay đổi ở tập tin cấu hình hoàn toàn không cần  
phải biên dịch lại dịch vụ mới sử dụng được.  
Sau đây là ví dụ sử dụng tập tin cấu hình để định nghĩa dịch vụ tính toán trong ví dụ  
của phần phương pháp khai báo.  
<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
<system.web>  
<compilation debug="true" />  
</system.web>  
<system.serviceModel>  
<services>  
<service behaviorConfiguration="CalculationService.CalcServiceBehavior"  
name="CalculationService.CalcService">  
<endpoint  
address=""  
binding="wsHttpBinding"  
contract="CalculationService.ICalcService">  
<identity>  
<dns value="localhost" />  
</identity>  
</endpoint>  
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"  
/>  
<host>  
<baseAddresses>  
</baseAddresses>  
</host>  
</service>  
</services>  
23  
<behaviors>  
<serviceBehaviors>  
<behavior name="CalculationService.CalcServiceBehavior">  
<serviceMetadata httpGetEnabled="true" />  
<serviceDebug includeExceptionDetailInFaults="false" />  
</behavior>  
</serviceBehaviors>  
</behaviors>  
</system.serviceModel>  
</configuration>  
Mô hình dịch vụ WCF được cung cấp trong không gian tên System.ServiceModel.  
Không gian tên này chứa rất nhiều lớp, nhưng bạn hoàn toàn không cần biết toàn bộ  
chúng. Để sử dụng mô hình và xây dựng dịch vụ, ta thường sử dụng một số lớp sau:  
Lớp  
Mô tả  
Là Liên kết (Binding) mà các điểm cuối dịch vụ có thể sử dụng để  
liên lạc với các ứng dụng khách và dịch vụ web (ASMX)  
BasicHTTPBinding  
NetMsmqBinding  
NetNamedPipeBinding  
NetTCPBinding  
Là Liên kết (Binding) mà các điểm cuối dịch vụ có thể sử dụng để  
liên lạc với các MSMQ khách và các dịch vụ khác  
Là Liên kết (Binding) mà các điểm cuối dịch vụ có thể sử dụng để  
liên lạc với các ứng dụng khách/dịch vụ trên cùng một máy  
Là Liên kết (Binding) mà các điểm cuối dịch vụ có thể sử dụng để  
liên lạc với các ứng dụng khách/dịch vụ ở các máy khác nhau  
Là Liên kết (Binding) mà các điểm cuối dịch vụ có thể sử dụng để  
liên lạc với các ứng dụng khách/dịch vụ sử dụng các giao dịch phân  
tán và các phiên làm việc bảo mật và tin cậy được.  
WSHTTPBinding  
Lớp biểu diễn địa chỉ duy nhất được cung cấp và truy xuất được  
cho máy khách để liên lạc với điểm cuối dịch vụ  
EndpointAddress  
Là phương pháp để tạo mới các địa chỉ đầu cuối với các giá trị  
EndpointAddressBuilding  
tham số xác định  
24  
Là phương pháp trong đó các kiểu kênh khác nhau được tạo ra và  
quản lý, và đưa tới cho các ứng dụng khách để gửi bản tin tới các  
điểm cuối  
ChannelFactory  
Identity  
Cách mà một định danh được xác định, cho phép xác thực giữa các  
điểm cuối khi trao đổi bản tin  
Biểu diễn nội dung của một đầu đề bản tin SOAP  
MessageHeader  
ServiceHost  
Phương pháp cung cấp vật chứa cho các dịch vụ  
Cung cấp truy xuất tới các thuộc tính của thành phần binding trong  
phiên làm việc tin cậy.  
ReliableSession  
Để định nghĩa việc liên lạc của dịch vụ, ta thường hay sử dụng các lớp sau  
Lớp  
Mô tả  
Phần đầu đề chưa thông tin địa chỉ được sử dụng để xác định và liên  
lạc với một điểm cuối  
AddressHeader  
Một tập hợp các đầu đề địa chỉ  
AddressHeaderCollection  
Binding  
Tập hợp các thành phần binding, mỗi binding định nghĩa cách mà  
một điểm cuối liên lạc với thế giới bên ngoài  
Cung cấp địa chỉ và thông tin binding cần thiết cho việc xây dựng  
kênh  
BindingContext  
BindingElement  
CustomBinding  
Biểu diễn một thành phần binding, được sử dụng để xây dựng các  
binding  
Sử dụng để định nghĩa và xây dựng một tuỳ biến binding từ một tập  
các thành phần binding  
Một đơn vị của liên lạc giữa các điểm cuối  
Nội dung của đầu đề bản tin SOAP  
Tập hợp các đầu đề bản tin  
Message  
MessageHeader  
MessageHeaders  
25  
1.4.2. Nguyên lý ABCs  
Chắc chắn đến đây, sẽ có nhiều người đặt ra câu hỏi: Nguyên lý ABC là gì? Thực  
chất, ABC là viết tắt của ba khái niệm quan trọng trong WCF. Đó là: Address,  
Binding Contract.  
Đơn giản hơn:  
Address trả lời cho câu hỏi Where? - Xác định nơi mà lời gọi dịch vụ sẽ  
gửi tới.  
Binding trlời cho câu hỏi How? - Xác định cách thức mà lời gọi sẽ  
được gửi đi.  
Contract trả lời cho câu hỏi What? - Xác định nội dung mà lời gọi sẽ  
gửi đi.  
Hình 1 43: Mô hình lập trình WCF  
Thông thường, bộ ABC được coi như một cổng giao tiếp (endpoint) với thế giới bên  
ngoài của dịch vụ được định nghĩa trong WCF. Để mô tả về endpoint, ta dùng một  
tập tin đặc biệt định dạng XML đó là WSDL (Web Services Description Language).  
WSDL mô tả những gì dịch vụ có thể làm, cách mà từ bên ngoài có thể truy cập  
được dịch vụ cũng như nơi có thể tìm được dịch vụ.  
1.4.3. Địa chỉ (Address)  
Ta phải biết địa chỉ của dịch vụ để có thể gửi được lời gọi. Địa chỉ trong WCF cho  
ta biết giao thức của máy chủ ứng dụng đang chạy dịch vụ cũng như đường dẫn đến  
dịch vụ đó. Định dạng của một địa chỉ dịch vụ có cấu trúc như sau:  
scheme://<machinename>[:port]/path  
26  
Trong đó:  
Thành phn  
Scheme  
Mô tả  
Giao thc ca máy chchy dch vụ  
Tên min ca máy chdch vụ  
Machine name  
Port  
Đây là thành phần không bt buộc, xác định cng giao tiếp  
trên máy ch. Giao thc HTTP mặc định là cng 80  
Đường dn ti dch vụ  
Path  
Các kiểu địa chỉ  
Địa chỉ điểm cuối (endpoint address):  
Địa chỉ điểm cuối giống như ở ví dụ trên, một địa chỉ điểm cuối quy định địa chỉ của  
một điểm cuối dịch vụ cụ thể. Máy khách (chương trình khách) có thể truy nhật dịch  
vụ qua địa chỉ điểm cuối. Ví dụ qua địa chỉ sau:  
Khi máy khách truy nhập dịch vụ thông qua địa chỉ điểm cuối, máy khách có thể nói  
chuyện với dịch vụ và mọi liên lạc từ dịch vụ và đến dịch vụ đều thực hiện thông  
qua địa chỉ này.  
Địa chỉ cơ sở (base address):  
Địa chỉ cơ sở cung cấp một cách để xác định một địa chỉ đơn nhất cho một dịch vụ  
và gán các địa chỉ tương đối cho từng điểm cuối riêng lẻ. Ví dụ, giả sử ta có một  
dịch vụ với ba điểm cuối, ta có thể gán cho dịch vụ đó một địa chỉ cơ sở như sau  
Với địa chỉ cơ sở được gán cho dịch vụ, ta có thể gán cho ba điểm cuối các địa chỉ  
tương đối sau  
27  
Địa chỉ siêu thông tin (mex address):  
Địa chỉ MEX cho phép một máy khách thu thập các thông tin về một dịch vụ nào  
đó. MEX, nghĩa là metadata exchange (trao đổi siêu dữ liệu), là một địa chỉ điểm  
cuối HTTP được sử dụng để lấy thông tin về dịch vụ. Ví dụ địa chỉ sau là một địa  
chỉ MEX:  
Thông tin về dịch vụ cung cấp cho máy khách thông qua địa chỉ MEX được lấy từ  
siêu dữ liệu của dịch vụ. Siêu dữ liệu này chính là những mô tả về dịch vụ.  
Các định dạng địa chỉ  
Khi phát triển một dịch vụ bạn cần lưu ý các điểm sau:  
Môi trường chứa dịch vụ. Môi trường có thể bắt buộc hoặc đòi hỏi địa chỉ phải  
được định dạng theo cách này hay cách khác.  
Nơi địa chỉ được xác định. Bạn có các tuỳ chọn để lưu nó ở tệp cấu hình hoặc  
bạn có thể lưu luôn trong mã nguồn của chương trình của bạn.  
Phần này sẽ giới thiệu với bạn các định dạng địa chỉ khác nhau để bạn có thể hình  
dung về tính linh hoạt và các tuỳ chọn có thể có khi phát triển và phân phối dịch vụ.  
Địa chỉ có cấu trúc chung nhưng có nhiều định dạng địa chỉ khác nhau, phân biệt  
qua chính giao thức trong địa chỉ.  
Bảng các định dạng địa chỉ  
Địa chỉ  
Đặc điểm  
Ví dụ  
Là định dạng địa chhay http://localhost/Service/HelloWorld  
dùng nht  
HTTP  
Địa chHTTPS giống như địa https://localhost/Service/HelloWorld  
chHTTP chkhác là nó quy  
HTTPS  
định vic vn chuyển được  
28  
bo mt bng cách sdng  
SSL (Secure Socket Layer),  
và được quy định bng https.  
Ngoài giao thc (scheme) là  
https, thì địa chHTTPS  
không khác gì với địa chỉ  
HTTP.  
net.tcp://localhost/Service/HelloWorld  
TCP  
net.msmq://localhost/Service/HelloWorl  
d
MSMQ  
net.pipe://localhost/Service/HelloWorld  
PIPE  
IIS  
Địa chIIS cũng giống như http://localhost/Service/HelloWorld.svc  
địa chỉ MSMQ, hơi khác về  
định dng mt chút so vi các  
định dng khác. Địa chIIS  
đòi hi phải có tên thư mục  
o cũng như tên tệp dch v.  
Khi lập trình với các địa chỉ trong Windows Communication Foundation bạn có  
thêm sự linh hoạt trong làm việc với các điểm cuối và dịch vụ bởi bạn hoàn toàn có  
thể lập trình để định nghĩa và xử lý các địa chỉ cơ sở. Trong thực tế, không mấy khi  
các nhà lập trình tạo ra các điểm cuối và các địa chỉ điểm cuối thông qua mã nguồn  
do các địa chỉ và binding bạn sử dụng trong quá trình phát triển dịch vụ thường  
không giống so với các địa chỉ và binding sẽ sử dụng khi phân phối dịch vụ. Thông  
thường là ta định nghĩa các điểm cuối và các địa chỉ trong tệp tin cấu hình. Tuy  
nhiên WCF vẫn có lớp EndpointAddress để hỗ trợ việc lập trình các địa chỉ, điều  
này làm tăng tính linh hoạt cho WCF.  
1.4.4. Liên kết (Binding)  
Các Binding là phương pháp theo đó các chi tiết trong truyền thông được xác định  
để tạo kết nối tới điểm cuối dịch vụ WCF. Các Bindings trong WCF có thể thay đổi  
mức độ phức tạp. Các mức độ này có thể từ đơn giản nhất cho tới cực kỳ phức tạp.  
Khi định nghĩa một binding, ta cần chỉ ra các thông tin ở trong các lĩnh vực sau:  
29  
Protocol (Giao thức): Định nghĩa các thông tin cần sử dụng trong binding  
ví dụ như tính bảo mật, khả năng thực hiện giao dịch, hoặc khả năng truyền bản  
tin một cách tin cậy.  
Transport (Vận chuyển): Định nghĩa giao thức cơ bản được sử dụng trong  
truyền thông.  
Encoding (mã hoá): Định nghĩa việc mã hoá được sử dụng cho các bản tin  
trong quá trình liên lạc.  
WCF cung cấp sẵn một bộ các Binding có thể đáp ứng được phần lớn cái yêu cầu về  
truyền thông trong các ứng dụng phổ biến. Nhưng nếu những gì mà Microsoft cung  
cấp vẫn chưa đủ, chúng ta hoàn toàn có thể xây dựng một kiểu binding bằng cách sử  
dụng CustomBinding.  
Bảng các binding được có sẵn  
Công  
Kiu  
Bo mt  
Phiên  
Giao dch  
nghệ  
(none),  
Transport,  
Message  
Basic  
(none)  
(none),  
(none)  
BasicHttpBinding  
Profile 1.1  
WS  
Transport,  
(Message), Transport,  
(none), Yes  
WSHttpBinding  
Mixed  
Reliable  
WS  
WS  
(Message)  
Reliable  
(none), Yes  
(none), Yes  
WSDualHttpBinding  
(none),  
Reliable  
(Message)  
WSFederationHttpBinding  
(Transport), Reliable,  
.NET  
.NET  
(none), Yes  
(none), Yes  
NetTcpBinding  
Message  
(Transport)  
none,  
(Transport)  
(Transport)  
NetNamedPipeBinding  
30  

Tải về để xem bản đầy đủ

pdf 79 trang yennguyen 17/06/2025 380
Bạn đang xem 30 trang mẫu của tài liệu "Khóa luận Sử dụng công nghệ Windows Communication Foundation trong các ứng dụng trên diện rộng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfkhoa_luan_su_dung_cong_nghe_windows_communication_foundation.pdf