2011-01-06 33 views
7

Tôi có thể thực hiện cuộc gọi JQuery đến dịch vụ WCF bằng SOAP và WSHttpBinding không?Bạn có thể thực hiện cuộc gọi jQuery tới dịch vụ WCF bằng SOAP và WSHttpBinding không?

Nếu có, làm cách nào? (bất kỳ ví dụ trên web?) Nếu không, tại sao không?

Như bạn có thể thấy từ this post, tôi không thể làm cho nó hoạt động.

Tôi cần có khả năng sử dụng WSHttpBinding để tôi có thể hỗ trợ SAML và WS-Security. Đó là sự hiểu biết của tôi rằng basicHTTPBinding không hỗ trợ ws-Security.

Tất cả các ví dụ khác về SO hoặc sử dụng json (mà tôi có thể làm việc dễ dàng) hoặc basicHttpBinding.

Tôi bắt buộc phải sử dụng SOAP và ws-Security để tuân thủ các tiêu chuẩn OGC 07-118r8.

+1

Tôi nghĩ jQuery đã trở nên phổ biến đến mức mọi người đang cố gắng làm quá nhiều thứ phía máy chủ trên JS. Bạn cần xác định ranh giới và xác định các đường phân biệt rõ ràng cả hai thế giới. –

+0

Làm thế nào bạn sẽ gọi dịch vụ web sau đó sử dụng javascript? – capdragon

Trả lời

3

Với một cái gì đó như WS- * và sự phức tạp của WCF, sẽ không dễ dàng hơn khi tạo một cuộc gọi đơn giản jQuery async đến một trang khác trên trang web của bạn có thể sử dụng Thư viện WS-Security được tích hợp sẵn không? Từ đó bạn có thể kích hoạt một cuộc gọi đến điểm cuối WCF, xử lý kết quả và trả về hàm jQuery như là một đáp ứng dễ đọc.

Tôi đã tìm thấy một số bài viết đề cập đến những gì bạn đang cố gắng làm. Có vẻ như bạn về cơ bản phải viết thư viện WS-Security jQuery của riêng bạn trước khi điều này làm việc trực tiếp từ JavaScript (và tôi tưởng tượng điều đó có thể không thực tế đối với bạn):

"Một dịch vụ tiếp xúc với" wsHttpBinding "ràng buộc thực hiện WS- Bảo mật của các đặc tả dịch vụ web của WS- * Khi ràng buộc sử dụng bảo mật, yêu cầu sẽ bị từ chối Dịch vụ không thể được gọi mà không cần triển khai WS-Security ở cuối JQuery. thỏa hiệp với an ninh. "

http://www.codeproject.com/Articles/311908/Calling-WCF-service-exposed-with-different-binding

"... wsHttpBinding, mà là một SOAP ràng buộc rằng sẽ không làm việc với AJAX."

http://www.west-wind.com/presentations/jquery/jquerypart2.aspx

1

Không có cách nào bạn có thể triển khai WS * trong JavaScript!

Tùy chọn tốt nhất là tạo một ràng buộc khác trên máy chủ và hiển thị nó dưới dạng HTTP cơ bản hoặc thậm chí tốt hơn như WCF REST.

+0

Không phải là một tùy chọn ... khách hàng cần liên lạc với tôi qua WS- *, chứ không phải nghỉ ngơi. Chúng tôi được yêu cầu tuân theo một tiêu chuẩn được đề cập trong câu hỏi của tôi. – capdragon

+0

Vì vậy, bạn muốn thực hiện tất cả các mã hóa trong JavaScript? Vâng, nếu bạn có thể, bạn có thể sẽ giàu có vì bạn sẽ mở ra rất nhiều khả năng nhưng tôi không biết nếu một điều như vậy đã được thực hiện. – Aliostad

+0

Tôi thấy điểm của bạn ... vì vậy bạn nói Javascript khách hàng nên gọi một địa phương (không mã hóa, nhưng những người quan tâm vì nó là địa phương?) WCF REST Web Service mà lần lượt không xác thực SAML đến máy chủ từ xa thông qua SAML/WCF SOAP? – capdragon

0

Nên có thể theo lý thuyết. Tôi giả định cho thời điểm bạn đã tìm ra cách để lấy mã thông báo SAML của bạn và xử lý với WS-Security. WSHttpBinding mặc định là xà phòng 1.2, vì vậy hãy xem thông số ràng buộc http để tìm ra cách xây dựng yêu cầu bằng cách sử dụng jquery: http://www.w3.org/TR/soap12-part2/#soapinhttp hoặc đặt EnvelopeVersion.Soap11 trên WSHttpBinding. chúc may mắn!

+0

tôi KHÔNG tìm ra phần mã thông báo SAML. Tôi nghĩ tôi nên đi bộ trước khi chạy. Vì vậy, tôi muốn có được một dịch vụ cơ bản giao tiếp. Tôi mới vào WCF vì vậy tôi đã không đặt bất kỳ EnvelopeVersion.Soap11, nhưng tôi sẽ xem xét làm điều đó. Cảm ơn. – capdragon

+0

Tôi sẽ tìm ra phần SAML/WS-Security đầu tiên vì đó là rủi ro lớn hơn cho cách tiếp cận này. Tôi không biết chắc chắn rằng nó khả thi. Một cách tiếp cận dễ dàng hơn nhiều là để lộ ra một điểm cuối WCF cụ thể khác để tiêu thụ js và sử dụng nó thay vào đó, như một số người khác đã gợi ý. – alexdej

Các vấn đề liên quan