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 - Nguyễn Quang Hư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
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ìn...
79 trang |
Chia sẻ: hunglv | Lượt xem: 1083 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu 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 - Nguyễn Quang Hưng, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
ĐẠ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
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 đế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.
MỤC LỤC
BẢNG CÁC KÝ HIỆU VIẾT TẮT
Ký hiệu
Từ viết tắt
Ý nghía
SOA
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
CRM
Customer relationship management
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
56
Hình 1 15: Sơ đồ use case quản lý tổ chức
57
Hình 1 16: Sơ đồ use case quản lý cơ hội
58
Hình 1 17: Sơ đồ use case quản lý hợp đồng
59
Hình 1 18: Sơ đồ use case quản lý tiềm năng
60
Hình 1 19: Sơ đồ use case quản lý chiến dịch
62
Hình 1 20: Sơ đồ use case quản lý báo cáo
63
Hình 1 21: Biểu đồ tuần tự thêm ,sửa tổ chức
64
Hình 1 22: Biểu đồ tuần tự xóa tổ chức
64
Hình 1 23: Biểu đồ tuần tự thêm, sửa tiềm năng
65
Hình 1 24: Biểu đồ tuần tự xóa tiềm năng
65
Hình 1 25: Biểu đồ tuần tự thêm, sửa cơ hội
66
Hình 1 26: Biểu đồ tuần tự xóa cơ hội
66
Hình 1 27: Biểu đồ tuần tự thêm, sửa hợp đồng
67
Hình 1 28: Biểu đồ tuần tự xóa hợp đồng
67
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
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 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.
Hình 1 1: 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 2: Kiến trúc của mô hình EJB
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 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 3: 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ụ..
Hình 1 4: 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 một sự kết nối đến mã đó.
- 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.
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 5: 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 đế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 thuộc 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ụ
Hình 1 6: 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.
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ó.
Hình 1 7: 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.
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 về contract 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ử 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 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.
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à 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.
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].
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 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 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.
<service behaviorConfiguration="CalculationService.CalcServiceBehavior"
name="CalculationService.CalcService">
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.
EndpointAddress
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ụ
EndpointAddressBuilding
Là phương pháp để tạo mới các địa chỉ đầu cuối với các giá trị tham số xác định
ChannelFactory
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
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
MessageHeader
Biểu diễn nội dung của một đầu đề bản tin SOAP
ServiceHost
Phương pháp cung cấp vật chứa cho các dịch vụ
ReliableSession
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.
Để đị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ả
AddressHeader
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
AddressHeaderCollection
Một tập hợp các đầu đề địa chỉ
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
BindingContext
Cung cấp địa chỉ và thông tin binding cần thiết cho việc xây dựng kênh
BindingElement
Biểu diễn một thành phần binding, được sử dụng để xây dựng các binding
CustomBinding
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
Message
Một đơn vị của liên lạc giữa các điểm cuối
MessageHeader
Nội dung của đầu đề bản tin SOAP
MessageHeaders
Tập hợp các đầu đề bản tin
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 và 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 trả lờ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 8: 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://[:port]/path
Trong đó:
Thành phần
Mô tả
Scheme
Giao thức của máy chủ chạy dịch vụ
Machine name
Tên miền của máy chủ dịch vụ
Port
Đây là thành phần không bắt buộc, xác định cổng giao tiếp trên máy chủ. Giao thức HTTP mặc định là cổng 80
Path
Đường dẫn tới dịch vụ
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
Đị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ụ
HTTP
Là định dạng địa chỉ hay dùng nhất
HTTPS
Địa chỉ HTTPS giống như địa chỉ HTTP chỉ khác là nó quy định việc vận chuyển được bảo mật bằng cách sử dụng SSL (Secure Socket Layer), và được quy định bằng https. Ngoài giao thức (scheme) là https, thì địa chỉ HTTPS không khác gì với địa chỉ HTTP.
https://localhost/Service/HelloWorld
TCP
net.tcp://localhost/Service/HelloWorld
MSMQ
net.msmq://localhost/Service/HelloWorld
PIPE
net.pipe://localhost/Service/HelloWorld
IIS
Địa chỉ IIS cũng giống như địa chỉ MSMQ, hơi khác về định dạng một chút so với các định dạng khác. Địa chỉ IIS đòi hỏi phải có tên thư mục ảo cũng như tên tệp dịch 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:
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
Kiểu
Công nghệ
Bảo mật
Phiên
Giao dịch
BasicHttpBinding
Basic Profile 1.1
(none), Transport, Message
(none)
(none)
WSHttpBinding
WS
Transport, (Message), Mixed
(none), Transport, Reliable
(none), Yes
WSDualHttpBinding
WS
(Message)
Reliable
(none), Yes
WSFederationHttpBinding
WS
(Message)
(none), Reliable
(none), Yes
NetTcpBinding
.NET
(Transport), Message
Reliable, (Transport)
(none), Yes
NetNamedPipeBinding
.NET
(Transport)
none, (Transport)
(none), Yes
NetMsmqBinding
.NET
Message, (Transport), Both
(none)
(none), Yes
NetPeerTcpBinding
Peer
(Transport)
(none)
none
MsmqIntegrationBinding
MSMQ
(Transport)
(none)
(none), Yes
Trong bảng trên, những giá trị để trong ngoặc là những giá trị mặc định tương ứng cho các tính năng, các tính năng được định nghĩa như sau:
Công nghệ: Định nghĩa giao thức hay công nghệ mà binding sẽ sử dụng để đảm bảo việc trao đổi và sử dụng thông tin.
Bảo mật: Xác định cách bảo mật kênh trao đổi thông tin
Phiên: Xác định việc hỗ trợ contract phiên
Giao dịch: Xác định việc cho phép hay không các giao dịch (transaction)
Dựa vào bảng đó, ta có thể đưa ra một số nhận xét. Nếu yêu cầu bài toán đòi hỏi việc tích hợp giữa các nền tảng khác nhau, ta sẽ chú ý đến cái binding với tiền tố [ws]. Còn nếu môi trường làm việc bài toán là Windows thì lựa chọn các binding với tiền tố [net] có vẻ hợp lý. Riêng basicHttpBinding phù hợp với những dịch vụ ra đời trước WCF như ASMX.
Khi ta chọn binding để giải quyết một vấn đề, thường ta chú ý đến xem nó hỗ trợ giao thức nào.
Bảng những binding có sẵn và giao thức hỗ trợ tương ứng
Kiểu
HTTP
HTTPS
TCP
MSMQ
BasicHttpBinding
Có
Có
Không
Không
WSHttpBinding
Có
Có
Có
Không
WSDualHttpBinding
Có
Có
Không
Không
WSFederationHttpBinding
Có
Có
Không
Không
NetTcpBinding
Không
Không
Có
Không
NetNamedPipeBinding
Không
Không
Không
Không
NetMsmqBinding
Không
Không
Không
Có
NetPeerTcpBinding
Không
Không
Có
Không
MsmqIntegrationBinding
Không
Không
Không
Có
Để dễ dàng hơn trong việc xác định binding, ta có thể dựa vào sơ đồ sau:
Hình 1 9: Sơ đồ lựa chọn Binding
1.4.5. Hợp đồng (Contract)
Các contract trong Windows Communication Foundation cung cấp khả năng làm việc đa môi trường khi liên lạc với các máy khách. Các máy khách và dịch vụ thoả thuận với nhau về các contract như kiểu của các hành động và các cấu trúc dữ liệu mà các bên sẽ sử dụng trong quá trình liên lạc qua lại với nhau. Nếu không có contract thì không thể thực hiện liên lạc được do không có sự thoả thuận thống nhất giữa các bên.
Khi định nghĩa một dịch vụ trong Windows Communication Foundation ta sử dụng ba kiểu contract cơ bản sau:
Service Contract (Contract dịch vụ): Định nghĩa các phương thức của một dịch vụ, thực chất là các hành động mà client có thể sử dụng ở các điểm cuối (endpoint)
Data Contract (Contract dữ liệu): Định nghĩa các kiểu dữ liệu được sử dụng ở các phương thức của dịch vụ
Message Contract (Contract bản tin): Cung cấp khả năng để điều khiển các đầu đề bản tin trong quá trình tạo ra các bản tin
Cũng giống như các thành phần khác trong WCF, các contract được định nghĩa sử dụng các khái niệm mà ta đã quen thuộc. Các contract được định nghĩa sử dụng các lớp và giao diện, bằng cách thêm vào các thuộc tính mô tả (attribute) cho các lớp và giao diện đó.
Có thể hình dung mối liên hệ giữa các contract với .NET Framework CLR một cách gần đúng như sau:
Service Contracts: Cung cấp thông tin để thực hiện ánh xạ từ CLR sang WSDL (Web Service Description Language - Ngôn ngữ mô tả dịch vụ Web).
Data Contracts: Cung cấp thông tin để thực hiện ánh xạ từ CLR sang XSD (XML Schema Definition - Định nghĩa schema XML).
Message Contracts: Dùng để miêu tả cấu trúc của bản tin SOAP (Simple Object Access Protocol - Giao thức truy nhập đối tượng đơn giản).
Service Contracts (Contract dịch vụ)
Như đã nói ở phần trên, một contract dịch vụ định nghĩa các hành động hoặc phương thức có ở điểm cuối dịch vụ (Endpoint) và được đưa ra để máy khách có thể sử dụng. Nó còn định nghĩa một cách cơ bản các phép trao đổi bản tin như việc bản tin sẽ thế nào trong yêu cầu/trả lời (Request/Reply) hay trong liên lạc đơn công (one-way) hoặc song công (Duplex).
Contract dịch vụ đưa ra một số thông tin cho các máy khách đủ để cho máy khách có thể biết được dịch vụ này có thể cung cấp những gì. Những thông tin đó bao gồm:
Các kiểu dữ liệu trong bản tin
Vị trí của các phương thức – hành động
Thông tin về giao thức, định đạng lưu dữ liệu để đảm bảo cho liên lạc thành công
Nhóm các hành động
Mẫu trao đổi bản tin (Message exchange pattern – MEP)
Như trên đã nói, để định nghĩa contract dịch vụ, ta sử dụng các thuộc tính mô tả cho một lớp hay giao diện. Thuộc tính mô tả một contract dịch vụ là ServiceContract. Ví dụ sau định nghĩa một giao diện như là một contract dịch vụ:
[ServiceContract]
public interface IStaffInformation
{
}
Sau đó để định nghĩa các hành động (phương thức) cho dịch vụ ta sử dụng phần mô tả là OperationContract cho các phương thức của giao diện như ví dụ dưới đây:
[OperationContract]
bool HasPerson(int staffId);
[OperationContract]
string GetPersonName(int staffId);
Gộp các phần lại ta sẽ được một định nghĩa hoàn chỉnh cho một contract dịch vụ:
[ServiceContract]
public interface IStaffInformation
{
[OperationContract]
bool HasPerson(int staffId);
[OperationContract]
string GetPersonName(int staffId);
}
Sau khi có được định nghĩa cho dịch vụ, ta có thể cài đặt một lớp cho giao diện trên, trong đó định nghĩa các hàm (phương thức) thực hiện theo logic của dịch vụ.
public class StaffInformation : IStaffInformation
{
public bool HasPerson(int staffId)
{
// Làm việc gì đó ở đây, và trả về kết quả
}
public string GetPersonName(int staffId)
{
// Làm việc gì đó ở đây, và trả về kết quả
}
}
Trong trường hợp ta không muốn định nghĩa dịch vụ ở phần giao diện, ta hoàn toàn có thể định nghĩa dịch vụ ở trong lớp cài đặt dịch vụ đó như sau:
[ServiceContract]
public class StaffInformation : IStaffInformation
{
[OperationContract]
public bool HasPerson(int staffId)
{
// Làm việc gì đó ở đây, và trả về kết quả
}
[OperationContract]
public string GetPersonName(int staffId)
{
// Làm việc gì đó ở đây, và trả về kết quả
}
}
Trong khi định nghĩa contract dịch vụ, chúng ta đã sử dụng hai lớp thuộc tính để mô tả là ServiceContract và OperationContract. Hai thuộc tính này có rất nhiều tham số kèm theo, tuy nhiên trong nhiều trường hợp, chúng ta hoàn toàn có thể sử dụng các giá trị mặc định của hai thuộc tính này để định nghĩa contract dịch vụ. Trong một số trường hợp khi chúng ta muốn điều khiển sâu hơn về các thông tin liên quan đến dịch vụ, ta có thể đưa thêm các tham số cho hai thuộc tính này.
Thuộc tính ServiceContract
Thuộc tính ServiceContract được áp dụng cho việc mô tả các giao diện hoặc các lớp để định nghĩa một contract dịch vụ. Thuộc tính này có các tham số sau:
Bảng tham số thuộc tính ServiceContract
Tên tham số
Mô tả
CallbackContract
Thiết lập/Trả về kiểu của callback contract khi liên lạc ở chế độ song công. Khi liên lạc giữa máy khách và dịch vụ được thiết lập, tham số này chỉ ra rằng máy khách cần phải đợi lời gọi hàm từ phía dịch vụ thông qua kiểu của callback contract đã định nghĩa. Ví dụ sau mô tả cách sử dụng tham số CallbackContract
[ServiceContract(CallbackContract=typeof(IClientContract))]
public class StaffInformation : IStaffInformation
{
....
}
Trong ví dụ trên, dịch vụ quy định callback contract phải có kiểu là IClientContract
ConfigurationName
Thiết lập/Trả về tên được sử dụng để xác định thành phần dịch vụ trong tệp tin cấu hình. Ví dụ về việc sử dụng tham số ConfigurationName như sau:
[ServiceContract(ConfigurationName="DichVu")]
public class StaffInformation : IStaffInformation
{
....
}
Và ở tệp tin cấu hình ta có phần định nghĩa thành phần dịch vụ với tên là DichVu
Name
Thiết lập/Trả về tên của thành phần trong WSDL. Giá trị mặc định cho tham số này chính là tên của giao diện hay lớp có gắn thuộc tính ServiceContract. Tham số này được sử dụng trong trường hợp ta muốn thay đổi tên của thành phần hoặc muốn giữ nguyên tên của thành phần nhưng lại đổi tên của giao diện hay lớp định nghĩa dịch vụ.
Namespace
Thiết lập/Trả về namespace (không gian tên) cho thành phần trong WSDL. Giá trị mặc định cho tham số này là
ProtectionLevel
Quy định yêu cầu về mức bảo vệ trong binding. Việc quy định này bao gồm quy định về mã hoá, chữ ký điện tử tại các điểm cuối của dịch vụ
SessionMode
Quy định kiểu hỗ trợ cho các phiên làm việc tin cậy mà một dịch vụ đòi hỏi hoặc hỗ trợ. Ví dụ có thể định nghĩa đòi hỏi phải hỗ trợ phiên làm việc tin cậy cho dịch vụ như sau:
[ServiceContract(SessionMode=SessionMode.Required)]
public class StaffInformation : IStaffInformation
{
....
}
Thuộc tính OperationContract
Thuộc tính OperationContract được gắn với các phương thức trong các giao diện hay các lớp. Chỉ các phương thức được gắn thuộc tính OperationContract mới được coi là phương thức của dịch vụ. Các tham số có thể sử dụng cho thuộc tính này như sau:
Bảng tham số thuộc tính OperationContract
Tên tham số
Mô tả
Action
Quy định hành động để chỉ ra một cách duy nhất phương thức này. WCF phân phối các bản tin yêu cầu với các phương thức dựa trên các hành động của chúng.
AsyncPattern
Chỉ ra rằng phương thức được cài đặt hoặc có thể gọi theo cách bất đồng bộ sử dụng cặp phương thức bắt đầu bởi Begin và End
IsInitiating
Quy định phương thức này có phải là phương thức để khởi tạo trong một phiên hay không
IsOneWay
Chỉ ra rằng phương thức này chỉ chứa một bản tin đầu vào duy nhất. Phương thức không có bản tin trả về.
IsTerminating
Quy định xem liệu WCF có kết thúc phiên làm việc hiện tại sau khi phương thức này thực hiện xong hay không
Name
Quy định tên cuối cùng của phương thức sẽ có trong dịch vụ. Giá trị mặc định của tham số này là tên của phương thức
ProtectionLevel
Quy định sự bảo vệ ở mức bản tin mà một phương thức yêu cầu khi thực hiện
ReplyAction
Quy định hành động của bản tin trả lời cho phương thức này
Ví dụ sau biểu diễn việc sử dụng các tham số của OperationContract để quy định thứ tự thực hiện của các phương thức khi làm việc với dịch vụ. Theo ví dụ này, quy trình để máy khách liên lạc với dịch vụ như sau.
Đầu tiên máy khách cần phải gọi hàm Login để đăng nhập
Sau đó gọi hàm HasPerson hoặc GetPersonName để lấy thông tin về nhân viên
Cuối cùng gọi hàm Logout để đăng xuất
[ServiceContract]
public interface IStaffInformation
{
[OperationContract(IsInitiating=true, IsTerminating=false)]
void Login(string userName, string password);
[OperationContract]
bool HasPerson(int staffId);
[OperationContract]
string GetPersonName(int staffId);
[OperationContract(IsInitiating=false, IsTerminating=true)]
void Logout();
}
Nếu máy khách không thực hiện theo thứ tự trên thì dịch vụ sẽ báo lỗi và không thực hiện.
Data Contracts
Một cách đơn giản thì một contract dữ liệu mô tả dữ liệu cần trao đổi. Trước khi máy khách và dịch vụ thực hiện liên lạc thì chúng phải đồng ý với nhau về kiểu dữ liệu trao đổi, đó là contract dữ liệu. Điều quan trọng là khi thực hiện liên lạc, máy khách và dịch vụ hoàn toàn không cần phải chung nhau cùng các kiểu dữ liệu mà chúng chỉ cần chung nhau các contract dữ liệu. Contract dữ liệu định nghĩa cách serialized và deserialized cho từng tham số và kiểu trả về.
Quá trình serialization dữ liệu là quá trình chuyển một cấu trúc dữ liệu thành một định dạng có thể dùng trong liên lạc hoặc gửi qua đường truyền. Ví dụ đọc dữ liệu từ cơ sở dữ liệu sau đó chuyển nó thành một chuỗi các byte và gửi qua đường truyền.
Quá trình deserialization là quá trình ngược lại với quá trình serialization. Quá trình này nhận dữ liệu từ đường truyền và chuyển ngược thành cấu trúc dữ liệu.
Để định nghĩa contract dữ liệu, ta sử dụng thuộc tính DataContract và DataMember.
Thuộc tính DataContract
Bảng tham số thuộc tính DataContract
Tên tham số
Mô tả
Name
Quy định tên của DataContract. Mặc định là tên contract định nghĩa trong .NET
Namespace
Quy định namespace của DataContract.
Thuộc tính DataMember
Bảng tham số thuộc tính DataMember
Tên tham số
Mô tả
Name
Quy định tên của DataMember. Mặc định là tên contract định nghĩa trong .NET
Namespace
Quy định namespace của DataMember.
IsRequired
Quy định xem DataMember có cần thiết phải có hay không
Order
Thiết lập hoặc trả ra thứ tự serialization và deserialization của DataMember.
EmitDefaultValue
Thiết lập hoặc trả ra giá trị xác định để sinh giá trị mặc định là null hoặc 0 cho DataMember khi serialization.
Message Contracts
Các contract bản tin được định nghĩa bằng cách gắn thuộc tính MessageContract vào các lớp. Sau đó cần phải xác định rõ cho từng bản tin các thuộc tính MessageHeader và MessageBodyMember. Ví dụ sau biểu diễn một contract bản tin đơn giản.
[MessageContract]
public class Person
{
[MessageHeader]
int StaffId;
[MessageBodyMember]
string FullName;
[MessageBodyMember]
int Age;
}
Thuộc tính MessageHeader: được gắn với các trường hoặc thuộc tính của một kiểu. Những trường hay thuộc tính này sau đó sẽ được ánh xạ thành các đầu đề bản tin SOAP.
Thuộc tính MessageBodyMember: được gắn với các trường hoặc thuộc tính của một kiểu. Những trường hay thuộc tính này sau đó sẽ được ánh xạ thành phần nội dung của bản tin SOAP.
Như vậy, điểm cuối (Endpoint) là một bộ ba: A - Address, B - Binding, C - Contract. Các máy khách (client) gọi dịch vụ WCF thông qua các điểm cuối của dịch vụ. Mọi chi tiết bên trong Service đều được bao che kín. Mỗi điểm cuối chỉ có thể có một Address, một Binding và một Contract. Tuy nhiên, một dịch vụ thì lại có thể có nhiều điểm cuối (Endpoint). Có 2 cách để định nghia điểm cuối:
- Định nghĩa điểm cuối bằng mã nguồn
- Định nghĩa điểm cuối bằng tập tin cấu hình.
Định nghĩa điểm cuối bằng mã nguồn:
Hai dòng đầu của đoạn mã nguồn bên dưới dùng để định nghĩa các địa chỉ mà dịch vụ sẽ sử dụng. Dòng tiếp tạo ra một đối tượng ServiceHost để chứa dịch vụ.
Uri bpa = new Uri("net.pipe://localhost/NetNamedPipeBinding");
Uri tcpa = new Uri("net.tcp://localhost:8000/TcpBinding");
ServiceHost sh = new ServiceHost(typeof(ServiceClass), bpa, tcpa);
NetNamedPipeBinding pb = new NetNamedPipeBinding();
NetTcpBinding tcpb = new NetTcpBinding();
ServiceMetadataBehavior behave = new ServiceMetadataBehavior();
sh.Description.Behaviors.Add(behave);
sh.AddServiceEndpoint(typeof(IMetadataExchange),
MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
sh.AddServiceEndpoint(typeof(IMetadataExchange),
MetadataExchangeBindings.CreateMexNamedPipeBinding(), "mex");
sh.AddServiceEndpoint(typeof(IServiceClass), pb, bpa);
sh.AddServiceEndpoint(typeof(IServiceClass), tcpb, tcpa);
sh.Open();
Định nghĩa điểm cuối bằng tập tin cấu hình:
Sau đây là một ví dụ dùng tập tin cấu hình để định nghĩa điểm cuối.
“Luôn luôn có nhiều cách để giải quyết một vấn đề” đó là triết lý mà Microsoft gắn liền trong các công nghệ của mình. WCF cũng vậy, điều đó làm tăng tính linh động cho các ứng dụng và có nhiều sự lựa chọn hơn cho các nhà phát triển phần mềm. Với sự phổ biến của hệ điều hành Windows và các ứng dụng trên Windows thì WCF sẽ là một giải pháp hữu ích về công nghệ cho các ứng dụng doanh nghiệp muốn triển khai trên diện rộng với nhiều chi nhánh khác nhau. CRM là một trong các hệ thống như vậy. Trong chương tiếp theo – Chương 2 sẽ giới thiệu về giải pháp CRM.
CHƯƠNG 2: GIỚI THIỆU GIẢI PHÁP CRM CHO DOANH NGHIỆP
2.1. CRM là gì?
Customer Relationship Management, viết tắt là CRM, là hệ Quản lý Quan hệ Khách hàng. Trên thế giới hiện nay có khá nhiều định nghĩa khác nhau về CRM. Sau đây là một số định nghĩa cơ bản:
Định nghĩa 1:
CRM là triết lý kinh doanh lấy khách hàng làm trung tâm, trong đó lấy cơ chế hợp tác với khách hàng bao trùm toàn bộ quy trình hoạt động kinh doanh của doanh nghiệp.
CRM được xác định là cả một hệ thống những quy trình hỗ trợ mối quan hệ khách hàng trong suốt vòng đời kinh doanh, nhằm đạt được mục tiêu chính: tạo ra dòng thu hút những khách hàng mới và phát triển những khách hàng sẵn có. Giải pháp CRM bao gồm 4 yếu tố:
1. Cấu trúc tổ chức lấy khách hàng làm trung tâm.
2. Những quy trình kinh doanh.
3. Những quy luật về dịch vụ khách hàng.
4. Phần mềm hỗ trợ.
Những quy luật và nguyên tắc trong quá trình phục vụ khách hàng phải được thấm nhuần trong toàn bộ doanh nghiệp: kinh doanh, tiếp thị, dịch vụ, hậu cần, sản phẩm, tài chính và các phòng ban khác. Quản lý mối quan hệ có nghĩa là thu hút những khách hàng mới, biến khách hàng trung lập thành khách hàng chung thuỷ, biến những khách hàng tận tuỵ thành các đối tác kinh doanh. Chiến lược này thích hợp với mọi loại thị trường, bắt đầu bằng việc thu hút những khách hàng mới, sau đó tạo mối quan hệ với họ, củng cố niềm tin đối với họ. Kết quả là, chính những khách hàng này sẽ tạo nên mạng lưới đại lý cho doanh nghiệp.
Định nghĩa 2:
CRM là một chiến lược kinh doanh được thiết kế để nâng cao lợi nhuận, doanh thu và sự hài lòng của khách hàng. Nó bao gồm phần mềm, các dịch vụ và một phương thức kinh doanh mới nhằm gia tăng lợi nhuận, doanh thu, đồng thời làm hài lòng khách hàng hơn để giữ chân khách hàng lâu hơn.
Bằng cách trợ giúp các doanh nghiệp có quy mô khác nhau xác định được các khách hàng thực sự, nhanh chóng có được khách hàng phù hợp và duy trì mối quan hệ với họ lâu dài hơn.
CRM về cơ bản có liên quan đến việc tập trung tất cả dữ liệu khách hàng và tự động hóa nhiều công việc buồn tẻ trong công tác tiếp thị, quản lý bán hàng, và dịch vụ khách hàng để những người chuyên trách có thể sử dụng nhiều thời gian hơn vào các công việc trợ giúp các khách hàng của họ thành công hơn và tốn ít thời gian hơn.
Định nghĩa 3:
CRM là một chiến lược kinh doanh quy mô toàn công ty được thiết kế nhằm làm giảm chi phí và tăng lợi nhuận bằng cách củng cố lòng trung thành của khách hàng. CRM thực sự sẽ mang lại lợi ích từ tất cả các nguồn thông tin trong và ngoài doanh nghiệp để đem đến cái nhìn toàn diện về từng khách hàng tại từng thời điểm cụ thể. Điều này cho phép các nhân viên làm việc với khách hàng trong các lĩnh vực như tiếp thị, bán hàng, và hỗ trợ khách hàng có thể đưa ra những quyết định nhanh chóng về mọi thứ nhằm đạt được hiệu quả cao trong kinh doanh.
CRM là cả một chiến thuật được sử dụng để tìm hiểu nhiều hơn về nhu cầu và hành vi của khách hàng nhằm phát triển sâu hơn mối quan hệ với họ. Hơn hết thảy, những mối quan hệ khách hàng tốt chính là trung tâm của mọi thành công của doanh nghiệp. Có rất nhiều yếu tố công nghệ hợp thành CRM, nhưng cho rằng CRM là thuật ngữ căn bản thuộc về công nghệ là hoàn toàn sai lầm. Thực sự hiệu quả hơn khi hiểu CRM là một quy trình đem lại cùng lúc rất nhiều thông tin về khách hàng, hiệu quả của công tác tiếp thị, bán hàng, những phản hồi và những xu hướng của thị trường.
Nếu những mối quan hệ khách hàng là trái tim của doanh nghiệp thành công, thì CRM là van tim bơm máu nuôi dưỡng cuộc sống của doanh nghiệp. CRM giúp các doanh nghiệp sử dụng hiệu quả nguồn nhân lực, các quy trình và hiểu thấu lợi ích của công nghệ đối với việc gia tăng khách hàng. Điều này cho phép cải thiện dịch vụ khách hàng, tổ chức tốt các quy trình tiếp thị và bán hàng, tăng hiệu quả chăm sóc khách hàng, giảm tỉ lệ thất bại, giảm chi phí, và gia tăng doanh thu cho doanh nghiệp.
2.2. Lịch sử học thuyết CRM
Kế tiếp ERP (Enterprise Resource Planning - Kế hoạch Tài nguyên Doanh nghiệp, chiến lược kinh doanh được hứa hẹn sẽ tự động hỗ trợ doanh nghiệp), thuật ngữ CRM đầu tiên ra đời vào giữa thập niên 90. Tại thời điểm đó nói tới CRM là nói tới phần mềm dùng để giúp cho các doanh nghiệp quản lý những mối quan hệ khách hàng của họ. Từ phần mềm Tự động Thúc đẩy Bán hàng SFA - phần mềm tập trung vào quản lý liên hệ khách hàng cho tới những giải pháp quản lý kiến thức được tích hợp đã tạo nên những nền tảng ban đầu của CRM.
Một vài năm trước đây đã chứng kiến sự mở rộng của thuật ngữ này nhằm hoàn thiện một cách tiếp cận chiến lược hơn và theo sau đó là sự đầu tư hàng tỉ đô la trên toàn thế giới vào các giải pháp và dịch vụ CRM.
CRM thành công luôn bắt đầu cùng với chiến lược kinh doanh, điều này mang lại sự thay đổi trong doanh nghiệp và các quy trình hoạt động của doanh nghiệp được hỗ trợ bởi công nghệ. CRM đã tạo ra một triết lý kinh doanh thực sự lấy khách hàng làm trung tâm, triết lý này tác động tới mọi góc độ và từng thành viên trong doanh nghiệp.
Tuy nhiên không thể đánh mất một thực tế: Quản lý quan hệ khách hàng chính là "Con người là hàng đầu và công nghệ là thứ yếu". Đó chính là giá trị đích thực của CRM: khai thác tiềm năng của con người để có được nhiều kinh nghiệm về khách hàng hơn, sử dụng công nghệ phần mềm để hỗ trợ quá trình kinh doanh hiệu quả hơn.
Hình 1 10: “Khách hàng là trung tâm của mọi hoạt động”
Mô hình kinh doanh khép kín này phân chia mối quan hệ giữa doanh nghiệp với khách hàng là thành 5 giai đoạn chính quan hệ chặt chẽ với nhau bao gồm:
Phân loại Khách hàng
Phân tích Hiệu quả Bán hàng
Quản lý Hợp đồng
Quản lý Khách hàng
Dịch vụ Khách hàng
Trong giai đoạn Phân loại khách hàng, doanh nghiệp thu thập thông tin nguồn khách hàng tiềm năng, phân loại những khách hàng này để đưa họ vào chiến dịch tiếp thị phù hợp, tạo ra những cơ hội bán hàng.
Từ những cơ hội bán hàng được tạo ra đó, doanh nghiệp thực hiện giai đoạn Phân tích Hiệu quả Bán hàng. Tại thời điểm này, doanh nghiệp phân tích các cơ hội bán hàng của họ, những cơ hội bán hàng đang ở giai đoạn nào, tỉ lệ thành công là bao nhiêu, các đối tác, đối thủ có liên quan đến các cơ hội bán hàng đó… Từ những phân tích này, doanh nghiệp sẽ có thể quản lý được các tổ chức khách hàng và dự báo được doanh số chính xác.
Sau khi phân tích và dự báo bán hàng, những cơ hội bán hàng chuyển thành hợp đồng bán hàng. Lúc này, doanh nghiệp thực hiện Quản lý Hợp đồng. Một hợp đồng thành công cần phải có sự nhất trí cao của hai bên, chính vì thế trong giai đoạn này doanh nghiệp thực hiện quản lý những yêu cầu từ phía khách hàng để thưc hiện tốt hợp đồng.
Khi hợp đồng được thực hiện tức là những tiềm năng lúc này đã thực sự trở thành khách hàng của doanh nghiệp. Khi đó, doanh nghiệp thực hiện Quản lý Khách hàng. Doanh nghiệp theo dõi những khách hàng để bất cứ vấn đề phát sinh nào cũng có thể được giải quyết kịp thời.
Giai đoạn Dịch vụ khách hàng: doanh nghiệp cung cấp những dịch vụ tốt nhất đến khách hàng. Chính điều này sẽ tạo nên nguồn khách hàng tiềm năng mới cho doanh nghiệp, để doanh nghiệp có nguồn tiềm năng sẵn sàng, tiếp tục thực hiện giai đoạn Phân loại Khách hàng, tạo nên một chu trình kinh doanh hiệu quả.
2.3. Các khái niệm liên quan trọng trong CRM
2.3.1. Tiềm năng
Tiềm năng là một triển vọng hay một cơ hội tiềm tàng - là đối tượng có thể trở thành khách hàng của doanh nghiệp, cho dù khả năng là rất nhỏ. Khách hàng tiềm năng có thể là người trong một hội nghị thể hiện sự quan tâm đến sản phẩm của doanh nghiệp, hay một ai đó điền vào một khuôn mẫu trên website của doanh nghiệp,…
2.3.2. Tổ chức
Tổ chức là tất cả các khách hàng, đối tác và đối thủ của doanh nghiệp. Một tổ chức bao gồm các thông tin khác nhau như tên tổ chức, địa chỉ, số điện thoại, các cơ hội bán hàng, tình huống, hoạt động,… gắn với tổ chức đó.
2.3.3. Liên hệ
Liên hệ là tất cả các cá nhân liên quan đến tổ chức mà doanh nghiệp cần theo dõi, ví dụ như trưởng phòng kinh doanh hay giám đốc của một công ty,... Một liên hệ bao gồm các thông tin khác nhau như họ và tên, chức danh, địa chỉ, số điện thoại,...
2.3.4. Cơ hội
Cơ hội là những triển vọng bán hàng hay những thương vụ đang còn thương lượng. Một cơ hội bao gồm các thông tin khác nhau như tên cơ hội, tổ chức, chiến dịch, loại, số tiền, giai đoạn, tỉ lệ...
2.3.5. Chiến dịch
Chiến dịch là một chiến lược tiếp thị bán hàng mà doanh nghiệp lập kế hoạch, quản lý và theo dõi. Đó có thể là chương trình thư tín trực tiếp, hội thảo, ấn bản quảng cáo, gửi email, hay các loại hình tiếp thị khác.
2.3.6. Hợp đồng
Hợp đồng là sự thỏa thuận bằng văn bản giữa hai hay nhiều bên. Nhiều công ty sử dụng hợp đồng để xác định các điều khoản kinh doanh với các công ty khác. Một hợp đồng bao gồm các thông tin khác nhau như tên cơ hội, trích yếu, tổ chức, diễn giải, tình trạng, ngày hiệu lực …
2.3.7. Tình huống
Tình huống là tất cả những câu hỏi, phản hồi, thắc mắc… của khách hàng đối với doanh nghiệp. Từ đó, người quản lý biết được những thông tin nào về sản phẩm chưa được phổ biến đầy đủ đến khách hàng và có những giải pháp giải quyết tối ưu nhằm gia tăng sự hài lòng của khách hàng đối với doanh nghiệp; nhân viên bán hàng có thể quản lý và theo dõi các tình huống liên quan tới khách hàng đang giao dịch, tra cứu và giải quyết các tình huống theo mức độ ưu tiên cần thiết theo từng đối tượng khách hàng.
2.3.8. Sản phẩm
Sản phẩm là những mặt hàng của doanh nghiệp được bán trong các cơ hội bán hàng. Doanh nghiệp có thể thêm mới sản phẩm và giá cả của sản phẩm đó vào từ điển Sản phẩm để quản lý.
2.3.9. Đối tác
Đối tác là những tổ chức tương tác, hỗ trợ doanh nghiệp thúc đẩy các cơ hội, tiến trình bán hàng trên cơ sở hai bên cùng có lợi. Rất nhiều hoạt động bán hàng được dựa trên mối quan hệ đối tác và sự hợp tác với các công ty khác. Đối với mỗi cơ hội hay tổ chức được tạo ra, danh sách các đối tác có liên quan cho phép bạn lưu trữ thông tin về các đối tác và vai trò của họ trong cơ hội bán hàng hay tổ chức. Một đối tác phải là một tổ chức đang tồn tại trong CRM.
2.3.10. Đối thủ
Đối thủ là một tổ chức có các sản phẩm cạnh tranh với doanh nghiệp. Bạn có thể theo dõi các đối thủ trong một thương vụ bằng cách lập danh sách các đối thủ trong cơ hội đó. Theo dõi đối thủ là việc ghi nhận các điểm mạnh, điểm yếu của đối thủ để từ đó hoạch định được những chiến lược kinh doanh thích hợp.
2.4. Lợi ích của CRM
Đối với khách hàng: CRM góp phần thúc đẩy mối quan hệ lâu dài giữa khách hàng và doanh nghiệp, giúp khách hàng được hiểu rõ hơn, được phục vụ chu đáo hơn. Nhờ có CRM, khách hàng cảm thấy rất được quan tâm từ những điều rất nhỏ như: Sở thích, nhu cầu, ngày kỷ niệm...
Đối với doanh nghiệp: CRM giúp doanh nghiệp lắng nghe khách hàng của mình nhiều hơn, dễ dàng quản lý tình hình kinh doanh và phát triển của mình ở quá khứ, hiện tại cũng như tương lai. Giúp doanh nghiệp quảng bá sản phẩm, thương hiệu một cách nhanh chóng, dễ dàng và ít chi phí nhất. Đồng thời CRM giúp doanh nghiệp quản lý tập trung nguồn tài nguyên của mình, cũng như quản lý nhân viên một cách hiệu quả
Đối với nhà quản lý: CRM cung cấp cho nhà quản lý nhiều công cụ hỗ trợ đắc lực, giúp nhà quản lý nhanh chóng thống kê, phân tích, đánh giá tình hình kinh doanh của doanh nghiệp từ quá khứ, hiện tại và tương lại. Phát hiện những khó khăn, rủi do tiềm ẩn của doanh nghiệp để có thể kịp thời đưa ra những giải pháp thích hợp cho những vấn đề đó. Đồng thời, CRM con giúp người quản lý đánh giá được tình hình và hiệu quả làm việc của từng nhân viên cấp dưới.
Đối với nhân viên: CRM cho phép nhân viên quản lý một cách hiệu quả thời gian và công việc của mình. Đồng thời, giúp nhân viên nắm rõ thông tin về từng khách hàng của mình để đưa ra phương thức hỗ trợ nhanh chóng hợp lý, tạo được uy tín đối với khách hàng , giữ chân khách hàng lâu hơn.
CHƯƠNG 3: SỬ DỤNG CÔNG NGHỆ WCF ĐỂ XÂY DỰNG HỆ THỐNG CRM WCF 2010
3.1. Vấn đề đặt ra
Trước thực trạng khủng hoảng kinh tế toàn cầu hiện nay, các doanh nghiệp đang ra sức tìm kiếm một hệ thống CRM thích hợp áp dụng cho mình để có thể nâng cao năng lực cạnh tranh và tìm kiếm các khách hàng tiềm năng thì bản thân doanh nghiệp lại thấy choáng ngợp trước các vấn đề khó khăn của ngành công nghệ phần mềm: Đó là sự thiếu thống nhất về nền tảng, công nghệ, khả năng tích hợp kém, và khó có thể đáp ứng được sự thay đổi của yêu cầu trong tương lai. Hơn nữa doanh nghiệp lại không muốn phải bỏ đi toàn bộ những hệ thống mình hiện có. Vì thế kiến trúc hướng dịch vụ ra đời nhằm giải quyết các khó khăn này và WCF là một công nghệ giúp xây dựng các dịch vụ theo đúng các nguyên tắc và đặc điểm của SOA (Kiến trúc hướng dịch vụ), đó là:
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 mô-dun (hay “hộp đen”)
Tính linh động.
Có khả năng tái sử dụng.
Tính trong suốt.
Kiến trúc mở làm cho việc mở rộng dễ dàng.
Dễ hiểu – dễ dàng liên kết giao dịch.
Trên thế giới hiện có rất nhiều phần mềm CRM viết trên nền tảng Web-Form do các hãng phần mềm lớn như Sales Force, Oracle, Microsoft… xây dựng, các phần mềm này thướng có giá rất cao, vì vậy các doanh nghiệp Việt Nam chưa đủ kinh phí để triển khai. Còn đối với các phần mềm trong nước thì chủ yếu là viết trên nền tảng Win Form có lợi thế về giá thành rẻ phù hợp với các doanh nghiệp vừa và nhỏ. Tuy nhiên, cũng giống như các phần mềm khác viết trên nền tảng này, phần mềm CRM trong nước cũng gặp khó khăn trong vần đề tập trung dữ liệu đối với các doanh nghiệp có nhiều chi nhánh cách xa nhau về mặt địa lý nên việc tổng hợp dữ liệu thường phải thông qua giải pháp xuất khẩu dữ liệu thành các file và gửi về trung tâm. Điều này gây khó khăn trong quá trình tổng hợp dữ liệu do việc nhập liệu ở các chi nhánh là không thống nhất.
Hình 1 11: Quy trình chung của hệ thống CRM
Hơn nữa khi doanh nghiệp có nhu cầu mở rộng phạm vi hoạt động thì các phần mềm này lại không thể đáp ứng được. Dữ liệu không tập trung, thiếu đồng bộ đẫn đến khó khăn trong tích hợp. Dịch vụ Web là một hướng đi đúng đắn để giải quyết vấn đề này. Tuy nhiên dịch vụ Web lại khó triển khai trong cả mạng LAN và Internet. Đồng thời, đối với các ứng dụng trong doanh nghiệp thì lượng dữ liệu phải nhập là rất lớn và đòi hỏi có thể nhập nhanh, linh động vì vậy ứng dụng desktop vẫn là thích hợp nhất. Người dùng thì vốn đã rất quen thuộc với ứng dụng desktop và nếu phát triển các ứng dụng theo hướng desktop thì có thể tận dụng kế thừa từ các dự án đã có.
WCF là một công nghệ thích hợp cho việc xây dựng các hệ thống như vậy. WCF có thể thay thế cho các công nghệ hiện tại bởi nó có khả năng mở, tính thống nhất cao, và hỗ trợ rất nhiều chuẩn, giao thức hiện có. Hệ thống CRM – Quản lý quan hệ khách hàng luôn lấy khách hàng làm trung tâm. Chính vì thế việc lưu trữ, thu thập thông tin về khách hàng một cách tập trung, cùng việc cung cấp thông tin về sản phẩm, dịch vụ, chương trình khuyến mại… là vô cùng quan trọng. Doanh nghiệp cần phải quản lý được các thông tin này để tránh khi một nhân viên nghỉ việc thì toàn bộ các thông tin về khách hàng của nhân viên đó cũng biến. Dữ liệu tập trung cũng giúp người quản lý dễ dàng theo dõi hoạt động của các chi nhánh hay từng nhân viên trong doanh nghiệp và xem các báo cáo, thống kê theo nhiều tiêu chí qua đó có thể nhanh chóng đưa ra các quyết định chính xác. CRM WCF 2010 là một phần mềm như vậy.
3.2. Tổng quan về CRM WCF 2010
CRM WCF 2010 được phát triển dựa trên nền tảng lý thuyết của hệ thống Sales Force Automation, viết tắt là SFA, là hệ thống Thúc đẩy Bán hàng.
SFA là một kỹ thuật trong việc sử dụng phần mềm để tự động hoá những nhiệm vụ bán hàng của doanh nghiệp, bao gồm quy trình đặt hàng, quản lý quan hệ với khách hàng, chia sẻ thông tin, kiểm tra và quản lý hàng trong kho, theo dõi đơn hàng, quản lý khách hàng, phân tích dự báo bán hàng và đánh giá hoạt động của nhân viên.
SFA có thể giúp người bán hàng quản lý tương tác với khách hàng xuyên suốt chu trình bán hàng từ những liên hệ ban đầu đến các dịch vụ sau bán hàng. Các ứng dụng của SFA phục vụ hai đối tượng người dùng khác nhau trong cùng một công ty, bao gồm nhà quản lý và các nhân viên bán hàng. Tự động Thúc đẩy Bán hàng SFA là tất yếu trong những ngành công nghiệp có xu hướng thúc đẩy bán hàng trực tiếp và quản lý tổ chức là điều quan trọng. Các công ty dược và các ngành công nghiệp sản xuất đã có được những đền đáp xứng đáng từ những đầu tư cho SFA.
Sau sự phát triển của SFA, sự ra đời của hệ Quản trị Quan hệ Khách hàng - CRM cũng đã đem lại những lợi ích to lớn cho các doanh nghiệp. CRM là chiến lược kinh doanh nhằm đạt được sự thấu hiểu toàn diện, đoán trước, quản lý và cá nhân hoá những nhu cầu của khách hàng hiện tại và khách hàng tiềm năng của doanh nghiệp. CRM WCF 2010 sẽ giúp các doanh nghiệp nâng cao mức độ hài lòng của khách hàng, duy trì được mối quan hệ với khách hàng lâu hơn và thu được lợi nhuận nhiều hơn.
CRM WCF 2010 cho phép người sử dụng quản lý, theo dõi các thông tin về:
Tổ chức: thông tin về các công ty cụ thể
Liên hệ: thông tin về các cá nhân gắn với các tổ chức
Cơ hội: những thương vụ bán hàng cần theo dõi
Chiến dịch: thông tin về các chương trình tiếp thị
Hợp đồng: thỏa thuận bằng văn bản với khách hàng
Tình huống: thông tin về phản hồi, thắc mắc của khách hàng và giải pháp cho những vấn đề đó
Hoạt động: tất cả các nhiệm vụ và lịch hẹn do người sử dụng đặt ra nhằm quản lý, theo dõi thời gian và công việc của mình
Sản phẩm: những mặt hàng doanh nghiệp cung cấp, đơn giá, diễn giải cho những mặt hàng đó
Tài liệu: nơi lưu trữ thông tin dùng chung cho cả doanh nghiệp
Báo cáo: là những phân tích về dữ liệu của từng nhân viên, từng nhóm hay của toàn thể công ty
Bàn làm việc: những biểu đồ/ đồ thị tổng hợp dữ liệu báo cáo hoạt động kinh doanh và những nhắc nhở về lịch hẹn/ nhiệm vụ cần thực hiện của cá nhân
3.3. Quy trình tác nghiệp của CRM WCF 2010
3.3.1. Quy trình tiếp thị
Hình 1 12: Quy trình tiếp thị
Mô tả quy trình:
Nhà quản lý chiến dịch gửi thư và tin nhắn SMS hàng loạt đến các khách hàng tiềm năng. Khi đó hàng ngàn, hàng vạn khách hàng tiềm năng sẽ nhanh chóng nhận được thông tin về sản phẩm mới, tính năng mới của các sản phẩm của doanh nghiệp, các chương trình khuyến mãi...
Nhân viên bán hàng từ chiến dịch tiếp thị, sẽ lưu giữ các khách hàng tiềm năng, giao tiếp với tiềm năng . Từ đó đánh giá chất lượng tiềm năng như rất quan tâm đến sản phẩm của chiến dịch, ít quan tâm, không quan tâm. Nếu không quan tâm thì sẽ ngừng theo dõi, còn quan tâm sẽ chuyển đổi tiềm năng thành cơ hội.
3.3.2. Quy trình Bán hàng
Hình 1 13: Quy trình bán hàng
Mô tả quy trình:
Sau chiến dịch, nhà quản lý chiến dịch sẽ lọc được những khách hàng tiềm năng quan tâm đến sản phẩm của công ty. Từ những khách hàng tiềm năng sẽ lấy được người liên hệ của tổ chức để liên hệ thương thảo đi đến ký kết hợp đồng.
Nhân viên bán hàng chuyển đổi những tiềm năng thành cơ hội bán hàng. Nếu cơ hội bán hàng thắng sẽ đi đến ký kết hợp đồng. Nếu thất bái, cơ hội kết thúc.
3.3.3. Quy trình dịch vụ sau bán hàng
Hình 1 14: Quy trình dịch vụ sau bán hàng
Mô tả quy trình:
Nhân viên bán hàng tiếp nhân các phản hồi, câu hỏi, thắc mắc của khách hàng về sản phẩm của công ty, về các chương trình khuyến mãi, các dịch vụ...
Nhân viên bán hàng nếu giải đáp được ngay sẽ giải đáp cho khách hàng, nếu không sẽ trình nên cấp trên để giải quyết và giải đáp cho khách hàng ngay khi có thể.
3.4. Các use case chính của hệ thống CRM WCF 2010
3.4.1. Quản lý tổ chức
Hình 1 15: Sơ đồ use case quản lý tổ chức
Mục đích của use case
Usecase này cho phép lập tổ chức để quản lý tổ chức, quản lý các hợp đồng, các cơ hội, người liên hệ của tổ chức đó. Các đối tượng tham gia vào bao gồm nhân viên bán hàng, người quản lý. Nhân viên thừa kế các hàng động của người quản lý.
Mô tả sơ lược use case
Thêm tổ chức: Cho phép tạo một tổ chức mới.
Tác nhân: Nhân viên, người quản lý.
Xóa tổ chức: Xóa một tổ chức nào đó không còn hợp tác hay ngừng theo dõi tổ chức đó.
Tác nhân: Nhân viên, người quản lý.
In danh sách tổ chức: Cho phép xem danh sách các tổ chức.
Tác nhân: Người quản lý, nhân viên.
Sửa tổ chức: Cho phép người dùng sửa các thông tin về tổ chức.
Tác nhân: Người quản lý, nhân viên.
Thêm cơ hội của tổ chức: Cho phép người dùng thêm cơ hội với tổ chức được chọn.
Tác nhân: Người quản lý, nhân viên.
Thêm liên hệ cho tổ chức: Cho phép người dùng thêm liên hệ cho tổ chức được chọn.
Tác nhân: Người quản lý, nhân viên.
Thêm hợp đồng cho tổ chức: Cho phép người dùng thêm hợp đồng cho tổ chức được chọn.
Tác nhân: Người quản lý, nhân viên.
3.4.2. Quản lý cơ hội
Hình 1 16: Sơ đồ use case quản lý cơ hội
Mục đích của usecase
Cho phép người dùng tạo và quản lý các cơ hội bán hàng, có thể tạo và quản lý các sản phẩm, đối tác, đối thủ, liên hệ của cơ hội bán hàng. Nhân viên thừa kế các hành động của người quản lý.
Mô tả sơ lược usecase
Thêm mới cơ hội: Cho phép người dùng thêm mới một cơ hội bán hàng.
Tác nhân: Người quản lý, nhân viên.
Sửa cơ hội: Cho phép người dùng sửa các thông tin về cơ hội được chọn.
Tác nhân: Người quản lý, nhân viên.
Xóa cơ hội: Cho phép xóa một hoặc nhiều cơ hội không còn được theo dõi.
Tác nhân: Người quản lý, nhân viên.
In danh sách các cơ hội: Cho phép in danh sách các cơ hội đang theo dõi.
Tác nhân: Người quản lý, nhân viên.
Thêm sản phẩm: Cho phép thêm sản phẩm trong cơ hội bán hàng được chọn.
Tác nhân: Người quản lý, nhân viên.
Thêm liên hệ: Cho phép thêm liên hệ trong cơ hội bán hàng.
Tác nhân: Người quản lý, nhân viên.
Thêm đối thủ: Cho thêm đối thủ có cùng sản phẩm cạnh tranh với công ty.
Tác nhân: Người quản lý, nhân viên.
Thêm đối tác: Cho phép thêm các đối tác hợp tác với công ty trong cơ hội bán hàng.
Tác nhân: Người quản lý, nhân viên.
3.4.3. Quản lý hợp đồng
Hình 1 17: Sơ đồ use case quản lý hợp đồng
Mục đích của usecase
Cho phép người dùng có thể xem, tạo và sửa các hợp đồng của công ty. Người dùng cũng có thể thêm các sản phẩm trong hợp đồng được chọn.
Mô tả sơ lược use case
Thêm mới hợp đồng: Cho phép thêm mới một hợp đồng với khách hàng, đối tác.
Tác nhân: Người quản lý, nhân viên.
Sửa hợp đồng: Cho phép sửa các thông tin về hợp đồng cũng như các sản phẩm trong hợp đồng.
Tác nhân: Người quản lý, nhân viên.
Xóa hợp đồng: Cho phép người dùng xóa những hợp đồng bị hủy.
Tác nhân: Người quản lý, nhân viên.
In danh sách hợp đồng: Cho phép người dùng xem báo cáo danh sách các hợp đồng.
Tác nhân: Người quản lý, nhân viên.
Thêm sản phẩm: Cho phép thêm cũng như chỉnh sửa các sản phẩm trong hợp đồng.
Tác nhân: Người quản lý, nhân viên.
Thêm ghi chú và đính kèm: Cho phep thêm các ghi chú, đính kèm về hợp đồng.
Tác nhân: Người quản lý, nhân viên.
3.4.4. Quản lý tiềm năng
Hình 1 18: Sơ đồ use case quản lý tiềm năng
Mục đích của usecase
Cho phép người dùng thêm, sửa, xóa, in danh sách các khách hàng tiềm năng của công ty.
Mô tả sơ lược usecase
Thêm mới tiềm năng: Cho phép người dùng thêm mới một khách hàng tiềm năng.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
Xóa tiềm năng: Cho phép người dùng xóa một hoặc nhiều tiềm năng.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
Sửa tiềm năng: Cho phép người dùng sửa các thông tin về tiềm năng.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
In danh sách tiềm năng: Cho phép in danh sách các tiềm năng đang theo dõi.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
Thêm ghi chú & đính kèm:Cho phép thêm các ghi chú, đính kèm về tiềm năng.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
3.4.5. Quản lý chiến dịch
Hình 1 19: Sơ đồ use case quản lý chiến dịch
Mục đích của usecase
Cho phép người dùng theo dõi, quản lý các chiến dịch từ khi được tạo ra đến khi kết thúc. Người dùng cũng có thể quản lý các cơ hội bán hàng của chiến dịch đó.
Mô tả sơ lược usecase
Thêm mới chiến dịch: Cho phép người dùng thêm mới một chiến dịch.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
Xóa chiến dịch: Cho phep người dùng xóa một hoặc nhiều chiến dịch.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
Sửa chiến dịch: Cho phep sửa thông tin về một chiến dịch nào đó cũng như các cơ hội của chiến dịch đó.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
In danh sách chiến dịch: Cho phép in danh sách các chiến dịch đang theo dõi.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
Thêm cơ hội: Cho phép người dùng thêm cơ hội cho chiến dịch.
Tác nhân: nhân viên, người quản lý. Nhân viên kế thừa các tính chất và hành vi của người quản lý.
3.4.6. Quản lý báo cáo
Hình 1 20: Sơ đồ use case quản lý báo cáo
Mục đích usecase
Cho phép người quản lý xem cáo báo cáo về sản phẩm, hợp đồng, chiến dịch...
Tác nhân: Người quản lý
Mô tả sơ lược usecase
Báo cáo tiềm năng: Cho phép người quản lý xem các báo về tiềm năng như đối tượng tiềm năng theo lĩnh vực, theo nguồn...
Báo cáo chiến dịch: Cho phép người dùng xem các báo cáo về chiến dịch như người liên hệ của chiến dịch, tiềm năng của chiến dịch, báo cáo doanh thu của chiến dịch.
Báo cáo nhân viên: Cho phép người dùng xem các báo cáo về nhân viên như tổ chức theo nhân viên, hợp đồng theo nhân viên,...
Báo cáo hợp đồng:Cho phép người dùng xem các báo cáo về các hợp đồng như tình hình thực hiện hợp đồng, doanh thu theo hợp đồng...
Báo cáo tổ chức và liên hệ:Cho phép người dùng xem các báo cáo về các tổ chức và liên hệ như báo cáo về đối tác, khách hàng cần quan tâm...
3.5. Biểu đồ tuần tự của hệ thống
3.5.1. Thêm, sửa tổ chức
Hiển thị thông báo, nếu có lỗi
Lưu dữ liệu
Kiểm tra hợp lệ
Thông báo
Nhập thông tin
Yêu cầu nhập thông tin
Yêu cầu thêm(sửa) TC
Gọi Form chi tiết TC
Xử lý
Hình 1 21: Biểu đồ tuần tự thêm ,sửa tổ chức
3.5.2. Xóa tổ chức
Chọn tổ chức cần xóa
Yêu cầu xóa
Đưa ra cảnh báo
Người dùng chọn “Yes”
Thông báo nếu có lỗi
Xử lý
Hình 1 22: Biểu đồ tuần tự xóa tổ chức
3.5.3. Thêm, sửa tiềm năng
Gọi Form chi tiết tiềm năng
Kiểm tra hợp lệ
Lưu dữ liệu
Xử lý
Thông báo lỗi nếu có
Thông báo
Nhập thông tin
Yêu cầu nhập thông tin
Yêu cầu thêm (sửa)
Hình 1 23: Biểu đồ tuần tự thêm, sửa tiềm năng
3.5.4. Xóa tiềm năng
Đưa ra thông báo nếu có lỗi
Người dùng đồng ý
Xử lý
Đưa ra cảnh báo
Xóa tiềm năng
Chọn tiềm năng cần xóa
Hình 1 24: Biểu đồ tuần tự xóa tiềm năng
3.5.5. Thêm, sửa cơ hội
Yêu cầu thêm(Sửa)
Yêu cầu nhập thông tin
Gọi Form chi tiết cơ hội
Nhập thông tin
Kiểm tra hợp lệ
Thông báo lỗi nếu có
Thông báo
Xử lý
Lưu dữ liệu
Hình 1 25: Biểu đồ tuần tự thêm, sửa cơ hội
3.5.6. Xóa cơ hội
Chọn cơ hội cần xóa
Xử lý
Người dùng đồng ý xóa
Đưa ra cảnh báo
Xóa cơ hội
Thông báo lỗi nếu có
Hình 1 26: Biểu đồ tuần tự xóa cơ hội
3.5.7. Thêm, sửa hợp đồng
Thông báo
Xử lý
Thông báo lỗi nếu có
Kiểm tra hợp lệ
Nhập thông tin
Yêu cầu nhập thông tin
Yêu cầu thêm (sửa)
Gọi Form chi tiết hợp đồng
Lưu dữ liệu
Hình 1 27: Biểu đồ tuần tự thêm, sửa hợp đồng
3.5.8. Xóa hợp đồng
Xử lý
Người dùng đồng ý xóa
Thông báo lỗi nếu có
Đưa ra cảnh báo
Xóa hợp đồng đã chọn
Chọn hợp đồng cần xóa
Hình 1 28: Biểu đồ tuần tự xóa hợp đồng
3.5.9. Thêm, sửa liên hệ
Lưu dữ liệu
Kiểm tra hợp lệ
Xử lý
Thông báo lỗi nếu có
Thông báo
Nhập thông tin
Yêu cầu nhập thông tin
Gọi Form chi tiết LH
Yêu cầu thêm(sửa)
Hình 1 29: Biểu đồ tuần tự thêm, sửa liên hệ
3.5.10. Xóa liên hệ
Thông báo nếu có lỗi
Người dùng đồng ý
Xử lý
Đưa ra cảnh báo
Xóa liên hệ đã chọn
Chọn liên hệ cần xóa
Hình 1 30: Biểu đồ tuần tự xóa liên hệ
3.5.11. Thêm, sửa chiến dịch
Xử lý
Thông báo nếu có lỗi
Lưu dữ liệu
Kiểm tra hợp lệ
Thông báo
Nhập thông tin
Yêu cầu nhập thông tin
Gọi Form chi tiết CD
Yêu cầu thêm(sửa)
Hình 1 31: Biểu đồ tuần tự thêm, sửa chiến dịch
3.5.12. Xóa chiến dịch
Xử lý
Người dùng đồng ý xóa
Thông báo nếu có lỗi
Đưa ra cảnh báo
Xóa chiến dịch đã chọn
Chọn chiến dịch cần xóa
Hình 1 32: Biểu đồ tuần tự xóa chiến dịch
3.5. Kiến trúc và công cụ phát triển CRM WCF 2010
3.5.1. Kiến trúc của CRM WCF 2010
CRM WCF 2010 được thiết kế theo mô hình 3 lớp:
Tầng Giao diện người dùng (UI): Là giao diện ứng dụng mà người dùng nhìn thấy và có thể tương tác.
Tầng xử lý nghiệp vụ (BC): Là tầng mà tại đó mọi tác vụ, tiến trình xử lý nghiệp vụ xảy ra rồi trả kết quả về để hiện thị lên UI.
Tầng truy cập dữ liệu (DAC): Là tầng thao tác trực tiếp với cơ sở dữ liệu, lấy dữ liệu và cập nhật dữ liệu đến cớ sở dữ liệu.
Trong đó tầng BC, DAC nằm trên Server và ở BC đưa ra bên ngoài các Service Interface sử dụng công nghệ WCF. Trên server BC gọi tầng DAC để lấy dữ liệu cho việc xử lý các yêu cầu nghiệp vụ.
Tầng UI thì đặt ở phía Client và gọi đến server qua các Service Interface.
Hình 1 33: Kiến trúc CRM WCF 2010
Nhờ kiến trúc này mà hệ thống CRM WCF 2010 có thể đáp ứng được nhu cầu của các công ty đa chi nhánh. Với việc lưu trữ dữ liệu tập trung thì doanh nghiệp hoàn toàn có thể yên tâm về vấn đề bảo mật của dữ liệu, và khả năng tổng hợp dữ liệu nhanh chóng. Tái sử dụng và dễ thay đổi cũng là một ưu điểm của kiến trúc này. CRM WCF 2010 hoàn toàn có khả năng đáp ứng những yêu cầu mới của khách hàng.
3.5.2. Môi trường phát triển CRM WCF 2010
Ngôn ngữ lập trình:
Ngôn ngữ Visual Basic.NET và nền tảng .NET 3.5.
Công cụ phát triển:
Bộ công cụ phát triển Visual Studio 2008 và của Microsoft.
Công cụ quản lý mã nguồn SourceOffSide.
Bộ control giao diện người dùng Infragistics 9.1.
Cơ sở dữ liệu:
CRM WCF 2010 sử dụng hệ quản trị cơ sở dữ liệu Microsoft SQL Server để xây dựng cơ sở dữ liệu.
Như đã trình bày, hệ thống CRM WCF 2010 có rất nhiều phân hệ, không thể đề cập hết trong khuôn khổ một bản khóa luận tốt nghiệp. Sau đây tôi xin giới thiệu về 3 phân hệ đang được triển khai là các phân hệ:Cơ hội, Tổ chức và Liên hệ.
3.6. Giao diện minh họa các phân hệ chính của CRM WCF 2010
3.6.1. Phân hệ Tổ chức
Hình 1 34: Giao diện phân hệ Tổ chức
Vai trò của phân hệ Tổ chức trong CRM WCF 2010
Phân hệ Tổ chức cho phép người sử dụng theo dõi, phân tích, thống kê tất cả các giao dịch của mỗi cá nhân bán hàng với các tổ chức có liên quan đến các cơ hội. Đồng thời, người sử dụng có thể biết trong một khoảng thời gian tuỳ chọn họ đã giao dịch với những tổ chức nào, đâu là tổ chức họ cần quan tâm, những tổ chức nào là tổ chức đối tác… từ đó có thể đưa ra được quyết định chiến lược, thúc đẩy hoạt động kinh doanh của doanh nghiệp.
Các từ điển liên quan
1. Doanh thu năm: Từ điển Doanh thu năm là một chỉ tiêu dùng để phân loại tổ chức theo mức doanh thu mà các tổ chức đó đạt được trong một năm.
2. Số lượng nhân viên: Từ điển Số lượng nhân viên là một chỉ tiêu dùng để phân loại tổ chức theo khoảng số lượng nhân viên làm việc trong tổ chức đó.
3. Loại tổ chức: Từ điển Loại tổ chức là một chỉ tiêu dùng để phân loại tổ chức theo các nhóm đối tượng quan hệ của doanh nghiệp, ví dụ như Đối tác, Đối thủ, Khách hàng,...
4. Loại hình sở hữu: Từ điển Loại sở hữu là một chỉ tiêu dùng để phân loại tổ chức theo loại hình sở hữu của tổ chức đó, ví dụ như Sở hữu nhà nước, Sở hữu tư nhân,…
5. Phân loại tổ chức: Từ điển Phân loại Tổ chức là một chỉ tiêu do doanh nghiệp tự đặt ra nhằm phân nhóm các tổ chức cần theo dõi để thuận tiện trong việc tìm kiếm và quản lý
6. Vai trò đối tác: Từ điển Vai trò Đối tác là một chỉ tiêu dùng để phân loại các tổ chức đối tác theo vai trò của đối tác đó đối với doanh nghiệp, ví dụ như Nhà cung cấp, Nhà tư vấn, Môi giới,…
7. Lĩnh vực: Từ điển Lĩnh vực là một chỉ tiêu dùng để phân loại tổ chức theo lĩnh vực hoạt động kinh doanh của tổ chức đó, ví dụ như Điện tử, Viễn thông, Ngân hàng, Bảo hiểm,…
3.6.2. Phân hệ liên hệ
Hình 1 35: Giao diện phân hệ Liên hệ
Vai trò của phân hệ Liên hệ trong CRM WCF 2010
Phân hệ Liên hệ cho phép người sử dụng theo dõi, tổng hợp thông tin về người liên hệ và vai trò của họ trong các tổ chức và các cơ hội bán hàng. Bằng những thông tin đó, người bán hàng sẽ định hướng được cách tiếp cận hiệu quả hơn nhằm đạt được nhiều doanh thu hơn từ những tổ chức của người liên hệ đó.
Các từ điển liên quan
1. Phân loại Liên hệ: Từ điển Phân loại Liên hệ là một chỉ tiêu do doanh nghiệp tự đặt ra nhằm phân nhóm các liên hệ theo tiêu chí riêng của mình để thuận tiện trong việc tìm kiếm và quản lý.
2. Vai trò Liên hệ: Từ điển Vai trò Liên hệ là một chỉ tiêu dùng để xác định vai trò của một liên hệ trong một cơ hội bán hàng cụ thể.
3. Nguồn gốc liên hệ: Từ điển Nguồn gốc là một chỉ tiêu dùng để phân loại kênh thông tin mà qua đó người liên hệ biết đến doanh nghiệp và sản phẩm của doanh nghiệp.
3.6.3. Phân hệ cơ hội
Hình 1 36: Giao diện phân hệ Cơ hội
Vai trò của phân hệ Cơ hội trong CRM WCF 2010
Phân hệ Cơ hội cho phép theo dõi, thống kê, phân tích, tổng hợp các giao dịch hàng ngày của nhân viên bán hàng, có bao nhiêu cơ hội đang ở giai đoạn nào, bao nhiêu cơ hội thành công, bao nhiêu cơ hội đang đi vào ngõ cụt, bao nhiêu cơ hội thất bại, doanh số của các cơ hội, tổng số các cơ hội theo từng sản phẩm trong tháng… Từ đó, nhân viên bán hàng có thể quản lý chặt chẽ từng cơ hội bán hàng xác định những cách tiếp cận khách hàng một cách hiệu quả nhất, người quản lý có thể phân tích, dự đoán được tình hình kinh doanh của doanh nghiệp trong thời gian kế tiếp, kịp thời thay đổi, áp dụng những chiến lược kinh doanh phù hợp nhằm đạt được lợi nhuận tối đa.
Các từ điển liên quan
1. Giai đoạn: Từ điển Giai đoạn là một chỉ tiêu dùng để phân loại cơ hội theo từng giai đoạn của chu kỳ bán hàng.
2. Phân loại cơ hội: Từ điển Phân loại Cơ hội là một chỉ tiêu do doanh nghiệp tự đặt ra nhằm phân nhóm các cơ hội bán hàng của mình theo tiêu chí riêng để thuận tiện trong việc tìm kiếm và quản lý.
3. Bước tiếp theo: Từ điển Bước tiếp theo Cơ hội là một chỉ tiêu dùng để xác định công việc tiếp theo cần thực hiện để thúc đẩy cơ hội bán hàng đi đến thành công.
4. Lý do thắng/thua: Từ điển Lý do thắng/thua là một chỉ tiêu dùng để phân loại cơ hội theo nguyên nhân vì sao cơ hội thắng lợi hay thất bại.
5. Vai trò liên hệ: Từ điển Vai trò Liên hệ là một chỉ tiêu dùng để xác định một liên hệ có vai trò như thế nào trong một cơ hội bán hàng.
6. Vai trò đối tác: Từ điển Vai trò Đối tác là một chỉ tiêu để xác định một tổ chức đối tác có vai trò như thế nào trong một cơ hội bán hàng.
7. Loại: Từ điển Loại là một chỉ tiêu dùng để phân loại tổ chức có liên quan đến cơ hội bán hàng là khách hàng mới hay cũ.
8. Nguồn gốc: Từ điển Nguồn gốc là một chỉ tiêu dùng để phân loại kênh thông tin mà qua đó khách hàng biết đến doanh nghiệp và sản phẩm của doanh nghiệp.
KẾT LUẬN
Quản trị quan hệ khách hàng - CRM ngày càng trở lên quan trọng đối với cáo doanh nghiệp, giúp cho doanh nghiệp quản lý khách hàng tốt hơn, tạo mối quan hệ lâu bền với khách hàng và tìm kiếm những khách hàng tiềm năng mới.
Bản khóa luận tốt nghiệp này đã nói lên những khái niệm cơ bản nhất về công nghệ WCF và xây dựng các chức năng chính của một hệ thống CRM.
Do thời gian thực hiện đề tài có hạn và phạm vi rộng lớn của vấn đề , khóa luận chưa thể đi sâu và đề cập hết mọi khía cạnh của công nghệ WCF cùng việc xây dựng các ứng dụng
trên diện rộng dựa trên công nghệ này.
Em xin chân thành cảm ơn thầy giáo ThS. Đào Kiến Quốc và ThS. Nguyễn Xuân Hoàng Phó TGĐ Công ty cổ phần MISA đã trực tiếp hướng dẫn, động viên, giúp đỡ em rất nhiều để em có thể hoàn thành bản khóa luận tốt nghiệp này.
Cuối cùng em xin bày tỏ lòng biết ơn sâu sắc đến gia đình, bạn bè, thầy cô giáo những người đã quan tâm, giúp đỡ em rất nhiều trong những năm ngồi trên ghế nhà trường.
TÀI LIỆU THAM KHẢO
[1]. Dave Grundgeiger (2002), Programming Visual Basic. Net, O’Reilly [2]. John Sharp. Microsoft Windows Communication Foundation Step by Step.
[3]. Robin A.Reynolds Haertle (2002), OOP with Microsoft Visual Basic. Net & Microsoft Visual C# Step by Step, Microsoft Press
[4]. Scott Klein. WProfessional WCF Programming Apr 2007.
[5]. Steve Resnick. Essential Windows Communication Foundation (WCF): For .NET Framework 3.5.
[6]. www.crmvietnam.com
[7].
[8].
[9].
[10].
[11].
Các file đính kèm theo tài liệu này:
- Nguyen Quang Hung_K50CNPM_Khoa luan tot nghiep dai hoc.doc