WebService的ASP.NET MVC 3的发送和接收(WebService ASP.NET

2019-09-19 19:49发布

我已经费尽我的大脑进行了两天,现在对如何处理的新要求。

我有两个网站。 第一个让用户填写一份申请表。 第二个网站是一个内部网站,用于管理用户的应用程序。 我需要发展,从网站1发送应用数据网站2“网络服务”,并返回成功或失败的网站2的响应。 我从来没有做过一个Web服务,我在哪里开始有点混乱。 我一直在阅读各种在线的例子,但他们似乎都只是为了建立一个web服务...没有具体的例子出发点。

因此,对于发布数据的网站1,将我的控制器方法是什么样子? 我使用JSON的数据发布到网站2? 什么会和例子是什么样子的? 是否有某种形式的指向网站2的方法重定向的?

因此,对于张贴响应返回给网站2将在该控制器的方法是什么样子? 我想我会再次使用JSON来响应发送回网站1? 是否有某种形式的方法重定向回指向网站1?

Answer 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);
    }

上面的代码是一个良好的开端。 请注意,我还没有测试此代码。



Answer 2:

很明显你的数据和操作多个客户端。 所以服务是你在找什么。

ASP.NET MVC是开发RESTful服务的一个很好的候选人。 如果你(和你的经理)就可以使用测试版,然后结帐ASP.NET的Web API。

如果你想留在一个稳定的产品,去为MVC3。 您可能需要编写一些自定义代码以XML返回数据以及JSON到服务器的不同类型的客户。 有一些教程在那里。

因此,创建一个服务(ASP.NET MVC / WCF服务),那么可以。您创建2个的客户端应用程序,一个用于外部客户端,另一个用于内部用户。 这两个应用程序可以调用服务的方法来创建/读取用户帐户/或你想干什么就干什么操作。

为了使应用程序更活跃的,互动,您可以求索包括一个美妙的事情叫做SiganalR ,它可以帮助您非常得到一些实时数据,而时间可持续轮询数据库/中间层在每n秒!



文章来源: WebService ASP.NET MVC 3 Send and Receive