2010-03-14 16 views
5

xin lỗi vì những câu hỏi ngu ngốc nhưng chỉ có một số điều về WCF Tôi không thể có được đầu của tôi xung quanh. Sẽ biết ơn đối với một số lời khuyên về sau ....Kết nối WCF net.tcp, định dạng tin nhắn và câu hỏi bảo mật

  • Ở mức độ rất cơ bản là nó đúng rằng WCF sử dụng hoặc nhị phân (net.tcp), HTTP hoặc MSMQ để chuyển thông điệp của tôi trên dây?

  • Tuy nhiên, có đúng là trong mọi trường hợp, bất kể dữ liệu được truyền tải như thế nào trong định dạng SOAP với tiêu đề và nội dung? Vì vậy, một loại thông điệp XML được truyền đi ở cả HTTP/S hoặc ở định dạng nhị phân.

  • Net.Tcp là lựa chọn tốt cho ứng dụng máy khách của tôi - ứng dụng này tương tự như ứng dụng Messenger trong đó khách hàng là tất cả người dùng từ xa ở phía bên kia tường lửa đến máy chủ của tôi. Hầu hết những thứ tôi đang đọc đang nói để sử dụng WS * và HTTP.

  • Net.Tcp có được bảo đảm theo tiêu chuẩn và không có chứng chỉ không? - đó là - mọi người không thể nghe trên dây và giải mã dữ liệu đó đi tới và đi.

  • Có thể gửi tên người dùng và mật khẩu bằng net.tcp và không có chứng chỉ đã cài đặt không?

  • Nếu vậy tôi đoán là tôi có thể móc điều này cho nhà cung cấp tư cách thành viên của mình và xác thực quyền truy cập vào từng phương pháp triển khai hợp đồng dịch vụ của tôi.

  • Tôi giả sử rằng với bảo mật tên người dùng và mật khẩu, proxy được khởi tạo với tên người dùng và mật khẩu và thông tin này được gửi cùng với mọi yêu cầu.

  • Sau đó, nhà cung cấp tư cách thành viên của tôi sẽ được gọi cho mỗi cuộc gọi phương thức và thực hiện bất kỳ điều gì cần làm để nhận ủy quyền cho phương thức.

Xin lỗi vì đã giải quyết các câu hỏi nhưng sẽ thật tuyệt vời nếu biết suy nghĩ đúng về cách WCF hoạt động.

Cảm ơn.

Trả lời

15

Ở cấp độ rất cơ bản là WCF có sử dụng nhị phân (Net.Tcp), HTTP hoặc MSMQ để chuyển thư của tôi trên dây không?

Bạn đang nhầm lẫn giữa lớp vận chuyển với cơ chế tuần tự hóa. Các tùy chọn WCF transports là TCP, Tên được đặt tên, HTTP và MSMQ. Các tùy chọn WCF serialisation là nhị phân, Văn bản (bao gồm SOAP, POX và JSON) và MTOM.

Tuy nhiên, có đúng là trong mọi trường hợp, bất kể dữ liệu được truyền tải như thế nào trong định dạng SOAP với tiêu đề và nội dung? Vì vậy, một loại thông điệp XML được truyền đi ở cả HTTP/S hoặc ở định dạng nhị phân.

No. WCF sử dụng Message là đơn vị nguyên tử để liên lạc. Nó là SOAP như trong cấu trúc nhưng nó không phải là một định dạng tuần tự hóa như SOAP.

Là mạng.Tcp là một lựa chọn tốt cho ứng dụng máy khách của tôi - nó tương tự như một ứng dụng messenger trong đó khách hàng là tất cả người dùng từ xa ở phía bên kia tường lửa với máy chủ của tôi. Hầu hết những thứ tôi đang đọc đang nói để sử dụng WS * và HTTP.

Âm thanh như TCP không phải là lựa chọn tốt. Tường lửa có thể khiến TCP khó khăn cho bạn trừ khi bạn có thể vận hành máy chủ của mình trên cổng 80 hoặc 443. Từ trải nghiệm cá nhân của riêng tôi, tôi cũng khuyên bạn nên sử dụng WCF với ràng buộc TCP trong triển khai internet. Khi một kết nối TCP bị mất WCF làm cho bạn nhảy qua rất nhiều vòng để bắt và thiết lập lại nó. Các ràng buộc HTTP dễ quản lý hơn nhiều.

Net.Tcp có được bảo đảm theo tiêu chuẩn và không có chứng chỉ không? - đó là - mọi người không thể nghe trên dây và giải mã dữ liệu đó đi tới và đi.

NetTCP binding is secured by default with TLS.

Có thể gửi tên người dùng và mật khẩu bằng net.tcp và không có chứng chỉ đã cài đặt không?

Bạn có thể sử dụng chứng chỉ được cài đặt sẵn để xác thực với ràng buộc TCP. Bạn cũng có thể thêm tên người dùng và mật khẩu vào tiêu đề Thư nhưng đó là một điều riêng biệt.

Nếu vậy tôi đoán là tôi có thể móc điều này cho nhà cung cấp tư cách thành viên và xác thực quyền truy cập vào từng phương pháp triển khai hợp đồng dịch vụ của mình.

Bạn có thể trích xuất tiêu đề Thư bằng cách sử dụng OperationContext và trích xuất bất kỳ thông tin nào bạn thích và sử dụng thông tin đó với nhà cung cấp xác thực của bạn.

Tôi giả sử rằng với bảo mật tên người dùng và mật khẩu, proxy được khởi tạo với tên người dùng và mật khẩu và thông tin này được gửi cùng với mọi yêu cầu.

Sau đó, nhà cung cấp thành viên của tôi sẽ được gọi cho mỗi cuộc gọi phương thức và làm bất cứ điều gì cần phải làm để có được ủy quyền cho phương pháp này.

Có vẻ như bạn muốn xem How to: Use the ASP.NET Membership Provider.

3

Ngoài câu trả lời tuyệt vời Sipwiz':

Tuy nhiên là nó đúng là trong mọi trường hợp, bất kể cách dữ liệu được chuyển thông điệp riêng của mình ở trong định dạng SOAP với tiêu đề và một thân hình? Vì vậy, đó là một loại tin nhắn XML được truyền đi ở cả HTTP/S hoặc ở định dạng nhị phân.

Có - gần như. Hầu hết các bindings cho WCF sử dụng SOAP như định dạng của chúng trên dây - ngoại trừ webHttpBinding và những thứ liên quan như WCF Data Services (trước đây gọi là "Astoria" hoặc ADO.NET Data Services), hoặc WCF RIA Services.Họ sử dụng một phương pháp REST để chuyển dữ liệu và không có gì để làm với SOAP.

Để biết thêm thông tin về REST, hãy xem WCF REST Developer Center on MSDN