Dịch vụ web WCF sang Java interop dường như có vấn đề đáng ngạc nhiên. Bất kỳ nguồn lực tốt?


13

Với một dự án gần đây, nhóm phát triển dựa trên .Net của chúng tôi đã được giao nhiệm vụ tích hợp với toàn bộ các dịch vụ web dựa trên java trên toàn thế giới và chúng tôi thực sự đã có một số vấn đề đáng ngạc nhiên (tốt, chúng tôi chắc chắn không ngạc nhiên nữa) bởi vì XML được tạo bởi WCF không được các dịch vụ java chấp nhận.

Dường như không có nhiều thông tin tốt để tìm về chủ đề này, chúng tôi đã nhận được một số lời khuyên tốt từ blog WCF tuyệt vời của Yaron Nave, http://webservice20.blogspot.com , và trên diễn đàn MSDN WCF http: //social.msdn.microsoft.com/Forums/en-US/wcf/threads .

Có ai ở đây thực sự cảm thấy rằng họ đã nhận được điều này, và biết tài nguyên dứt khoát về chủ đề này? Sẽ quan tâm đến lời khuyên trên sách, blog hoặc bất kỳ trang web.

Chỉnh sửa:
Tôi bị rách khi thiết lập câu trả lời được chấp nhận trên chuỗi này, bởi vì mỗi trong hai câu trả lời hay nhất đều có một số giá trị:
1. Chúng tôi có thể sẽ kết thúc bằng việc thực hiện nhiều HTTP Webrequest thay vì chiến đấu với WCF.
2. Nhưng WCF Express Interop Bindings 1.0 cũng là một mẹo rất hợp lý.


Tôi không biết gì về WCF, nhưng nó có tạo ra các gói XML dựa trên SOAP hay chỉ là một đoạn XML có thể được sử dụng bởi một dịch vụ RESTful?
Martijn Verburg

1
Trả về XML, JSON hoặc RDF + XML.
Alan B

bạn có thể đưa ra ví dụ về những gì đã xảy ra giữa wcf client và java webservice không? bạn có nghĩa là webservice = xà phòng hoặc một cái gì đó khác nhau?
k3b

1
Nó nằm ngoài phạm vi của câu hỏi này để đi vào chi tiết cụ thể, bạn có thể kiểm tra hồ sơ của tôi về stack over stack chẳng hạn. Ở đây, tôi chỉ muốn biết liệu có ai khác gặp vấn đề tương tự với các máy khách WCF (hay .Net nói chung) tương tác với các dịch vụ web dựa trên các nền tảng khác không.
Bjørn

Câu trả lời:


15

À đúng rồi ... SOAP, chén thánh được ca tụng. Một ngôn ngữ chung hứa hẹn sẽ giao thoa giữa các hệ thống trên khắp thế giới.

Và sau đó bạn có được sự khác biệt giữa các triển khai SOAP trên Java và PHP và .NET. Hoặc thậm chí giữa dịch vụ WebSphere SOAP và máy khách Apache SOAP. Đừng bận tâm đến việc xử lý các tiêu chuẩn tương thích WS-I khác nhau. Bây giờ xin vui lòng cho tôi biết lý do tại sao bạn cần một tiêu chuẩn tương thích cho một giao thức được xây dựng để tương thích , nói về sự mỉa mai (và ý tôi là trớ trêu thực sự, không phải là thương hiệu trớ trêu của Alanis Morrissette ).

Lần duy nhất bạn sẽ không gặp phải vấn đề khi liên lạc với hai điểm cuối SOAP là khi cả hai đều trên cùng một nền tảng và trong hầu hết các trường hợp, nền tảng sẽ có giao thức hoạt động từ xa hiệu quả hơn.

Điều tôi đang nói ở đây là phần lớn, SOAP là vô dụng. Bây giờ xà phòng viết thường, tôi sử dụng nó mỗi ngày và tôi rất biết ơn rằng hầu hết mọi người đều làm như vậy.

Điều đó đang được nói, nếu bạn khăng khăng đập đầu vào tường gạch. Đây là một nơi tốt để bắt đầu Microsoft có một bộ các ràng buộc để cho phép tương tác với hầu hết các máy chủ Java chính. Phần thú vị của khóa học là tìm ra những dịch vụ nào hoạt động với dịch vụ nào bạn đang tích hợp.


5
SOAP là CORBA mới :)
gbjbaanb

Bằng cách nào đó tôi dường như đang thực hiện nó thành công khá thường xuyên trong các dự án tích hợp máy khách. YMMV rõ ràng.
David J. Liszewski

9

Theo tôi, quan sát của bạn là khá chính xác. Việc triển khai cấp cao của truyền thông dựa trên XML thường là không tương thích với các nền tảng khác nhau, ngay cả khi họ được cả hai gọi là "SOAP". Sự khác biệt tinh tế trong việc thực hiện, có thể cả trong phạm vi của tiêu chuẩn được thực hiện, tạo ra các vấn đề trong sử dụng thực tế.

Đề xuất của tôi cho các nhà cung cấp dịch vụ: Sử dụng một triển khai đơn giản thay vì thực hiện rất phức tạp và tốt hơn về mặt lý thuyết. Ví dụ: không bao gồm bất kỳ chương trình xác thực cực kỳ phức tạp nào nếu bạn không cần chúng.

Đề xuất của tôi cho người tiêu dùng dịch vụ (bạn, tôi đoán): Khi liên lạc với một triển khai cấp cao trên một nền tảng khác với nền tảng của bạn, hãy chuyển sang triển khai ở cấp độ thấp hơn. Nó đột nhiên trở nên khá đơn giản nếu bạn chỉ cần tìm ra XML thực sự cần gửi là gì và sau đó sử dụng các thực tiễn mã hóa tốt thông thường để thực hiện điều đó, như là một cách thay thế để nhấn mạnh vào việc sử dụng triển khai nền tảng của chính bạn.

Hy vọng nó không quá trừu tượng. Nói tóm lại , khi bạn đang ở trên nền tảng .NET kết nối với nền tảng Java, bạn có thể chỉ cần lắp ráp các tiêu đề và xml trong một httpWebRequest và gửi nó đi theo cách đó.


4

Bạn cũng sẽ gặp vấn đề tương tự khi sử dụng các dịch vụ web PHP.

Câu trả lời duy nhất của chúng tôi là thay đổi loại giao thức thành REST chứ không phải SOAP. Chúng tôi không bao giờ có công cụ SOAP để tương tác, rất nhiều cho Đơn giản!


Trong hầu hết các trường hợp, chúng tôi hoàn toàn không có tùy chọn để thay đổi các dịch vụ web hiện tại theo bất kỳ cách nào, chúng tôi sẽ phải kết nối với chúng bằng SOAP, bất kể điều gì. Vì vậy, tôi sợ không có câu trả lời Giải quyết cho bạn. ;)
Bjørn

1
> "không có tùy chọn để thay đổi các dịch vụ web hiện có theo bất kỳ cách nào" Trong trường hợp đó; chuẩn bị tinh thần, bạn đang ở trong một chuyến đi khó khăn. Tôi vừa mới hồi phục sau 2 tuần đập đầu, cố gắng gọi dịch vụ web wcf / xà phòng từ java / android. Sự cứu rỗi của tôi là tôi - không giống như bạn - đã truy cập vào dịch vụ và làm cho nó lộ ra điểm cuối REST / JSON. Con đường để đi. Nếu bạn có thể.
BaBu

@ Bjørn ồ, rất tiếc phải nói với bạn điều này sau đó nhưng để sử dụng thuật ngữ kỹ thuật, bạn đã bị lừa. Tôi đoán câu trả lời duy nhất là ngừng sử dụng WCF và sử dụng ứng dụng khách SOAP khác.
gbjbaanb

Nhóm chúng tôi đang cười và khóc từ câu trả lời của bạn. :) Cảm ơn quý ông.
Bjørn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.