2012-07-26 103 views
0

我對整個網絡服務概念完全陌生,但我已經通過了http://msdn.microsoft.com/en-us/netframework/dd939784.aspx的一些初學者視頻。我需要添加服務引用來使用RESTFul服務嗎?

我正在研究一個將使用以json格式返回數據的服務(顯然很安靜)的asp.net web項目。

正如我之前提到的,我已經通過上述網站的「創建第一個Web服務/客戶端」視頻,並感覺我對這個概念有了很好的把握。但是,現在我正在開展項目工作,我的同事堅持認爲不需要爲寧靜的服務添加服務參考。這是真的?另外,如果任何人都可以給我這個任務很好的建議/指導,你會得到5萬個酷點(酷點不能在任何地方兌換)!


感謝所有,經過搜索,我發現我需要在http://www.codeproject.com/Articles/233698/Consuming-a-Json-WebService-from-a-Csharp-or-VB-Ap

+0

您使用的是MVC嗎? – 2012-07-26 19:42:46

回答

0

對不起,我沒有與REST風格的體驗決議,但我確實使用SOAP。如果客戶端在.Net中,則可以很容易地添加服務引用。但是,不需要添加服務參考。如果你知道請求的結構,你可以使用簡單的http。

可能沒有足夠的建議爲50,000個冷點,但我希望它有幫助。

0

如果您使用類似jQuery,其他JavaScript庫或自己在普通的舊JavaScript中完成所有工作,您並不需要爲REST式服務添加服務引用。但是如果你喜歡,你可以創建一個服務引用並使用帶有代理的代理客戶端。這真的取決於你想要什麼或需要做什麼。

這裏是一個鏈接到sample項目,你可能想看看。

0

你不必,但你可以。你爲什麼?這樣你就可以獲得自動對象序列化和反序列化。我有一個客戶端,我總是生成一個帶有服務參考的測試客戶端,以節省時間 - 但最終他們將這個客戶端用於一個沒有服務引用的PHP客戶端。

如果通話足夠簡單,您可以直接在瀏覽器中調用它。我總是執行一次GetVersion調用來測試服務是否在基本級別上工作。

0

您的同事可能指的是使用MVC控制器通過來自客戶端的AJAX調用來提供JSON內容。在這種情況下,沒有必要的外部.dll文件。

MVC腳手架使得RESTful類型的界面非常易於設置。這是一種可能的方式,你會怎麼做。

public class HomeController : AsynController 
{ 
    [HttpPost] //Create 
    public JsonResult CreateStuff(Stuff s) 
    { 
     var newStuff = new Stuff { Property = s.Property }; 
     db.Stuff.Add(newStuff); 
     db.SaveChanges(); 
     return Json(new { data = newStuff }, JsonBehavior.AllowGetRequest); 
    } 

    [HttpGet] //Read 
    public JsonResult GetStuff(int id) 
    { 
     var stuff = db.Where(x => x.Id == id).FirstOrDefault();   
     return Json(new { data = stuff }); //Check for null on the js side. 
    } 

    [HttpPut] //Update 
    public JsonResult UpdateStuff(Stuff s) 
    { 
     bool updated = false; 
     var stuff = db.Where(x => s.Id == id).FirstOrDefault(); 
     if (stuff != null) 
      updated = true; 
      stuff.Property = s.Property; 

     return Json(new { data = stuff, updated = updated}); 
    } 


    [HttpDelete] //delete 
    public JsonResult DeleteStuff(int id) 
    { 
     bool deleted = false; 
     var deleteThis = db.Where(x => x.Id == id).FirstOrDefault(); 

      if (deleteThis != null)    
       db.Stuff.Remove(deleteThis); 
       db.SaveChanges(); 
       deleted = true; 

     return Json(new { deleted = deleted }); 
    } 

} 
//js side 
//more sophisticated logic goes here 
$(document).ready(function() { 
     $.ajax({ url : '/CreateStuff/', 
       success : function(e) { 
           console.log("created " + e); 
       } 
       }); 
     });