ĐẠ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
2
ĐẠ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
HÀ NỘI - 2009
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 sẽ trì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
2.2. Lịch sử học thuyết CRM ........................................................................................................ 46
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
4
3.3.3. Quy trình dịch vụ sau bán hàng ...................................................................................... 58
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
Quản lý quan hệ khách hàng
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
7
Hình 1 2: Kiến trúc của mô hình EJB
7
Hình 1 3: Kiến trúc của mô hình DCOM
8
Hình 1 4: Kiến trúc cơ bản của SOA
9
Hình 1 5: Kiến trúc .NET 3.0
11
Hình 1 6: Khả năng hợp nhất của WCF
13
Hình 1 7: Kiến trúc của WCF (microsoft.com)
15
Hình 1 8: Mô hình lập trình WCF
24
Hình 1 9: Sơ đồ lựa chọn Binding
31
Hình 1 10: “Khách hàng là trung tâm của mọi hoạt động”
45
Hình 1 11: Quy trình chung của hệ thống CRM
51
Hình 1 12: Quy trình tiếp thị
54
Hình 1 13: Quy trình bán hàng
55
Hình 1 14: Quy trình dịch vụ sau bán hàng
Hình 1 29: Biểu đồ tuần tự thêm, sửa liên hệ
68
Hình 1 30: Biểu đồ tuần tự xóa liên hệ
68
Hình 1 31: Biểu đồ tuần tự thêm, sửa chiến dịch
69
Hình 1 32: Biểu đồ tuần tự xóa chiến dịch
69
Hình 1 33: Kiến trúc CRM WCF 2010
70
Hình 1 34: Giao diện phân hệ Tổ chức
71
Hình 1 35: Giao diện phân hệ Liên hệ
73
Hình 1 36: Giao diện phân hệ Cơ hội
74
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 nghiệp. 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
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 nền 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 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ụ..
10
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ụ
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 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
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
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ử lý.
• 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 một 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ụ.
• 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
18
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
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à bảo 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ì
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.
20
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
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 số
Name để 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
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="CalculationService.CalcServiceBehavior">
23
<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ả
BasicHTTPBinding 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)
NetMsmqBinding 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
NetNamedPipeBinding 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
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 ứng dụng khách/dịch vụ ở các máy khác nhau
WSHTTPBinding 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.
25