0

我对整个 Web 服务概念完全陌生,但我在http://msdn.microsoft.com/en-us/netframework/dd939784.aspx浏览了一些初学者视频。

我正在开发一个 asp.net Web 项目,该项目将使用一个服务(显然是 restful),它以 json 格式返回数据。

正如我之前提到的,我已经浏览了来自上述网站的“创建第一个 Web 服务/客户端”视频,并且觉得我对这个概念有了很好的把握。然而,现在我开始着手这个项目,我的同事坚持认为没有必要为一个安静的服务添加服务引用。这是真的?

此外,如果有人能为这项任务提供非常好的建议/指导,您将获得 50,000 个酷点(酷点不能在任何地方兑换)!


谢谢大家,经过更多搜索后,我在http://www.codeproject.com/Articles/233698/Consuming-a-Json-WebService-from-a-Csharp-or-VB-Ap找到了我需要的分辨率

4

4 回答 4

0

Your colleague might be referring to the use of MVC Controllers to deliver JSON content via AJAX calls from your client end. In this case there is no external .dll's that are necessary.

MVC Scaffolding makes a RESTful type interface very easy to setup. Here is one possible way how you would do it.

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); 
                 }
               });
      });
于 2012-07-26T20:21:12.673 回答
0

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

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

于 2012-07-26T20:10:44.613 回答
0

抱歉,我没有使用 RESTful 的经验,但我确实使用过 SOAP。如果您的客户在 .Net 中,您可以很容易地添加服务引用。但是不,您不必添加服务引用。如果您知道请求的结构,则可以使用简单的 http。

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

于 2012-07-26T19:39:17.590 回答
0

如果您使用 jQuery 之类的东西、其他一些 JavaScript 库或用普通的旧 JavaScript 自己做所有事情,您实际上不需要添加对 RESTful 服务的服务引用。但是如果您愿意,您可以创建一个服务引用并使用生成的代理客户端。这实际上取决于您想要或需要做什么。

这是您可能想要查看的示例项目的链接。

于 2012-07-26T19:48:46.823 回答