ServiceStack的官網提供了很多的項目案例下載,不過有的示例不能拿來即用,並且案例中還有用的是用VS2010開發的,SS的版本也比較舊,要調整一下才能夠運行。git
官方示例項目下載地址 https://github.com/ServiceStack/ServiceStack.Examples/tree/v3github
其中包含以下示例項目(第一個目錄是升級到VS2013的升級記錄):框架
在《StarterTemplates》目錄下有 一些項目起始模板測試
SS框架能夠在.net3.5以上的VS開發環境下使用,也就是最低要求VS2008,示例項目中有少數是VS2010的,大部分是VS2012的。this
這裏說明一下《ServiceStack.Examples》這個項目,spa
方案中共包含7個項目,在Host目錄下的三個項目.net
ServiceStack.Examples.Clients Web版的客戶端項目code
ServiceStack.Examples.Host.Console 控制檯版的服務端項目blog
ServiceStack.Examples.Host.Web Web版的服務端項目繼承
在Test目錄下的兩個項目
ServiceStack.Examples.Tests 基本功能測試
ServiceStack.Examples.Tests.Integration 整合方式測試(客戶端和服務端整合使用)
ServiceStack.Examples.ServiceInterface 提供服務的項目(Service寫在這個項目)
ServiceStack.Examples.ServiceModel 模型定義的項目(包含有路由)
這個項目在最後發佈時僅須要發佈Hosts目錄下的文件便可,其餘的項目基本是類庫和測試項目。這個項目當中服務的調用使用了舊式的寫法,好比
1 2 3 4 5 6 7 |
|
其中的 GreetService : IService<Greet> 的建議新式寫法爲 GreetService : Service,Execute(Greet request) 的新式寫法爲 Get(Greet request) 。此外由於項目中使用了ServiceStack.Examples 和框架的 ServiceStack. 有衝突, 因此 GreetService : Service的繼承不能直接寫,須要寫成 GreetService : : ServiceStack.ServiceInterface.Service。
注意其中的ServiceStack.Examples.ServiceModel 中的Types中實體類模型的定義:
1 2 3 4 5 6 7 8 9 |
|
CustomerOrders 表包含有Customer 和 Orders 兩個表中外鍵關聯方式的數據,但在3.x的示例中,並無實現外鍵關聯方式獲取關聯表的數據,而是經過在實體類中設置關聯的內部類,在服務中獲取數據時候組合多表數據實現,這是一種和NoSQL使用的方法和思路相一致的實現。
(在本示例中沒有演示獲取多表數據時候的組合合併過程,而是直接用一組樣本數據示例,樣本數據中已經設置好子類的數據,針對CustomerOrders 取得的數據是Customer 加上一組Order的List,組合好後直接返回給服務 ,詳見《ServiceStack.Examples.ServiceInterface》 項目下的GetNorthwindCustomerOrdersService)
值得特別強調和說明是《ServiceStack.Examples.ServiceInterface》 項目下的GetUsersService.cs文件中根據一組ID或者用戶名獲取用戶列表的服務實現:
根據逗號分隔的id獲取一組User數據的頁面:
獲取用戶列表的程序代碼: (修復後)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|