Bạn cần phải cơ bản nhìn vào ba lựa chọn:
1) Hosting trong IIS6 (Windows Server 2003/2003 R2): trong trường hợp này, bạn chỉ có thể lưu trữ các giao thức HTTP - không có gì khác. Đây là một hạn chế khá tự nó, bạn không thể sử dụng ví dụ netTcp cho các tình huống mạng nội bộ.
2) Lưu trữ trong IIS7/WAS (Vista, Server 2008): tùy chọn này cung cấp cho bạn nhiều tùy chọn hơn về giao thức được hỗ trợ và môi trường lưu trữ trông giống như người chiến thắng lúc đầu.
3) Tự lưu trữ: trong trường hợp này, bạn hoàn toàn có thể làm bất cứ điều gì bạn cần làm để lưu trữ và chạy dịch vụ của mình.
Nếu bạn ném tùy chọn # 1 cho bây giờ (nếu bạn chỉ có IIS6 có sẵn, tôi luôn sử dụng tự lưu trữ), nó xuống IIS7 so với tự lưu trữ.
IIS7 cung cấp cho bạn "kích hoạt theo yêu cầu", ví dụ: mã dịch vụ của bạn không có trong bộ nhớ mọi lúc, nhưng sẽ được tải và khởi tạo ngay khi có yêu cầu. Đó có thể là dấu cộng.
Mặt khác, lưu trữ trong IIS7/WAS cướp bạn có khả năng xác định điểm cuối của riêng bạn - điểm cuối của bạn và do đó địa chỉ dịch vụ là thư mục ảo nơi tệp "MyService.svc" của bạn tồn tại - khoảng thời gian. Bạn không thể thay đổi điều đó bằng bất kỳ cách nào, hình dạng hay hình dạng.
Tự lưu trữ có thể trông giống như rất nhiều công việc - nhưng nó cung cấp cho bạn sự linh hoạt nhất: bạn có thể chọn giao thức theo ý muốn, bạn có thể thiết lập lược đồ địa chỉ theo cách bạn thích, và bạn có toàn quyền kiểm soát những gì được thực hiện khi nào. Bạn có thể giới thiệu ServiceHost tùy chỉnh của riêng mình nếu bạn cần thực hiện thêm một số công việc cho dịch vụ lưu trữ, v.v. Trừ khi bạn chỉ chơi xung quanh với WCF một chút, tôi sẽ luôn luôn đề nghị và bỏ phiếu cho tự lưu trữ - nếu bạn cần phải có dịch vụ WCF chạy mọi lúc, bên trong một dịch vụ Windows NT (đó là giải pháp tốt nhất cho môi trường sản xuất), và nếu bạn đang phát triển/gỡ lỗi, bạn hoàn toàn có thể lưu trữ các dịch vụ WCF của mình trong một ứng dụng giao diện điều khiển mà bạn có thể khởi chạy và dừng lại khi rảnh rỗi.
Vì vậy, để làm cho một câu chuyện dài ngắn: cuối cùng, nếu bạn thực sự muốn kiểm soát những gì đang xảy ra, tôi sẽ luôn luôn khuyên bạn nên tự lưu trữ.
Điều này có thể thay đổi khi máy chủ "Dublin" mới Addon của Microsoft xuất hiện - đôi khi sau khi .NET 4 được khởi chạy, có thể đầu năm 2010 - nhưng vẫn còn quá sớm để nói.
Hy vọng điều này sẽ hữu ích.
Marc
Bạn thực sự biết WCF của mình. – Contango
@Gravitas: cảm ơn! Tôi đã học được từ WCF Master :-) (Juval Lowy) –
Xin chào, gần 5 năm sau, bạn có thể cập nhật câu trả lời của bạn với phiên bản mới nhất của WCF và IIS không? Ngoài ra, bạn có nghĩ rằng các tính năng Windows Services Recycling có hiệu quả như các tính năng của IIS không? Cảm ơn! – Nock