【问题标题】:Web Api or Web Service [closed]Web Api 或 Web 服务 [关闭]
【发布时间】:2015-08-12 14:18:41
【问题描述】:

我阅读了很多关于 Web Api 的内容。例如,我理解 Web Service 是一种 Web Api 或者 Web Api 更灵活。

但我没明白:Web Api 是 Web 服务的未来吗?

例如,我们的一位客户需要来自我们主数据库的数据。通常我使用 Web 服务来实现这个简单的目的,但这次我创建了一个 Web Api 项目。我得到了服务数据,还弄清楚了它是如何与实体或身份等一起工作的。但它不像网络服务那样简单。我认为我们的客户也会因为身份问题而想到同样的事情。那么为什么我应该更喜欢 Web Api 而不是 Web Service,或者在这种简单的情况下我应该更喜欢 Web Api?

【问题讨论】:

  • 已经问了很多,请用谷歌。 What is the difference between a web API and a web service? 的可能重复项
  • 我读过它们。我只是不知道何时使用 web 服务何时使用 web api。他们没有直接回答这个问题。例如,您仍然使用 Web 服务吗?如果你使用为什么不使用web api?
  • 当我们尝试构建软件时,我们应该考虑可重用性。 Web api 可以在多个平台下使用,例如手机、平板电脑和其他便携式设备,因为它以 json 的形式传输数据。 Xml 不是轻量级的,创建一个安静的 Web 服务并不像创建一个 Web api 那样容易。您不必担心 web api 中的端点问题。这使得代码易于维护。您可以让您的客户相信代码易于维护,从而降低了维护成本。

标签: asp.net asp.net-mvc web-services asp.net-identity asp.net-web-api2


【解决方案1】:

这取决于您所说的“网络服务”是什么意思,但现在我假设您指的是旧的 .net SOAP 服务。

如果您今天(2015 年 9 月)正在构建新的东西,那么使用 asp.net Web API 几乎肯定会更好。这是一个标准的 REST 风格的服务,几乎任何启用 HTTP 的客户端都可以调用它,不需要本地软件或了解服务的工作原理,这就是 REST 架构风格的重点。我在这里写了一些关于 Web API 和 REST 的博客:http://blogs.msdn.com/b/martinkearn/archive/2015/01/05/introduction-to-rest-and-net-web-api.aspx

在您使用实体框架向数据库添加 CRUD 操作的简单服务的情况下。这可以通过 Web API 轻松实现。你实际上可以基于一个简单的模型来搭建整个东西。

要回答您的具体问题,是的,我相信至少在 eth asp.net 世界中,Web API 是 Web 服务的未来。事实上,现在 Web 服务已被放弃,取而代之的是 Web API。

Web API 支持 .net 身份模型(我在此发表博客:http://blogs.msdn.com/b/martinkearn/archive/2015/03/25/securing-and-working-securely-with-web-api.aspx)和实体框架。

希望这会有所帮助,如果有帮助,请标记为答案或让我知道您需要的更多详细信息。

【讨论】:

    【解决方案2】:

     public class Service1 : System.Web.Services.WebService
        {
    
            private List<string> GetLines(string filename) {
    
                List<string> lines = new List<string>();
    
                //filename: ime fajla (valute.txt) SA EXT
                using (StreamReader sr = new StreamReader(Server.MapPath("podaci/" + filename))) {
                    string line;
                    while ((line = sr.ReadLine()) != null) {
                        lines.Add(line);
                    }
                }
    
                return lines;
    
            }
    
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
    
            [WebMethod]
            public double ProcitajKursNaDan(DateTime datum, string valuta) {
                List<string> podaci = GetLines("valute.txt");
    
                double kurs = 0.0;
    
                // Pronalazenje upisa
                for (int i = 0; i < podaci.Count; i++) {
                    string[] linija = podaci[i].Split('|');
                    /* Датум[0] | Oznaka valute[1] | Kurs[2] */
                    string dat = linija[0];
                    string val = linija[1];
                    string vrednost = linija[2];
    
                    // Uklanjanje viska
                    dat = dat.Trim(); 
                    val = val.Trim(); 
                    vrednost = vrednost.Trim();
    
                    // Konverzija:
                    DateTime datIzFajla = DateTime.ParseExact(dat, "d/M/yyyy", null);
    
                    double kursIzFajla = Convert.ToDouble(vrednost);
    
    
                    if (DateTime.Compare(datIzFajla, datum) == 0 && val == valuta)
                        kurs = kursIzFajla;
                }
    
    
                return kurs;
            }
    
            [WebMethod]
            public bool UpisiKursNaDan(DateTime datum, string valuta, double Kurs) {
                string date = datum.ToString("d/M/yyyy");
                string linijaZaUpis = date + " | " + valuta + " | " + Kurs.ToString();
    
                bool success = false;
    
                try
                {
                    StreamWriter sw = new StreamWriter(Server.MapPath("podaci/valute.txt"), true);
                    sw.WriteLine(linijaZaUpis);
                    sw.Close();
    
                    success = true;
                }
                catch {
                    success = false;
                }
                return success;
            }
    
            [WebMethod]
            public List<string> ProcitajSveValute() {
                List<string> linije = GetLines("valute.txt");
    
                List<string> ValuteIzFajla = new List<string>();
    
                for (int i = 0; i < linije.Count; i++) {
                    string linija = linije[i];
                    string valuta = linija.Split('|')[1];
                    valuta = valuta.Trim();
                    ValuteIzFajla.Add(valuta);
                }
    
                List<string> ValuteKraj = ValuteIzFajla.Distinct().ToList();
                return ValuteKraj;
            }
        }
    }
    //using A10App.localhost;
    
    //namespace A10App
    //{
    //    public partial class pregledkursa : System.Web.UI.Page
    //    {
    //        protected void Page_Load(object sender, EventArgs e)
    //        {
    //            if (!this.IsPostBack) { 
    //                Service1 servis = new Service1();
    //                List<string> valute = servis.ProcitajSveValute().ToList();
    //                for (int i = 0; i < valute.Count; i++)
    //                    DropDownList1.Items.Add(valute[i]);
    //            }
    //        }
    
    //        protected void Button1_Click(object sender, EventArgs e)
    //        {
    //            string datum = TextBox1.Text;
    //            string valuta = DropDownList1.Text;
    
    //            Service1 servis = new Service1();
    
    //            double kurs = servis.ProcitajKursNaDan(DateTime.ParseExact(datum, "d/M/yyyy", null), valuta);
    
    //            if (kurs != 0.0)
    //                Label2.Text = kurs.ToString();
    //            else
    //                Label2.Text = "Nije pronadjen kurs";
    
    //        }
    //    }
    //}
    //namespace A10App
    //{
    //    public partial class azuriranjeliste : System.Web.UI.Page
    //    {
    //        protected void Page_Load(object sender, EventArgs e)
    //        {
    //            if (!this.IsPostBack)
    //            {
    //                Service1 servis = new Service1();
    //                List<string> valute = servis.ProcitajSveValute().ToList();
    //                for (int i = 0; i < valute.Count; i++)
    //                    DropDownList1.Items.Add(valute[i]);
    //            }
    //        }
    
    //        protected void Button1_Click(object sender, EventArgs e)
    //        {
    //            string datum = TextBox1.Text;
    //            string valuta = DropDownList1.Text;
    //            string kurs = TextBox2.Text;
    
    //            Service1 servis = new Service1();
    
    //            servis.UpisiKursNaDan(DateTime.ParseExact(datum, "d/M/yyyy", null), valuta, Convert.ToDouble(kurs));
    
    //        }
    //    }
    //}

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 2010-10-22
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多