2011-03-23 130 views
2

嗨我想爲我的網站創建一個API來發送和接收數據。 例如,我需要我的客戶上傳產品,單件或多件商品。產品Feed可以每天,每週或每月發送。如何在C#中創建API來推送或接收數據?

產品名稱: 產品顏色: 產品重量: 產品圖片:

此外,我需要的功能,將此數據發送到另一臺服務器。它應該是用戶友好的。

但是我不知道從哪裏開始,使用什麼技術使其變得簡單和充分。

我在Asp.Net中有背景,C#。很高興看到一個例子如何處理它。

回答

2

爲了達到這個目的,你最好去找網絡服務(WCF SERVICE)

1

通過WCF的REST將是最佳選擇。這裏有一篇很好的文章系列向您介紹WCF的REST:REST in WCF

1

這裏有兩個截然不同的功能,請記住,它們應該基本保持分開。它們中的每一個都由「誰與誰融合」來定義。

在第一部分中,您想公開一個客戶端可以連接併發送/接收數據的Web服務API(後者僅在請求時)。要如何定義這個網站取決於你想如何將其公開給客戶端,他們希望如何連接等常用的選項有:

你甚至可以定義自己的WSDL暴露人工服務,爲客戶消費或接受並返回JSON服務更加的JavaScript友好爲客戶等等。有很多選擇。但以上兩個是你最常見的選擇。

第二部分是你想要「推送」數據到另一個服務的地方。這是其他服務需要公開的內容,您需要將其集成到其中。所以設計應該從那一邊開始。如果您負責該設計,只需按照上述相同的方式進行操作即可。在那裏公開服務,然後使用公開服務的相同技術,在應用程序中使用它們。

這裏要記住的主要是讓兩者分開,因爲試圖公開一個同時消耗另一個Web服務的Web服務可能會導致混淆和一些不明顯的解決方法。這些都是單獨的擔憂,需要在邏輯層面上保持分離,即使最終用戶不知道它們是多麼分離。

0

這是一個基本的WCF服務,它返回一個JSON產品。要試用它,請創建一個.NET 4.0完整配置文件控制檯應用程序。運行該程序,並將其放入瀏覽器的地址欄中:http://localhost:8080/productservice/Product/23

程序。CS

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.ServiceModel.Web; 
using System.Text; 

namespace WCFServiceExample 
{ 

    public class Product 
    { 
     public string Id { get; set; } 
     public string Name { get; set; } 

    } 

    [ServiceContract(Namespace = "")] 
    public interface IProductService 
    { 
     [WebGet(UriTemplate = "Product/{id}", ResponseFormat = WebMessageFormat.Json)] 
     [OperationContract] 
     Product Product(string id); 

    } 
    public class ProductService : IProductService 
    { 

     public Product Product(string id) 
     { 
      return new Product { Id = id, Name = "A Sample Product" }; 
     } 
    } 

    class Program 
    { 
     private static ServiceHost servHost; 
     static void Main(string[] args) 
     { 
      StartService(); 
      Console.WriteLine("\n\nPress any key to exit..."); 
      Console.ReadKey(); 
     } 

     public static void StartService() 
     { 
      servHost = new ServiceHost(typeof(ProductService)); 
      servHost.Open(); 
     } 

     ~Program() 
     { 
      if (servHost != null) 
      { 
       servHost.Close(); 
      } 
     } 
    } 
} 

的App.config

<?xml version="1.0"?> 
<configuration> 

    <system.serviceModel> 
     <diagnostics> 
      <messageLogging logEntireMessage="true" logKnownPii="true" logMalformedMessages="true" 
       logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" /> 
      <endToEndTracing propagateActivity="true" activityTracing="true" 
       messageFlowTracing="true" /> 
     </diagnostics> 
     <services> 
      <service name="WCFServiceExample.ProductService"> 
       <endpoint 
        address="http://localhost:8080/productservice" 
        contract="WCFServiceExample.IProductService" 
        kind="webHttpEndpoint" /> 
      </service> 
     </services> 
    </system.serviceModel> 
    <startup> 
     <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 
相關問題