我是否需要添加服务引用以使用RESTFul服务?

时间:2012-07-26 19:36:30

标签: asp.net json rest service

我对整个网络服务概念完全陌生,但我已经通过了http://msdn.microsoft.com/en-us/netframework/dd939784.aspx的一些初学者视频。

我正在开发一个asp.net web项目,该项目将使用以json格式返回数据的服务(显然是非常安静的)。

正如我之前提到的,我已经完成了上述网站的“创建第一个网络服务/客户端”视频,并感觉我对这个概念有了很好的把握。但是,现在我开始研究该项目,我的同事坚持认为没有必要为一个宁静的服务添加服务参考。这是真的吗?

另外,如果有人能给我这个任务真正的好建议/指导,你将得到5万个酷点(酷点不能在任何地方兑换)!


感谢所有人,经过更多搜索,我找到了http://www.codeproject.com/Articles/233698/Consuming-a-Json-WebService-from-a-Csharp-or-VB-Ap

所需的分辨率

4 个答案:

答案 0 :(得分:0)

抱歉,我没有使用REST的经验,但我确实使用过SOAP。如果您的客户端位于.Net中,您可以非常轻松地添加服务引用。但不,您不必添加服务引用。如果您知道请求的结构,可以使用简单的http。

对于50,000个酷点可能不够建议,但我希望它有所帮助。

答案 1 :(得分:0)

如果您使用jQuery,其他一些JavaScript库或者使用普通的JavaScript自己做所有事情,那么您根本不需要为RESTful服务添加服务引用。但是,如果您愿意,可以创建服务引用并使用generadted代理客户端。这实际上取决于你想要或需要做什么。

以下是您可能想要查看的sample项目的链接。

答案 2 :(得分:0)

你不必,但你可以。你为什么这样?这样您就可以获得自动对象序列化和反序列化。我有一个客户端,我总是使用服务引用生成一个测试客户端,以节省时间 - 但随后他们最终使用PHP客户端使用它,它肯定没有服务引用。

如果通话足够简单,您可以直接在浏览器中拨打电话。我总是实现这样的GetVersion调用来测试服务是否在基本级别上运行。

答案 3 :(得分:0)

您的同事可能指的是使用MVC控制器通过客户端的AJAX调用来传递JSON内容。在这种情况下,没有必要的外部.dll。

MVC Scaffolding使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); 
                 }
               });
      });