Dispatcher là tập hợp các kiểu trong class ServiceModel tại ứng dụng nhận. Dispathcher thuộc namespace System.ServiceModel.Dispatcher. Các nhiệm vụ được thực hiện bởi các ChannelDispatcher và các loại tham chiếu bởi
ChannelDispatcher:
Tạo ra một kênh nghe từ ràng buộc
Quản lý kênh nhận được từ người nghe
Quản lý các vòng lặp nghe
Quản lý thời gian tồn tại của người nghe kênh và các ngăn xếp kênh kết quả
Hạn chế tốc độ mà tại đó các tin nhắn nhận được từ ngăn xếp kênh (cũng được gọi là throttling)
Quản lý việc tạo, vòng đời, và số lượng của các đối tượng dịch vụ
Định tuyến nhận tin nhắn cho các đối tượng dịch vụ
Deserializing đối tượng có ý nghĩa từ tin nhắn nhận được
Sử dụng các đối tượng deserialized để gọi một phương thức trên một đối tượng dịch vụ
Serializing giá trị trả lại của phương thức đối tượng dịch vụ vào các tin nhắn trả lời
Routing tin nhắn trả lời để ngăn xếp kênh thích hợp và gửi trở lại cho người gửi thông qua đó ngăn xếp kênh
Xử lý sai sót trong những nhiệm vụ trước
Quản lý thực hiện hành vi mặc định và tùy chỉnh trong các nhiệm vụ trước
Hình 15: Channel Dispatcher
2.13 Quản lý đối tƣợng-Instance Management
Quản lý đối tượng liên quan đến các dịch vụ khi xử lý một yêu cầu từ khách hàng. Quản lý đối tượng là tập hợp các kỹ thuật WCF sử dụng để yêu cầu Client liên kết với dịch vụ. Nó cần thiết bởi vì các ứng dụng sẽ khác nhau thì nhu cầu đối với khả năng mở rộng, hiệu suất, độ bền, giao dịch và các lời gọi hàng đợi sẽ khác nhau. Thông thường có 3 mô hình đối tượng như sau trong WCF:
2.13.1 Per-Call Service
Khi dịch vụ WCF thiết lập chế độ Per-Call, Service Instance sẽ được tạo ra trong mỗi lần gọi tới dịch vụ từ mỗi yêu cầu của Client. Service Instance này sẽ bị hủy sau khi trả kết quả lại cho Client.
Hình 16: Per-call[15]
Mô hình sau đây đại diện cho tiến trình xử lý yêu cầu từ Client khi thiết lập chế độ Per-Call
Hình 17: Tiến trình Per call[15]
Tất cả các yêu cầu dịch vụ đều trả về '1', bởi vì chúng ta đã thiết lập Instance mode bằng Per-Call. Service instance sẽ tạo cho mỗi request và giá trị biến tĩnh sẽ được thiết lập.
2.13.2 Per-Session Service
Khi WCF service cấu hình là Per-Session Instance mode, các session giữa Client và Service sẽ được lưu trữ lại, khi Client tạo một Proxy mới trên dịch vụ cụ thể, một trường hợp dịch vụ chuyên dụng sẽ được cung cấp cho khách hàng. Nó độc lập với tất cả các trường hợp khác. Mô hình sau sẽ mô tả yêu cầu từ Client tới Service sử dụng chế độ Per-Session
Hình 18: Per- Session[15]
2.13.3 Singleton Service
Khi WCF service cấu hình là Singleton Instance mode, tất cả Clients là độc lập khi kết nối với cùng một đối tượng đơn giống nhau. Đối tượng Singleton Instance sẽ được tạo khi dịch vụ được host, và nó sẽ bị phá bỏ khi host bị tắt. Dưới đây là đồ hình xử lý yêu cầu tới Client sử dụng Singleton Instance mode.
Hình 19: Singleton[15]
2.14 Hosting dịch vụ (Active và Hosting)
Có bốn cách khác nhau để lưu trữ các dịch vụ WCF. Dịch vụ WCF không thể tồn tại tự nó, nó phải được lưu trữ trong các quá trình xử lý của windows. Một quá trình hosting đơn lẻ có thể lưu trữ nhiều máy chủ và các dịch vụ cùng loại có thể được lưu trữ trong nhiều quá trình xử lý hosting[3].
Có nhiều hosting và giao thức hỗ trợ WCF. Microsoft giới thiệu khái niệm WCF để phát triển các ứng dụng phân tán dễ dàng hơn[3].
Môi trƣờng Hỗ trợ giao thức
Windows console and form application HTTP, net.tcp, net.pipe, net.msmq
net.msmq
Web Server IIS6 http, wshttp
Web Server IIS7 - Windows Process Activation Service (WAS)
HTTP, net.tcp, net.pipe, net.msmq
Tóm tắt các loại hosting và các tính năng hỗ trợ.
Tính năng Self-Hosting IIS Hosting WAS Hosting
Executable Process/
App Domain Yes Yes Yes
Configuration App.config Web.config Web.config
Activation Manual at
startup
Message-
based Message-based
Idle-Time Management No Yes Yes
Health Monitoring No Yes Yes
Process Recycling No Yes Yes
Management Tools No Yes Yes
2.14.1 IIS 5/6 Hosting
Ưu điểm chính của hosting service trong IIS là nó sẽ tự động xử lý host khi Client gọi tới lần đầu tiên. Sử dụng các tính năng của IIS là xử lý quay vòng, tạo trạng thái nghỉ, bảo vệ màn hình, các hoạt động dựa trên tin nhắn, nhược điểm chính là chỉ hỗ trợ giao thức HTTP[3].
2.14.2 Self Hosting
Với web service,chúng ta chỉ có thể host dịch vụ trong IIS, nhưng WCF cung cấp cho người dùng có thể host dịch vụ ở mọi ứng dụng như console application, Windows Form
Với Self host, lập trình viên có thể tạo và quản lý vòng đời của các bộ xử lý host. Chú ý: tiến trình Host phải được chạy trước lời gọi từ phía Client, tức là phải khởi động nó trước[3].
2.14.3 Windows Activation Service
Windows Activation service là một dịch vụ hệ thống tích hợp sẵn trong Windows vista và windows Server 2008. Nó được tích hợp sẵn trong with IIS 7.0, mạnh hơn nhiều khi so sánh với IIS 6.0 bởi vì nó hỗ trợ HTTP, TCP và Named Pipes trong khi IIS 6.0 chỉ hỗ trợ Http. Cũng có thể cài đặt và cấu hình riêng[3].
Hosting WCF trong Activation service có nhiều ưu điểm như quá trình tái chế, cách lý, quản lý thời gian nhàn rỗi và cấu hình chung hệ thống. WAS hosted service có thể được tạo bởi các bước sau:
Kích hoạt WCF với giao thức non-http
Tạo WAS hosted service
Kích hoạt các binding khác nhau để hosted dịch vụ
2.14.4 Windows Service Hosting
Nó tương tự như hosting service trong IIS mà không cần kích hoạt tin nhắn. ưu điểm của cách hosting trong Windows service là:
Dịch vụ sẽ được hosted khi hệ thống được khởi động
Thời gian sống của tiến trình được điều khiển bởi Service Control Manager trong Windows Service
Tất cả các phiên bản của Windows đều hỗ trợ hosting WCF service[3].
2.15 Bảo mật trong WCF
Việc bảo mật trong WCF được xác định trong 4 tính năng quan trọng:
Bảo mật (Confidentiality): đảm bảo các bên không có thẩm quyền sẽ không thể xem được thông điệp mật được truyền giữa bên gửi và bên nhận. Điều này đạt được thông qua việc sử dụng các thuật toán mã hóa.
Toàn vẹn (Integrity): đảm bảo bên nhận sẽ nhận được chính xác thông điệp mà bên gửi đã gửi. Để làm được điều này, bên gửi phải sử dụng chữ ký điện tử (digital signature) trên các thông điệp gửi.
Chứng thực (Authentication): tính năng này dùng để kiểm tra người gửi và người nhận là ai và họ có được biết bởi hệ thống hay không.
Quyền hạn (Authorization): tại thời điểm này, chúng ta đã biết được người gửi hoặc người nhận là ai. Tuy nhiên, cần phải biết được liệu họ có được cấp quyền để thực hiện hành động mà họ đang yêu cầu từ ứng dụng hay không[4][18].
Việc bảo mật trong WCF được mở rộng trên nhiều thành phần trong kiến trúc WCF. Mục tiêu chính của việc bảo mật trong WCF là để cung cấp tính toàn vẹn
(integrity), bảo mật (confidentility), chứng thực (authentication), quyền hạn (authorization) và kiểm soát (auditing) đối với các ứng dụng được xây dựng trên nền tảng WCF. Kiến trúc của WCF được phân ra thành các chức năng sau:
Mật truyền (Transfer security): chịu trách nhiệm cung cấp thông điệp bí mật (message confidentiality), toàn vẹn dữ liệu (data integrity) và xác thực các bên giao tiếp (authentication of communicating parties).
Quyền hạn (Authorization): chịu trách nhiệm cung cấp nền tảng cho việc đưa ra các quyết định về quyền hạn (authorization decisions).
Lưu vết (Auditing): chịu trách nhiệm cho việc ghi lại các sự kiện liên quan đến bảo mật để lưu vết.
Việc mật truyền (Transfer security) có thể được thực hiện bằng cách sử dụng một trong các chế độ bảo mật (security mode) sau[4][18]
:
Transport Security Mode: Tất cả 3 chức năng bảo mật được cung cấp bởi transport thường được dùng để truyền các thông điệp giữa Client và service. Chế độ này có ưu điểm là được sử dụng rất nhiều ở các nền tảng khác nhau, và độ phức tạp toán ít hơn. Tuy vậy nhược điểm là chỉ đảm bảo bảo mật các thông điểm từ điểm đến điểm (point to point).
Message Security Mode: Việc mật truyền (Transfer security) chỉ được cung cấp ở cấp độ thông điệp SOAP, có nghĩa là việc bảo mật được áp dụng trực tiếp đối với thông điệp SOAP ở cấp độ XML. Chế độ này có ưu điểm là không phụ thuộc vào giao thức vận chuyển, dễ mở rộng, đảm bảo bảo mật đầu cuối. Nhược điểm của nó là chậm hơn so với chế độ Transport do nó phải làm việc với XML.
Transport with Message Credential Security Mode: Việc mật truyền (Transfer security) được thực hiện trên cả tầng transport và message. Tầng transport cung cấp truyền thông bảo mật (communication confidential), toàn vẹn dữ liệu (data integrity) và chứng thực dịch vụ (service authentication). Tầng message cung cấp chứng thực Client (Client authentication).
Một số kịch bản bảo mật trong WCF như[4,18]:
Client Authentication với Transport–Level Security
Client Authentication với Message-Level Security
Trusted Subsystem
Message Security với Issued Tokens
Message Security với Mutual Certificates
Message Security với Windows Client không sử dụng Credential Negotiation
Message Security with a Windows Client
Message Security with a Certificate Client
Message Security with a User Name Client
Message Security with an Anonymous Client
Transport Security with Certificate Authentication
Transport Security with an Anonymous Client
Transport Security with Windows Authentication
Transport Security with Basic Authentication
Intranet Unsecured Client and Service
PHẦN III: XÂY DỰNG CHƢƠNG TRÌNH ỨNG DỤNG
3.1 Khảo sát bài toán
Các công việc chính trong công ty:
Phòng hành chính, kế toán, nhân sự thực hiện các công việc liên quan đến nhân sự, kế toán, kế hoạch tài vụ…
Phòng kinh doanh chủ yếu ký kết hợp đồng và tìm kiếm khách hàng
Phòng biên tập đưa nội dung tin tức lên các website nội bộ của công ty
Phòng kỹ thuật được chia thành các nhóm khác nhau, phụ trách việc phát triển ứng dụng, thiết kế đồ họa.
Quy trình hoạt động:
Nhân viên kinh doanh tìm kiếm khách hàng, cập nhật và chuyển hợp đồng cho bộ phận kế toán kiểm tra, duyệt hợp đồng.
Nếu hợp đồng được duyệt, sẽ chuyển tiếp cho các bộ phận thiết kế, trưởng nhóm thiết kế sẽ tiếp nhận và phân công thiết kế. Khi kết thúc thiết kế, bộ phận kỹ thuật sẽ tiếp nhận công việc.
Trưởng nhóm kỹ thuật sau khi tiếp nhận hợp đồng sẽ phân công công việc lập trình cho các cá nhân khác trong phòng ban.
Sau khi lập trình và test xong, bộ phận kỹ thuật sẽ chuyển cho bộ phận chăm sóc khách hàng làm việc đến khi hợp đồng được chấp nhận. Giữa các bộ phận sẽ xảy ra trường hợp hủy yêu cầu nếu chưa đạt.
Các kiểu công việc và hợp đồng bao gồm:
Theo quy trình: Các công việc được thực hiện khi nhận được hợp đồng dưới dạng dịch vụ như: hợp đồng Domain hosting, hợp đồng quảng cáo Google adwords, hợp đồng Bizweb
Công việc trực tiếp: Là các công việc được giao trực tiếp giữa các cá nhân
Công việc theo dự án: Phụ thuộc vào quản lý dự án phân công, tùy từng dự án cụ thể.
Dưới đây là một số đặc tả quy trình làm việc trong công ty DKT:
Trước khi vào workflow: Nhân viên kinh doanh tiếp cận khách hàng, gửi tài liệu, site demo, lấy thông tin
Gửi tài liệu hướng dẫn sử dụng
Điền các thông tin thu được vào phiếu yêu cầu của khách hàng
Thông nhất với khách hàng về giá cả....
Hình 20: Quy trình dịch vụ Bizweb trong công ty DKT
Chuẩn bị hợp đồng:
Kinh doanh nhập thông tin khách hàng lên hệ thống, chọn loại hợp đồng tương ứng để triết ra hợp đồng tương ứng
Sau khi ký hợp đồng, Kinh doanh vào chọn loại hợp đồng, thông tin khách hàng đã lưu để tạo hợp đồng ban đầu (Bắt đầu bước 1)
Bƣớc 1
Kinh doanh tạo hợp đồng mới trên hệ thống, với các thông tin (thông tin khách hàng, thông tin hợp đồng, file đính kèm…)
Hợp đồng vẫn đang ở trạng thái “Hợp đồng mới” thì Kinh doanh vẫn có thể chỉnh sửa, cập nhật thông tin, hay xóa hợp đồng được.
Bƣớc 2
Sau khi có hợp đồng mới, màn hình của kế toán hiện lên hợp đồng, kế toán vào xem hợp đồng và xác nhận hợp đồng. Nếu Hợp đồng không hợp lệ, kế toán “không xác nhận” hợp đồng và sẽ chuyển trạng thái “Chờ xác nhận”
Màn hình của kinh doanh hiện hợp đồng không được xác nhận, kinh doanh thống nhất lại hợp đồng và cập nhật thông tin để kế toán xác nhận lại
Việc này chỉ dừng lại khi kế toán chấp nhận xác nhận cho hợp đồng
Hợp đồng chuyển trạng thái “Đang thiết kế” và chuyển sang trưởng nhóm thiết kế
Bƣớc 3
Sau khi nhận được Hợp đồng ở trạng thái “Đang thiết kế”, trưởng nhóm thiết kế sẽ: Xem các thông tin đính kèm trên bản hợp đồng, xem xét và tiến hành phân công công việc cho các nhân viên thiết kế đồng thời đưa ra hạn hoàn thành cho nhóm thiết kế
Trong quá trình làm nếu có yêu cầu nào đột xuất từ khách hàng về thiết kế, trạng thái hợp đồng vẫn giữ “Đang thiết kế” , việc này được lưu lại dưới dạng “comment” hoặc “tài liệu thêm” cho hợp đồng
Nếu hết thời gian mà thiết kế chưa hoàn thành thì vẫn chuyển trạng thái hợp đồng về “Chờ thiết kế”
Nhóm thiết kế hoàn thành, nhưng kinh doanh và chăm sóc khách hàng bổ sung thêm về việc làm chưa đúng yêu cầu khách hàng, thì sẽ chuyển trạng thái hợp đồng về “Chờ thiết kế”
Chỉ đến khi nhóm thiết kế, kinh doanh, chăm sóc khách hàng thống nhất về việc hoàn thành bản thiết kế đã đúng yêu cầu thì chuyển hợp đồng về trạng thái “đang triển khai” , và đưa về màn hình của trưởng nhóm triển khai.
Bƣớc 4
Sau khi nhận được hợp đồng ở trạng thái “Đang triển khai”, trưởng nhóm triển khai sẽ: Xem các thông tin đính kèm trên bản hợp đồng, xem xét và tiến hành phân công công việc cho các nhân viên triển khai đồng thời đưa ra hạn hoàn thành cho nhóm triển khai
Trong quá trình làm nếu có yêu cầu nào đột xuất từ khách hàng về triển khai, trạng thái hợp đồng vẫn giữ “đang triển khai” , việc này được lưu lại dưới dạng “comment” hoặc “tài liệu thêm” cho hợp đồng
Nếu hết thời gian triển khai chưa hoàn thành, sẽ chuyển hợp đồng về trạng thái “Chờ triển khai” (mục đích là để đánh giá sự hoàn thành của nhóm triển khai dựa trên khoảng thời gian chờ triển khai)
Nhóm triển khai hoàn thành, nhưng kinh doanh và và chăm sóc khách hàng bổ sung thêm về việc làm chưa đúng yêu cầu khách hàng thì sẽ chuyển trạng thái hợp đồng về dạng “chờ triển khai”
Chỉ đến khi nhóm triển khai, kinh doanh, chăm sóc khách hàng thống nhất về việc hoàn thành bản thiết kế đã đúng yêu cầu, sẽ chuyển hợp đồng về trạng thái “Đang bàn giao”, và chuyển đến trưởng nhóm chăm sóc khách hàng.
Bƣớc 5
Sau khi nhận được hợp đồng “Đang bàn giao”, trưởng nhóm chăm sóc khách hàng sẽ: Xem các thông tin đính kèm trên bản hợp đồng, xem xét và tiến hành phân công công việc cho các nhân viên chăm sóc khách hàng đồng thời đưa ra hạn hoàn thành cho nhóm chăm sóc khách hàng.
Chăm sóc khách hàng làm việc với khách hàng, nếu khách hàng chấp nhận, sẽ chuyển hợp đồng về dạng “Hoàn thành” và kết thúc hợp đồng, nếu khách hàng yêu cầu thêm về
- Thiết kế: sẽ chuyển hợp đồng về “chờ bàn giao thiết kế” - Kỹ thuật: sẽ chuyển hợp đồng về “Chờ bàn giao triển khai”
Chỉ khi khách hàng không yêu cầu thì chuyển hợp đồng về trạng thái hoàn thành, kết thúc hợp đồng.
Bƣớc 6
Chăm sóc khách hàng bàn giao đầy đủ cho khách hàng, quyết toán và kết thúc hợp đồng.
3.2 Thiêt kế hệ thống
Việc xác định được quy trình công việc có nghĩa quan trọng, từ đó tôi đã xây