我已经费尽我的大脑进行了两天,现在对如何处理的新要求。
我有两个网站。 第一个让用户填写一份申请表。 第二个网站是一个内部网站,用于管理用户的应用程序。 我需要发展,从网站1发送应用数据网站2“网络服务”,并返回成功或失败的网站2的响应。 我从来没有做过一个Web服务,我在哪里开始有点混乱。 我一直在阅读各种在线的例子,但他们似乎都只是为了建立一个web服务...没有具体的例子出发点。
因此,对于发布数据的网站1,将我的控制器方法是什么样子? 我使用JSON的数据发布到网站2? 什么会和例子是什么样子的? 是否有某种形式的指向网站2的方法重定向的?
因此,对于张贴响应返回给网站2将在该控制器的方法是什么样子? 我想我会再次使用JSON来响应发送回网站1? 是否有某种形式的方法重定向回指向网站1?
我会使用JSON和POST应用到Web服务。
首先我假定应用程序数据包含在某些类型的对象。 使用JSON.Net对象序列化到JSON。 它看起来像下面的代码。
var application = new Application();
string serializedApplication = JsonConvert.Serialize(application);
二是张贴代码您的端点(Web服务,MVC动作)。 为此,你需要做一个HTTPRequest,到端点。 下面的代码是我用什么来作出张贴代码。
public bool Post(string url, string body)
{
//Make the post
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, errors) => true;
var bytes = Encoding.Default.GetBytes(body);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
Stream stream = null;
try
{
request.KeepAlive = false;
request.ContentLength = bytes.Length;
request.ContentType = "application/x-www-form-urlencoded";
request.Timeout = -1;
request.Method = "POST";
stream = request.GetRequestStream();
stream.Write(bytes, 0, bytes.Length);
}
finally
{
if (stream != null)
{
stream.Flush();
stream.Close();
}
}
bool success = GetResponse(request);
return success;
}
public bool GetResponse(HttpWebRequest request)
{
bool success;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
if (response.StatusCode != HttpStatusCode.OK && response.StatusCode != HttpStatusCode.Created)
{
throw new HttpException((int)response.StatusCode, response.StatusDescription);
}
var end = string.Empty;
using (StreamReader reader = new StreamReader(responseStream))
{
end = reader.ReadToEnd();
reader.Close();
success = JsonConvert.DeserializeObject<bool>(end);
}
response.Close();
}
}
return success;
}
所以,现在你可以张贴JSON一个端点和接收响应,下一步是创建端点。 下面的代码将让你开始在MVC端点将接收应用程序并进行处理。
[HttpPost]
public ActionResult SubmitApplication()
{
//Retrieve the POSTed payload
string body;
using (StreamReader reader = new StreamReader(Request.InputStream))
{
body = reader.ReadToEnd();
reader.Close();
}
var application = JsonConvert.Deserialize<Application>(body);
//Save the application
bool success = SaveApplication(application);
//Send the server a response of success or failure.
return Json(success);
}
上面的代码是一个良好的开端。 请注意,我还没有测试此代码。
很明显你的数据和操作多个客户端。 所以服务是你在找什么。
ASP.NET MVC是开发RESTful服务的一个很好的候选人。 如果你(和你的经理)就可以使用测试版,然后结帐ASP.NET的Web API。
如果你想留在一个稳定的产品,去为MVC3。 您可能需要编写一些自定义代码以XML返回数据以及JSON到服务器的不同类型的客户。 有一些教程在那里。
因此,创建一个服务(ASP.NET MVC / WCF服务),那么可以。您创建2个的客户端应用程序,一个用于外部客户端,另一个用于内部用户。 这两个应用程序可以调用服务的方法来创建/读取用户帐户/或你想干什么就干什么操作。
为了使应用程序更活跃的,互动,您可以求索包括一个美妙的事情叫做SiganalR ,它可以帮助您非常得到一些实时数据,而时间可持续轮询数据库/中间层在每n秒!