2015-02-05 15 views
6

Lịch sửDịch vụ SOF WCF có thể trả về JSON dưới dạng đầu ra không?


tôi về cơ bản một kết thúc (android) phát triển phía trước và không bao giờ có để tạo ra một dịch vụ web Thay Tôi đã ở cuối tiêu thụ. Bây giờ hoạt động kinh doanh WCF này đang áp đảo và tôi tin rằng quá phức tạp với một đường cong học tập dốc.

Tổ công tác


tôi cần phải thực hiện một dịch vụ SOAP đơn giản, hello world trong thời gian tới nên sẽ tốn một XML đầu vào, NHƯNG RETURN JSON.

Tôi không chắc tại sao chúng ta không có các truy vấn tương tự trên internet, loại làm cho tôi tự hỏi nếu nó là không thể ở tất cả ?.

Đây là những gì tôi có cho đến nay.

Tiến trình hiện nay


Hợp đồng của tôi

[ServiceContract] 
    public interface IHelloWorldService 
    { 
     [OperationContract] 
     String GetMessage(String name); 
    } 

Hợp đồng của tôi Impl

public string GetMessage(string name) 
     { 
      return "Hello World from " + name + "!"; 
     } 

My Dịch vụ Config (trong Web.Config. Tôi đã tổ chức dịch vụ này trong một trang web asp.net)

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MyServiceTypeBehaviors"> 
      <serviceMetadata httpGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="WebBehavior"> 
      <webHttp defaultOutgoingResponseFormat="Json" /> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 

    <services> 
     <service name="MyWcfServices.HelloWorldService"   behaviorConfiguration="MyServiceTypeBehaviors"> 
     <endpoint address="" binding="wsHttpBinding"  behaviorConfiguration="WebBehavior"  contract="MyWcfServices.IHelloWorldService"/> 
     <endpoint contract="IMetadataExchange"   binding="mexHttpBinding" address="mex"/> 
     </service> 
    </services> 
    </system.serviceModel> 

Câu hỏi


  1. là SOAP giáp liền với XML? Như vậy bạn không thể gửi JSON làm đầu ra?
  2. Có đúng là gửi JSON làm đầu ra mà bạn cần phải đi đến mô hình REST không?
  3. Tôi có nhận được XML mọi lúc không bởi vì tôi đang sử dụng các câu đố WCFStorm với tiêu đề HTTP và gửi một loại mime XML theo mặc định?
  4. Làm cách nào để kiểm tra dịch vụ WCF trả về JSON? Tôi có bất kỳ khách hàng thử nghiệm nào không? Tôi đã tải xuống một Tiện ích mở rộng của Chrome có tên là Wizdler nhưng vì một số lý do, nó chỉ hoạt động với "basicHttpBinding" ràng buộc. Tôi đã được nói rằng tôi không thể sử dụng ràng buộc này nếu tôi muốn thực hiện một dịch vụ SOAP.

Tôi thực sự sẽ mắc nợ nếu các bạn có thể chỉ cho tôi đúng hướng. Ngoài ra tôi chỉ mới 2 ngày trong dịch vụ webservice này, vì vậy tôi xin lỗi vì sự ngây thơ của tôi.

+1

Bạn không phải chọn một. Một dịch vụ WCF có thể được cấu hình để trả về * SOAP, XML hoặc JSON * tùy theo yêu cầu của khách hàng. – EZI

+1

@EZI yêu cầu của OP là trả lại json qua SOAP. –

+1

@TomRedfern Tôi không nghĩ vậy. Điều đó sẽ yêu cầu hai deserializations, một cho xà phòng, và một cho json (như trở về một xml bên trong xml khác). Tại sao bất cứ ai muốn làm điều đó? Một dịch vụ có thể trả lại xà phòng thuần túy hoặc xml hay json tốt hơn (có thể được xác định bởi tiêu đề * Accept * của giao thức http)? – EZI

Trả lời

5

SOAP dựa hoàn toàn vào XML để cung cấp các dịch vụ nhắn tin, vì vậy nếu bạn thực sự muốn/cần trả về JSON thì bạn sẽ cần bọc nó trong CDATA trong cơ thể XML SOAP. Tuy nhiên, không giống như SOAP, REST không phải sử dụng XML để cung cấp phản hồi, do đó bạn có thể xuất dữ liệu ở các định dạng khác như JSON.

http://blog.smartbear.com/apis/understanding-soap-and-rest-basics/

Bạn có thể muốn xem xét sử dụng WCF để cung cấp một dịch vụ -ful REST chứ không phải là một dịch vụ dựa trên SOAP.

https://msdn.microsoft.com/en-us/magazine/dd315413.aspx

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