Bài viết này cung cấp tổng quan về các công nghệ nền tảng giao tiếp của windows (wcf). Phần thứ nhất mô tả các công nghệ đã được triển khai trên thế giới để giải quyết các bài toán giao tiếp giữa máy tính và máy tính và những khó khăn, thách thức trong việc triển khai các công nghệ này. Điều này dẫn đến việc tạo ra công nghệ nền tảng WCF, một nền tảng hợp nhất để xây dựng nhanh các ứng dụng yêu cầu giao tiếp. Sau đó, chúng tôi sẽ giới thiệu kiến trúc cơ bản của wcf, các thành phần tạo nên wcf. Phần cuối sẽ giới thiệu các công cụ cần thiết để sử dụng wcf để xây dựng ứng dụng, đồng thời đính kèm ví dụ wcf đơn giản, thuận tiện cho học viên dễ hiểu
Windows Communication Foundation (WCF) là gì?
WCF là công nghệ nền tảng hợp 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. Vào tháng 11 năm 2005, .net 2.0 được microsoft phát hành. Nó cung cấp các chức năng api riêng biệt cho giao tiếp dựa trên xà phòng để tối đa hóa khả năng tương tác giữa các nền tảng bằng cách sử dụng các dịch vụ web. .net 2.0 cũng cung cấp các API cho giao tiếp dựa trên nhị phân để tối ưu hóa việc chạy trên các hệ thống cửa sổ giữa các ứng dụng được gọi là .NET Remoting, API giao dịch phân tán và API giao tiếp không đồng bộ. WCF hợp nhất các API này thành một mô hình để đáp ứng mô hình lập trình hướng dịch vụ.
wcf có thể sử dụng thông báo xà phòng giữa hai quy trình, cho phép các ứng dụng dựa trên wcf hoạt động với các quy trình khác bằng cách giao tiếp bằng thông báo xà phòng. Khi quy trình WCF giao tiếp với quy trình không phải WCF, thông báo SOAP được mã hóa dựa trên XML và khi giao tiếp với quy trình WCF khác, thông báo SOAP có thể được tối ưu hóa dựa trên mã hóa nhị phân.
Tại sao nên sử dụng wcf?
Như đã trình bày ở trên, .NET 2.0 hỗ trợ nhiều phương thức giao tiếp giữa các ứng dụng khác nhau cho các mục đích khác nhau. Các phương tiện 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ông nghệ. Tuy nhiên, kiến thức thu được từ việc thực hiện một phương pháp có thể không áp dụng được cho phương pháp khác.
Với sự ra đời của wcf, tất cả các phương thức liên lạc trước đây có thể được thực hiện thông qua wcf. Vì vậy, các nhà phát triển chỉ cần nắm vững công nghệ wcf để nhanh chóng xây dựng các ứng dụng.
wcf là một mô hình lập trình cho phép các 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, thậm chí đảm bảo các giao dịch. Nó đơn giản hóa việc phát triển các ứng dụng được kết nối và cung cấp cho các nhà phát triển giá trị mà họ có thể không nhận ra ngay lập tức, đó là cách tiếp cận đơn giản, thống nhất, phân tán để phát triển hệ thống, dễ quản lý.
Vì wcf được xây dựng dựa trên .net framework 2.0 clr nên đây là một tập hợ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 các môi trường lập trình quen thuộc của họ như vb.net hoặc c#
Cấu trúc của wcf
Sơ đồ bên dưới mô tả các lớp chính trong kiến trúc nền tảng giao tiếp của windows (wcf)
Kiến trúc của WCF (hình ảnh từ www.microsoft.com)
hợp đồng (thỏa thuận) Hợp đồng trong wcf giống như hợp đồng/thỏa thuận bạn ký trong đời thực. Hợp đồng bạn ký có thể chứa thông tin như loại công việc bạn sẽ làm và thông tin bạn muốn cung cấp cho các bên khác. Hợp đồng wcf cũng chứa thông tin tương tự. Hợp đồng xác định các thông số kỹ thuật trong hệ thống tin nhắn và thường có các loại hợp đồng sau:
- Dữ liệu hợp đồng mô tả các tham số thông báo mà dịch vụ có thể tạo hoặc sử dụng. Các tham số thông báo được xác định bởi một tài liệu bằng cách sử dụng ngôn ngữ đặc tả Lược đồ XML (XSD), ngôn ngữ này giúp các hệ thống hiểu XML dễ dàng xử lý tài liệu. Các dịch vụ có thể không cần đồng ý về các loại khi chúng giao tiếp với nhau, nhưng chúng cần đồng ý về các hợp đồng dữ liệu, tức là các loại tham số và trả về.
- tin nhắn xác định các phần của tin nhắn bằng cách sử dụng giao thức xà phòng và cho phép kiểm soát sâu hơn các phần của tin nhắn khi mức độ chính xác này được yêu cầu.
- Hợp đồng dịch vụ chỉ định chi tiết phương thức của dịch vụ và được phân phối dưới dạng giao diện bằng ngôn ngữ lập trình như visual basic hoặc visual c#. Một hợp đồng dịch vụ có thể được hình dung một cách gián tiếp như sau: “Đây là những loại dữ liệu trong tin nhắn của tôi, đây là nơi tôi cung cấp chúng và đây là những giao thức mà tôi có thể giao tiếp”
- Các chính sách và ràng buộc mô tả các điều kiện cần thiết để giao tiếp với một dịch vụ. Các chính sách sẽ bao gồm các yêu cầu bảo mật và các điều kiện khác cần thiết khi kết nối với dịch vụ.
- Hành vi điều tiết: kiểm soát luồng để chỉ định số lượng thư cần xử lý
- Hành vi lỗi: Hành vi lỗi chỉ định hành động khi xảy ra lỗi trong hệ thống
- Hành vi siêu dữ liệu: Hành động với siêu dữ liệu chỉ định cách thức và thời điểm siêu dữ liệu được hiển thị bên ngoài dịch vụ
- Hành vi của thực thể: Chỉ định hành vi của thực thể về số lượng phiên bản mà dịch vụ chạy
- Hành vi giao dịch: Hành vi giao dịch cho phép khôi phục giao dịch khi xảy ra lỗi
- Kiểm tra thông báo: Kiểm tra thông báo cho phép dịch vụ kiểm tra tất cả hoặc một phần thông báo
- Hành vi lập lịch: Khi một tin nhắn được xử lý bởi nền tảng wcf, dịch vụ hành vi lập lịch sẽ xác định phương pháp xử lý của tin nhắn.
- Hành vi tương tranh: Hành vi tương tranh xác định cách xử lý đa luồng trên mỗi dịch vụ hoặc mỗi phiên bản dịch vụ. Hiện tượng này giúp kiểm soát số luồng có thể truy cập vào một phiên bản dịch vụ.
- Lọc tham số: Khi một tin nhắn được gửi đến dịch vụ, một số hành động sẽ diễn ra dựa trên nội dung của tiêu đề tin nhắn. Phần lọc tham số sẽ lọc tiêu đề thư và thực hiện các hành động đặt sẵn theo lọc tiêu đề thư.
- Kênh vận chuyển chịu trách nhiệm đọc và ghi tin nhắn từ mạng hoặc một số điểm giao dịch bên ngoài
- Kênh điều khiển thực hiện xử lý thông báo theo giao thức và thường hoạt động bằng cách đọc và ghi các tiêu đề bổ sung trong thông báo.
- .net framework 3.5. Sinh viên có thể tải gói cài đặt .net framework 3.5 từ trang web chính thức của Microsoft. Địa chỉ như sau: http://www.microsoft.com/downloads/details.aspx?familyid=ab99342f-5d1a-413d-8319-81da479ab0d7&displaylang=vi
- Microsoft Visual Studio 2008. Có thể tải xuống phiên bản dùng thử tại đây: http://msdn.microsoft.com/en-us/visualc/aa700831.aspx
- hoặc phiên bản microsoft visual studio express. Liên kết tải xuống: http://www.microsoft.com/express/
Hợp đồng
Dịch vụ thời gian chạy
Lớp dịch vụ triển khai bao gồm các hành vi sẽ xảy ra trong quá trình thực thi dịch vụ, tức là hành vi triển khai của dịch vụ. Chúng ta sẽ thấy hành vi như thế này:
Thông báo (Bản tin)
Một lớp thông báo là một tập hợp các kênh. Mỗi kênh là một thành phần xử lý thông báo theo một cách nào đó. Một tập hợp các kênh thường được gọi là ngăn xếp kênh. Các kênh hoạt động trên tin nhắn và tiêu đề tin nhắn. Sự khác biệt giữa lớp này và lớp thực hiện dịch vụ nằm ở sự khác biệt trong việc xử lý nội dung thông báo.
Có hai kênh khác nhau, kênh truyền tải và kênh điều khiển.
Lưu trữ và kích hoạt (bao gồm và kích hoạt)
Nói chung, một dịch vụ thực sự là một chương trình. Cũng giống như bất kỳ chương trình nào khác, một dịch vụ cần chạy trong một tệp thực thi. Dịch vụ này thường được gọi là dịch vụ độc lập.
Các dịch vụ cũng có thể được chứa trong tệp thực thi hoặc chạy trong tệp thực thi được quản lý bởi tác nhân bên ngoài, chẳng hạn như iis hoặc dịch vụ kích hoạt windows (đã). was cho phép wcf được tự động kích hoạt khi phân phối cho các máy tính đang chạy
Các tính năng của wcf Có rất nhiều tính năng của wcf sẽ được giới thiệu chi tiết trong suốt khóa học. Phần này chỉ nhằm mục đích thảo luận về một số tính năng của wcf. Danh sách tính năng ở đây không phải là một danh sách đầy đủ, nhưng hy vọng là một danh sách gồm những tính năng “đỉnh” nhất.
Giao dịch Giao dịch là một đơn vị công việc. Giao dịch đảm bảo chắc chắn rằng mọi thứ xảy ra trong một giao dịch thành công hay thất bại đều là kết quả chung. Ví dụ: nếu một giao dịch chứa ba mục công việc sẽ được thực thi và một trong các mục đó không thành công trong quá trình thực hiện giao dịch thì cả ba mục đó sẽ không thành công. Giao dịch chỉ thành công nếu cả ba hạng mục công việc đều thành công. Các giao dịch phổ biến trong hoạt động cơ sở dữ liệu.
wcf cho phép bao gồm các giao dịch và liên hệ như được mô tả ở trên. Các nhà phát triển có thể kết hợp thông tin liên lạc vào các giao dịch. Ở cấp độ doanh nghiệp, tính năng này cho phép bạn thực hiện các giao dịch trên các nền tảng khác nhau.
Lưu trữ (bao gồm) wcf cho phép dịch vụ được lưu trữ trong một số môi trường khác nhau, chẳng hạn như dịch vụ windows nt, biểu mẫu cửa sổ và ứng dụng bảng điều khiển, cũng như iis (máy chủ thông tin internet) và ( dịch vụ kích hoạt cửa sổ).
Việc có ứng dụng trên iis còn có những ưu điểm khác, dịch vụ có thể tận dụng nhiều tính năng có sẵn trên iis, ví dụ như iis có thể tự động kiểm soát việc bắt đầu hoặc kết thúc dịch vụ.
Bảo mật Bảo mật là một tính năng không thể thiếu trong wcf, đặc biệt là trong giao tiếp nói chung. Trong wcf, mọi thứ từ tin nhắn đến máy khách hoặc máy chủ đều phải được xác thực và wcf có các tính năng để đảm bảo rằng các tin nhắn không bị trộn lẫn trong quá trình truyền. WCF bao gồm đảm bảo tính toàn vẹn và bảo mật của tin nhắn.
wcf cũng cho phép bạn tích hợp ứng dụng của mình với cơ sở hạ tầng bảo mật hiện có, bao gồm các tiêu chuẩn bên ngoài môi trường cửa sổ bằng cách sử dụng thông báo xà phòng bảo mật.
công cụ phát triển wcf Để phát triển ứng dụng bằng wcf, chúng tôi cần phần mềm sau:
Ví dụ đầu tiên sử dụng wcf Xây dựng ứng dụng sử dụng wcf để ghi lời chào thế giới lên màn hình. Các bước làm việc như sau:
1.Mở visual studio 2008, chọn tạo dự án mới, chọn wcf service library trong wcf như hình bên dưới. Đặt tên cho dự án là helloservice.
Tạo dự án wcf
2. Sau khi dự án được tạo, hãy xóa hai tệp iservice1.cs và service1.cs. Ngoài ra, hãy dọn sạch tệp app.config thành những phần sau:
<?xml version="1.0" encoding="utf-8" ?> <biên dịch và gỡ lỗi=”true” /> </ system .web>
3. Click chuột phải vào project helloservice chọn “Add->” New Item”. Sau đó chọn thêm 1 dịch vụ wcf tên là helloworld như hình bên dưới. Hệ thống sẽ add cho bạn 2 file:
Thêm dịch vụ helloworld
A. Tệp ihelloworld.cs chứa một giao diện có tên ihelloworld là hợp đồng cho dịch vụ của bạn. Thay đổi hàm dowork thành sayhello như sau:
Tệp helloworld.cs, chứa một lớp có tên helloworld sẽ triển khai hợp đồng cho dịch vụ của bạn. Thay đổi hàm dowork thành sayhello như sau:
Khi cài đặt dịch vụ wcf, trước tiên bạn thường xác định giao diện, sau đó triển khai giao diện đó thông qua một lớp. Bạn có thể ghi đè thủ công khai báo của một phương thức hiện có trong giao diện. Tuy nhiên, việc khai báo các phương thức và thuộc tính của một giao diện sẽ nhanh hơn nhiều khi sử dụng visual studio. Đây là cách thực hiện:
Bước 1. Mở file chứa lớp cần cài đặt. Di chuyển con trỏ đến tên giao diện như hình bên dưới
Di chuyển con trỏ đến tên giao diện
bước 2. Nhấn vào ô vuông nhỏ dưới chữ ihelloworld (tương tự như smart tag trong microsoft word), xem hình bên dưới
Bật thẻ thông minh
Bước 3. Mở menu bật lên và chọn một trong 2 mục.
Chọn mục menu để cài đặt giao diện
Kết quả. Sau khi chọn một mục menu, chúng ta sẽ nhận được kết quả như hình bên dưới.
Kết quả
Như bạn có thể thấy, việc sử dụng tính năng này của visual studio cho phép chúng ta nhanh chóng tạo các khai báo cần thiết để triển khai giao diện.
4. Như vậy là chúng ta đã có một dịch vụ hoàn chỉnh. Nhấn f5 để chạy. Visual studio sẽ tự động gọi chương trình máy khách thử nghiệm wcf (nghĩa là chương trình máy khách để thử nghiệm dịch vụ wcf). Xem hình bên dưới
ứng dụng khách thử nghiệm wcf
5. Chuyển đến phương thức sayhello, nhập các tham số, hãy nói tên của bạn và nhấp vào nút gọi. Kiểm tra kết quả ở phía dưới.
Kết quả thực hiện
Sử dụng công cụ máy khách thử nghiệm wcf để gỡ lỗi dịch vụ wcf
Công cụ máy khách thử nghiệm wcf có thể được kích hoạt theo hai cách. – cách đầu tiên bạn đã thấy trong ví dụ trên. Công cụ này được tự động kích hoạt khi bạn gỡ lỗi thư viện dịch vụ wcf. – Cách thứ 2 là chạy trực tiếp và add thêm service để debug. Cách này thường được sử dụng để gỡ lỗi dịch vụ khi lưu trữ dịch vụ trong IIS. Bạn có thể tìm thấy công cụ máy khách thử nghiệm wcf trong thư mục sau:
c:\tệp chương trình\microsoft visual studio 9.0\common7\ide\wcftestclient.exe
Khi kích hoạt trực tiếp ứng dụng khách thử nghiệm wcf, bạn sẽ thấy màn hình khởi động sau:
màn hình giới thiệu ứng dụng khách thử nghiệm wct
Nhấp chuột phải vào dự án dịch vụ của tôi, bạn có thể thêm dịch vụ wcf để gỡ lỗi
Thêm dịch vụ vào ứng dụng khách thử nghiệm wcf
Màn hình sau đây là ví dụ về cách thêm dịch vụ được lưu trữ trên iis
Thêm dịch vụ được lưu trữ trên iis
Tải xuống tệp: Bài 1: Tổng quan về WCF
Ví dụ về mã nguồn: Tải xuống
n g u o n : m s d n v i e t n a m. mạng