2013-06-04 13 views
1

大家好!ServiceStack:真的是「簡單和優雅的設計」?

我最近試過使用ServiceStack框架,碰到以下的問題。

可我還是我不能這樣做與庫中的以下內容:

public class userService : Service 
{ 
    public object Get(int? userId) 
    { 
     // instead of receiving user request object (empty or filled only with its id property) 
     return new userResponse(); 
    } 
} 

的另一件事是奇怪,我與整個DTO /請求/響應類邏輯,即,我定義了三個類,以相似的名稱(例如「用戶」)開始,此外,通過參數(!)(Get(用戶請求))找到處理DTO的服務。我對嗎?或者這僅僅是因爲我不完全理解ServiceStack的邏輯?如果是這樣,那很不方便。當服務端點(服務操作)在DTO(!)上定義但最初沒有服務類時,這看起來很奇怪。 是否有可能做這樣的事情以任何方式?:

[Route("/users")] 
public class userService : Service 
{ 
    public object Get() 
    { 
     return new ResponseBase(new List<Users>()); 
    } 
    public object Get(int id) 
    { 
     return new ResponseBase(new User()); 
    } 
} 

這看起來像大多是拉的ASP.NET Web API。但是,然後出現一個問題。爲什麼ServiceStack適用於?僅僅因爲它是早些時候創建的?

謝謝!

回答

1

您試圖將ServiceStack用作控制器,而不是將其設計爲支持的DTO-first message-based服務。如果你想使用RPC方法簽名來創建服務,我建議回到使用WCF,MVC或支持這種開發模式的WebApi。

如果你仍想使用ServiceStack,我建議花一些時間閱讀Getting Started documentation而不是猜測它是如何工作的。

主頁上的Simple REST Service顯示瞭如何創建一個簡單的服務,如您正在嘗試創建的服務。有關如何設計你的服務,進一步閱讀,請參閱:

+0

感謝您的回答。實際上,我確實閱讀了「入門」文檔,並且看到了非常類似於cs的文件樣本。實際上這主要是提出這個問題的原因。當系統根據調用方法參數確定要調用哪個服務類時,邏輯對我來說顯得有點怪異。我之所以這麼問,是因爲它對我來說看起來很奇怪,這意味着要麼我在該地區找不到什麼東西,要麼......「之前實施過某種程度上的事情,因爲它-was實現的功能於這樣的路」。所以,如果是這樣,我已經得到了答案。 :) – Agat

+0

支持DTO優先,基於消息的設計有意不同。它的目的是[改變你如何處理Web服務開發](https://github.com/ServiceStack/ServiceStack/wiki/What-is-a-message-based-web-service%3F),即不要考慮調用一個遠程服務器方法簽名,它希望您可以考慮將消息發送到遠程實例 - 將請求從實現中解耦。 – mythz