2011-11-02 59 views
3

我開發了一個WCF應用程序,它作爲數據庫和我的Web應用程序之間的中間層工作。現在我的客戶想要將此WCF轉移到使用ServiceStack的REST將服務從WCF轉換爲ServiceStack框架

我在GitHub上查看過它並嘗試構建演示。我使用NuGet創建了一個啓動模板,因此它包含一個Hello & Todo示例。

  1. 如何將我的邏輯作爲基於對象(DTO)?由於大多數函數都具有不同的參數,並將結果作爲數據集返回。

  2. 如何在C#中創建客戶端?我需要添加哪些參考?

  3. 當我在使用NuGet添加啓動模板後,在IIS上託管示例應用程序時,我無法找到任何資源。當我需要在IIS上託管它時,是否需要執行特定設置?

回答

6

如果您還沒有這樣做,請通過Creating REST Services with ServiceStack演示文稿。

1)如果你看過ServiceStack的Hello World例子就說明你需要做的唯一的步驟來創建Web服務是隻提供:

//1. A Request DTO 
public class Hello : IReturn<HelloResponse> { 
    public string Name { get; set; } 
} 

//2. A Response DTO 
public class HelloResponse { 
    public string Result { get; set; } 
} 

//3. The web service implementation that takes a Request DTO and returns a Response DTO 
public class HelloService : Service 
{ 
    public object Any(Hello request) 
    { 
     return new HelloResponse { Result = "Hello, " + request.Name }; 
    } 
} 

上面的例子顯示了所有需要的代碼創建您好 Web服務。 您應該能夠從WCF方法中重用大量現有類型和邏輯,並將其複製到Any()方法中。

2)ServiceStack的好處之一是你不需要添加一個ServiceReference,即你可以重複使用相同的通用服務客戶端和你的DTOs爲所有的Web服務。 e.g:

//Using JSON: 
IServiceClient client = new JsonServiceClient("http://localhost/path/to/servicestack"); 

//Using XML: 
IServiceClient client = new XmlServiceClient("http://localhost/path/to/servicestack"); 

var response = client.Send(new Hello { Name = "Arun" }); 
Console.WriteLine("Received: " + response.Result); 

/元頁也有你的web服務WSDL在那裏你可以創建你應該想生成客戶端提供服務的鏈接。然而,這不是推薦的方法,因爲它需要更多的摩擦,然後只使用現有的DTO。

3)ServiceStack Web服務已經是一個ASP.NET應用程序,即ServiceStack只是一組IHttpHandler,您可以將它配置爲在您的Web應用程序Web中添加a Web.config mapping以在正常的ASP.NET或MVC Web應用程序內部運行。配置。

基本上,您可以將ServiceStack Web服務視爲普通的ASP.NET Web應用程序,實際上Hello World Tutorial向您展示瞭如何通過創建空的ASP.NET應用程序來執行此操作。

您可能也有興趣瞭解The Starter Templates示例項目,它向您展示了配置ServiceStack以運行在各種不同的託管選項(如ASP.NET/Windows服務/控制檯應用程序等)所需的設置的最低要求。

+0

這是一個很好的答案和偉大的框架,你們已經建立,一個查詢是如果我需要從另一個Web應用程序消費它我需要添加RestIntro.ServiceModel引用,對吧?以及如何將該響應轉換爲json格式? –

+0

我需要做的是如何在不依賴於ServiceModel(這裏是客戶類)的情況下使用此服務? –

+0

@ArunRana您用於開發Web服務的相同Dtos可用於所有ServiceStack的序列化程序/格式,這是JsonServiceClient爲您所做的。 – mythz