Web Api 或 Web 服务

Web Api or Web Service

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

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

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

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

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

在您使用 entity framework 将 CRUD 操作添加到数据库的简单服务的情况下。使用 Web API 可以很容易地实现这一点。实际上,您可以基于一个简单的模型构建整个内容。

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

Web API 支持 .net 身份模型(我在这里写了博客:http://blogs.msdn.com/b/martinkearn/archive/2015/03/25/securing-and-working-securely-with-web-api.aspx)和 entity framework.

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

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

//        }
//    }
//}