我对整个网络服务概念完全陌生,但我已经通过了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
所需的分辨率答案 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);
}
});
});