Phần II: Tổng quan công nghệ WCF
2.5 Kiến trúc mô hình WCF
Có thể chia kiến trúc WCF thành 4 tầng, với tầng trên cùng là tầng ứng dụng, đây là tầng giao tiếp với người dùng, độc lập nền tảng và ngôn ngữ lập trình
Các ứng dụng này trao đổi thông tin với nhau thông qua hợp đồng bao gồm một số giao dịch cơ bản như: hợp đồng dịch vụ, hợp đồng dữ liệu, tin nhắn…Mô hình kiến trúc WCF có thể được trình bày theo hình dưới đây[12,15].
Hình 5: Kiến trúc WCF Contract
Hợp đồng xác định các khía cạnh khác nhau của hệ thống tin nhắn. Data contract mô tả thông số dữ liệu làm tất cả các tin nhắn của một dịch vụ có thể tạo ra hay tiêu thụ. Các thông số này được định nghĩa bởi lược đồ XML. Các Message contract xác
định các bộ phận thông báo cụ thể bằng cách sử dụng giao thức SOAP cho phép kiểm soát chi tiết hơn trên các phần của tin nhắn, khi khả năng tương tác đòi hỏi độ chính xác. Service contract xác định chữ ký phương pháp thực tế của dịch vụ, được phân phối như một giao diện tại một trong các ngôn ngữ lập trình hỗ trợ.
Proxy và binding quy định các điều kiện cần thiết để giao tiếp với một dịch vụ.
Như các ràng buộc phải chỉ định việc vận chuyển được sử dụng (HTTP hoặc TCP), mã hóa. Chính sách bao gồm các yêu cầu an ninh và điều kiện khác được đáp ứng để giao tiếp với một dịch vụ.
Service runtime
Bao gồm các hành xử xảy ra trong quá trình hoạt động thực tế của dịch vụ, các hành vi thời gian chạy của dịch vụ. Throtting Behavior điều chỉnh có bao nhiêu tin nhắn được xử ly, có thể thay đổi nếu nhu cầu phát triển dịch vụ đến một giới hạn.
Error Behavior hành xử khi có lỗi dịch vụ xảy ra, kiểm soát thông tin được phép truyền đạt đến khách hàng. Metadata Behavior hành xử siêu dữ liệu như thế nào thực hiện được với thế giới bên ngoài. Install Behavior xác định có bao nhiêu trường hợp của dịch vụ có thể được chạy. Transacsion Behavior cho phép phục hồi hệ thống hoạt động giao dịch, nếu thất bại xảy ra. Message Behavior hành xử thông điệp được xử lý bởi cơ sở hạ tầng WCF.
Hình 6: Các thành phần tham gia gửi và nhận tin Messaging Layer
Lớp tin nhắn bao gồm các kênh. Kênh là một thành phần xử lý tin nhắn theo một cách nào đó. Kênh hoạt động theo tin nhắn và các tiêu đề tin. Điều này khác lớp Services Runtime, chủ yếu liên quan đến xử lý các nội dung của thông báo. Có hai loại kênh: kênh vận tải và kênh giao thức.
Kênh vận tải đọc và viết tin nhắn từ mạng (hoặc một số điểm liên lạc khác với thế giới bên ngoài). Một số phương tiện giao thông sử dụng một bộ mã hóa để chuyển đổi các tin nhắn (được biểu diễn như là Infosets XML) và đại diện dòng byte được sử dụng bởi hệ thống mạng như vận chuyển HTTP, TCP, và MSMQ, mã hóa nhị phân XML và tối ưu hóa. Kênh giao thức thực hiện các giao thức xử lý tin nhắn, bằng cách đọc hoặc viết các tiêu đề bổ sung vào tin nhắn.
Hình 7: Service Layer và Messaging Layer
Action và hosting
Một dịch vụ là một chương trình. Cũng giống như các chương trình khác, dịch vụ phải được thực thi. Điều này được biết đến như là một dịch vụ tự lưu trữ trên máy chủ.
Dịch vụ cũng có thể được lưu trữ, chạy trong một môi trường thực thi được quản lý bởi một đại lý bên ngoài, chẳng hạn như IIS hoặc Windows Active Services (WAS). WAS cho phép các ứng dụng WCF được kích hoạt tự động khi triển khai trên một máy tính chạy WAS. Dịch vụ cũng có thể được tự chạy như các file .exe.
Một dịch vụ cũng có thể được chạy tự động như một dịch vụ Windows.
WCF tương tự như mô hình hệ thống mở OSI. Services Model Layer là tầng sử dụng chủ yếu trong lập trình. Services Model Layer ảnh hưởng đến lớp bên dưới là Messager Layer, nơi chứa tất cả các giao thông vận tải thực tế của tin nhắn trên các kênh. Lớp tin nhắn là cấp dưới, nơi thực thi vận chuyển, kênh, các giao thức và mã
hóa. Services Model Layer là nơi có các hành vi, hợp đồng, và chính sách. Hành vi là quan nhất trong Services Model Layer, trong khi đó các Chanel ở lớp tin nhắn là trung tâm.