我正在考慮開始編寫一些REST Web服務來提供數據。我猜,當我的REST Web服務可用時,我的一些Web應用程序和控制檯應用程序將能夠使用REST Web服務作爲數據服務來獲取,添加,更新和刪除數據到數據庫。除此之外,我想添加身份驗證功能來識別任何請求。從何處開始在C#或ASP.Net中使用REST Web服務
我的問題是,我應該從哪裏開始?我看到了Microsoft ADO.Net Data Services。不知道這是不是一個好的開始?有沒有可用的例子?
我正在考慮開始編寫一些REST Web服務來提供數據。我猜,當我的REST Web服務可用時,我的一些Web應用程序和控制檯應用程序將能夠使用REST Web服務作爲數據服務來獲取,添加,更新和刪除數據到數據庫。除此之外,我想添加身份驗證功能來識別任何請求。從何處開始在C#或ASP.Net中使用REST Web服務
我的問題是,我應該從哪裏開始?我看到了Microsoft ADO.Net Data Services。不知道這是不是一個好的開始?有沒有可用的例子?
查看REST in WCF MSDN site和starter kit。好文章here也是。
我從來沒有偶然發現任何真正的指導如何選擇這些選項。在ASP.NET MVC中,您承擔了大部分管道負擔,但也具有最大程度的控制權。雖然WCF傾向於讓事情按照自己的方式完成,但直RESTful WCF是一個快樂的中間地帶。 ADO.NET數據服務非常神奇,其缺點是完全購買一種生成這些服務的方法並失去更多的靈活性。
有幾本好書可以閱讀關於.NET的RESTful服務的主題。 O'Reilly和微軟出版社最近都發布了關於這個主題的書籍。也許我可以提供給你的最重要的建議是消費和理解幾個開放的RESTful服務(例如Twitter,亞馬遜,Flickr),以瞭解創建服務所用的設計決策。用戶配置,身份驗證機制和受支持的內容類型(例如JSON,XML,RSS/ATOM)是您可以在行動中觀察以幫助您創建服務API的一些決策。
如果您是.net領域的REST新手,那麼請從OpenRasta開始。如果你努力工作,其他微軟解決方案可以做REST,但是他們會引導你走一條路線,你最可能通過HTTP結束POD(普通舊數據)。這不是REST的全部內容。如果這就是你想要的,那麼這也很酷,但它不是REST。
您可能還需要檢查出servicestack.net一個開源的,跨平臺,高性能的Web服務框架,可以讓你使用代碼優先,強類型的DTO的,可以自動地(無需任何配置開發Web服務)立即可以在各種不同的端點上即時獲得(即XML,JSON,JSV,SOAP 1.1/1.2)。
此外,也可以通過這裏可以通過您的REST客戶端指定首選的序列化格式你選擇的任何REST-FUL網址提供的相同的Web服務即
請參閱如何開發一個完整的REST-FUL阿賈克斯CRUD應用程序只有1頁的jQuery和1頁的C#的Nothing but REST! Web服務的例子。
一個好的開始是Hello World example看看如何輕鬆添加ServiceStack Web服務到任何現有的ASP.NET Web應用程序。
對於性能的良心,ServiceStack使一個很好的Ajax服務器,因爲它配備了fastest JSON Serializer for .NET(> 3倍比其他JSON序列化更快)捆綁在一起。
結帳this live Ajax app嚐鮮(在Linux/Nginx/MONO上進行實時演示)。
ServiceStack也可以很容易地創建強類型的摩擦Web服務,其中只有下面的代碼是所有你需要返回客戶波蘇斯的列表:
public class CustomersService : RestServiceBase<Customers>
{
public IDbConnectionFactory DbFactory { get; set; }
public override object OnGet(Customers request)
{
return new CustomersResponse { Customers = DbFactory.Exec(dbCmd =>
dbCmd.Select<Customer>())
};
}
隨着沒有其他的配置,您現在就可以撥打上面的Web服務的REST完全恢復所有的:
可以調用重複使用相同的DTO上述Web服務,你的Web服務被定義爲(即不需要code-gen)使用您的首選通用ServiceClient(即Json,Xml等)。這允許您使用強類型的API只用1行代碼來調用您的Web服務:
C#同步實例
IServiceClient client = new JsonServiceClient("http://host/service");
var customers = client.Send<CustomersResponse>(new Customers());
而且,由於你的Web服務也REST服務,它可以無縫使用JavaScript Ajax客戶端,如:
使用jQuery
$.getJSON("http://host/service", function(r) { alert(r.Customers.length); });
ASP.NET Web API現在是用於創建RESTful服務的Microsoft框架。
請問,出於興趣,爲什麼你需要休息,簡單地暴露你的數據庫?你試圖解決什麼樣的情況?如果您只是想通過xml暴露CRUD數據,那就是所謂的POX,並且與架構風格ReST無關。 – SerialSeb 2009-07-22 12:58:39
一個例子是,我們有一個數據庫,根據來自機器的連接調用通過許可證收費。在一臺機器中,打電話沒有限制,但我們必須爲其他電腦的呼叫付費。除此之外,網絡防火牆是另一個問題。所以我認爲REST Web服務可能是解決問題的最佳方式。我們可以調用REST服務,讓REST服務創建一個連接或本地調用db。 – 2009-07-24 04:06:05
那麼你不是在談論ReST,你正在談論簡單的基於http的xml服務。 POX!= ReST。 – SerialSeb 2010-12-23 11:36:15