Chúng tôi có dịch vụ SOF WCF đã được thiết lập. Giao diện của nó được định nghĩa trong WSDL, từ đó các lớp C# được tạo ra cho máy chủ của chúng tôi (các khách hàng tạo ra các ràng buộc phía máy khách trong các ngôn ngữ khác nhau, từ cùng một WSDL). WSDL có một phiên bản hiện tại, chúng ta có thể thay đổi một chút, và các phiên bản cũ, mà chúng ta không thể thay đổi hoặc thả mà không có một khoảng thời gian không dùng nữa, tham vấn… Các yêu cầu SOAP có xu hướng phức tạp, có nhiều không gian tên XML trong cùng một yêu cầu .Dịch vụ SOAP hiện có và Ứng dụng Web góc mới
Dịch vụ SOF WCF có rất nhiều "thông minh" trong đó và cung cấp chính xác các loại phương tiện tìm nạp và báo cáo mà chúng tôi cần cho một ứng dụng web mới mà chúng ta cần thực hiện. Chúng tôi hy vọng sẽ sử dụng AngularJS cho phía khách hàng của điều đó. Nhưng những yêu cầu SOAP phức tạp này không dễ thực hiện trong thế giới JavaScript. Nếu chúng ta chỉ có một dịch vụ REST, chúng ta có thể sử dụng dịch vụ Tài nguyên góc cạnh. Nếu không phải vậy, thì một máy chủ đã nói JSON, mặc dù trong một phong cách RPC như SOAP, sẽ chạy khá gần.
Tôi đã có nhiều ý tưởng khác nhau về sự không phù hợp trở kháng giữa máy chủ và ứng dụng khách của chúng tôi có thể giảm nhẹ như thế nào. Nhưng không có gì âm thanh nhanh chóng hoặc dễ dàng.
Tôi đã nghĩ: -
- Viết một dịch vụ REST mới. Chính xác điều mà phía khách hàng muốn, nhưng là một phần phát triển mới nghiêm trọng.
- WebHttpBinding sẽ cung cấp một cái gì đó. Nhưng có vẻ như tôi yêu cầu C# đánh dấu thuộc tính tùy chỉnh (cách đạt được khi C# của chúng tôi được tạo từ WSDL) và có thể sẽ không hỗ trợ các loại phức tạp của chúng tôi
- Thu thập hoặc viết tải JS phía máy khách để trừu tượng gọi SOAP dịch vụ. Tuy nhiên, trừ khi điều này có thể được tự động tạo ra từ WSDL, đó là một lượng lớn mã phía máy khách để viết.
- Viết IDispatchMessageFormatter cho máy chủ, chấp nhận một số định dạng JSON của thư mà tôi phát minh ra. Âm thanh khó khăn, đặc biệt là những ví dụ tốt về những người thực hiện và tích hợp IDispatchMessageFormatter dường như khó đi qua.
- Viết một MessageEncoder để trao đổi giữa JSON và XML. Nhưng điều này không thực sự là một hoạt động mã hóa, như đã trở nên rất rõ ràng khi tôi cố gắng viết nó!
Tôi đang tìm kiếm đề xuất.
Máy chủ WCF của bạn sử dụng bao nhiêu hợp đồng (phương pháp)? Bạn có thể viết một máy chủ WebAPI nhúng và gọi lớp thực hiện dịch vụ WCF (1 phương thức web: 1 hợp đồng hoạt động) và trả về các đối tượng dữ liệu mù quáng được đóng gói lại như json (nghĩa là khả thi về số lượng và độ phức tạp của các hợp đồng hoạt động)? Điều này có thể xảy ra, mặc dù nếu bạn dựa vào tính đa hình trong các hoạt động dịch vụ của bạn thì những thứ đó không thể được nhân bản trong JSON (AFAIK). –
Có bảy dịch vụ và tổng cộng khoảng 50 hoạt động. – PeteAC
Làm thế nào để viết một dịch vụ nghỉ ngơi sẽ ủy thác các cuộc gọi đến dịch vụ xà phòng? –