創建你的第一個WebService
這是一個關于構建并允許并同時看一看不同組件是如何工作的快速預覽。
第一步:下載并安裝ServiceStackVS插件
第一我們希望安裝ServiceStackVS的visual studio的擴展。最簡單的方式是通過內置在Visual Studio-【工具】-【擴展和更新】...進行搜索和安裝
第二步:選擇模板
當ServiceStackVs擴展已經安裝,當你創建新的項目時你就有新的項目模板可以使用,例如,讓我們選擇ServiceStack ASP.NET Empty來開始。
但你通過模板來創建你的應用,你就會得到4個項目在你的解決方案中,如果你使用的是默認名字,你就會以下面的結構構建這個解決方案。
第三步:
通過F5運行你的項目
運行結果(postman):
它是如何運行的?
現在新項目已經運行,讓我們來看看我們已經有了哪些內容。模板提供了一個單獨的Web服務路由,該路由位于WebApplication1.ServiceModel項目下的Hello.cs文件里的請求DTO(數據傳輸對象)的對象。
[Route("/hello/{Name}")]
public class Hello : IReturn<HelloResponse>
{
public string Name { get; set; }
}
public class HelloResponse
{
public string Result { get; set; }
}
這個Route
特性說明路徑/hello/{Name}
中{Name}
將它的值綁定到了公開的Name的字符串屬性上
讓我們通過這個路由來看下它的返回,通過如下人URL到你的地址欄
http://{BaseUrl}/hello/world
你可能看到一個HTML的返回格式的內容。將返回格式化為Json,只需要加?format=json
到URL的末尾,
如何你到解決方案中去找WebApplication1.ServiceInterface并且打開Myservice.cs
文件,你就可以看到響應到瀏覽器的代碼。給我們Result
的返回
public class MyServices : Service
{
public object Any(Hello request)
{
return new HelloResponse { Result = $"Hello, {request.Name}!" };
}
}
如何你看上面代碼,必須注意一些事情。方法名Any
意味著方法運行在任何可能的Http Verbs上,服務方法就是你控制從你的服務中返回內容的地方。
第四步:探索這個ServiceStack的解決方案
下面推薦的結構是構建進了所有的ServiceStack VS.NET的模板中,模板創建任何一個ServiceStack項目至少包含四個項目來保證解決方案從一開始就是最佳邏輯項目層次,并為后續項目的可維護性,高內聚,可復用打下基礎。
Host Project
這個主項目包含你的AppHost,它引用和注冊在IOC中的所有依賴項,并且包含了所有配置項和全局行為的中心位置。它也引用了所有的Web資源,例如razor Views,JS,CSS,Images,Fonts等。這需要同應用一起部署。AppHost是一個頂層項目,他引用了應用程序鎖使用的所有依賴項,它的作用類似于一個協調器和管道,它決定了那些功能可用,那些具體實現被使用。被設計為引用所有項目同時不被其他項目引用,作為一個全局目標,應該避免任何應用和業務邏輯。
ServiceInterface Project
服務接口項目時包含了所有業務邏輯和服務的實現項目。它引用了除Host Project的所有項目,中小型項目可以通過邏輯劃分特性文件夾來包含所有的實現。大型解決方案可以劃分未更加內聚的模塊項目,同時我們建議封裝他們可能使用的所有依賴。
ServiceModel Project
ServiceModel 項目包含所有的你的程序的數據傳輸對象,這些對象定義了你的服務契約。keeping them isolated from any Server implementation is how your Service is able to encapsulate its capabilities and make them available behind a remote facade.對于每一個解決方案最好只有一個包含你所有DTOs的ServiceModel項目。作為實現項,依賴項,無邏輯的服務契約,從實現和相互依賴來確保你的服務不會包含特定的客戶端實現,并且確保這是唯一需要客戶端通過直接引用ServiceModel.dll或者通過添加ServiceStack引用遠程ServiceStack服務實例下載Dtos的來調用你的服務的項目。