• 【WCF学习随笔二】第一个WebService应用。


         现在时刻3月10日0:01 AM,我睡醒了,但目测又是通宵了,只有夜的宁静才能给我带来效率。熬夜对身体不好,但我从来不避讳讨论自己未来会有多短命,无所谓的,谁也无法预计自己会在什么样的情况下死亡,或许哪天坐在飞机上来了几个恐怖分子引爆个炸弹,一瞬间就会成为灰烬。为何不趁还活着多做点自己认为有意义的事情呢?在乎65岁和70岁之间或许都是卧床不起的那几年有什么意义呢?

         废话少说,进入正题。以下讲述的,是我开发第一WebService的详尽全过程。

         WCF据我了解貌似是.NET FRAMEWORK 3.0才有的东西?我现在用的是WIN8.1专业+VS2013旗舰版,最高支持到4.5.1版本,本博客开博第一篇文章说到了微软把这个版本的源码开源了(点击阅读)。WCF是微软对以前好多技术的集成和升级,其中我们最常见的就是WebService,这成为了一个标准,不止微软一家,还有其他平台下也有这样的服务。SOAP(简单对象访问协议)作为WebService最重要的一部分,就注定了我们今晚的项目要用它来完成。

         但运气非常不佳的是,我花了很久都没找到添加Web服务新项的地方,经过多方求证,我们发现在.NET 4.5.1里已经取消了新建Web服务(.asmx)的选项了,微软的意思似乎是WebService与WCF里的功能重复了,该淘汰了。所以新建Web服务只能在4.0框架版本下进行。

    步骤一:新建一个ASP.NET空项目,命名为myws(我的猥琐)

    新建项目

    我X,博客园上传的大图那么叼,能有个缩略图么?(貌似有,但是懒得改了)

    步骤二:添加Web服务新项,命名为hello

    打开hello.asmx后看到系统已经给我们生成好了一段HelloWorld函数代码。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Services;
    
    namespace myws
    {
        /// <summary>
        /// hello 的摘要说明
        /// </summary>
        [WebService(Namespace = "http://tempuri.org/")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [System.ComponentModel.ToolboxItem(false)]
        // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
        // [System.Web.Script.Services.ScriptService]
        public class hello : System.Web.Services.WebService
        {
    
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
    
        }
    }


    上面那些方括号是干嘛用的我依然不知道,但是我知道[WebMethod]是一定要加载函数前面的,这东西用来描述是用于可以发布在WEB服务中的函数,没了它这个函数就无法通过WEB服务被访问。

    步骤三:调试,点击F5。

    这是一个可以调用的函数列表,如果代码里的函数多了,这个列表也会相应的显示出来。

    点击进去:

    点击调用弹出以下XML代码,这是函数的返回值:

    <?xml version="1.0" encoding="UTF-8"?>
    <string xmlns="http://tempuri.org/">Hello World</string>

    调试成功了,我们可以试试有参数的函数,往hello.asmx的hello类里加入一个函数,记得在函数前要加上[WebMethod]。(有种不加试试?)

            [WebMethod]
            public string Hello(string str)
            {
                return str + "said:Hello World";
            }


    再次调试,Hello函数就会出现在列表里了,我们直接来看下打开函数调用页面后的样子。

    输入个“肥皂月”,点击调用,我们就能看到他的返回值:(想知道肥皂月是谁?加入我们高大上的Top of c#群:5885668 就知道了)

    <?xml version="1.0" encoding="UTF-8"?>
    <string xmlns="http://tempuri.org/">肥皂月said:Hello World</string>


     

    步骤四:发布。

    设置好上面这两项以后,猛点几下“下一步”,点击个发布,发布就完成了,文件已经生成到了目标位置。

    接下来在IIS里新建一个网站,目录设置为这个目标地址,设置个82端口,通过http://localhost:82/hello.asmx访问试试,如果达到和刚才一个效果就算是完事了。

    什么?不会用IIS?我X,你连IIS都不会用学WCF干嘛啊?赶紧百度去!

    步骤五:

    新建一个用来调用这个WEB服务的程序,用什么都行,我这里建立了一个名为wstest(猥琐测试)的WindowsForm项目,图我就不截了,没人不会吧?不会我给你推荐一本书《C#入门经典》,WCF什么的你就别掺和了哈,乖。

    接下来:

    上面设置好了点击确定,就多出了下面那么个东西来。

    我们这样就算是引用服务成功了,是不是心情很激动。

    激动完了,就在你的form1上拉两个控件,就是这个叼样:

    在button1的单击事件函数里加上两行代码:

            private void button1_Click(object sender, EventArgs e)
            {
                webhello.helloSoapClient h = new webhello.helloSoapClient();
               MessageBox.Show( h.Hello(textBox1.Text));
               
            }

    记得,wenhello是命名空间,而他下面会自动生成一个以“原类名+SoapClient”为命名的类,就是我们需要调用的类。
    貌似我看一些其他的参考资料,VS2010调用的类名是和原类名保持一致的,不过至少我的2013就是这个样子。

    F5一下试试,是下面这个样子么?

    你成功了吗?

         到现在为止,这一个简单实际的WebService应用就做完了,大家学到手了,以后在大街上就可以昂首挺胸说自己是会SOAP开发的人了,是不是瞬间觉得高大上了?在云计算横行的年代,SOAP的应用面真的是广的不能再广了,运行在低端设备上的客户端就是一个用来输入输出的轻量级应用,所有数据都传到服务器运算,然后把结果传回来。大家可以尝试着通过服务端实现更多的功能,遇到什么问题可以和我交流,我与君共勉。

         下回预告:做你的第一个WCF应用。

  • 相关阅读:
    2021 省选颓记
    题解 UVA12459 Bees' ancestors
    题解 UVA10812 Beat the Spread!
    题解 UVA12230 过河 Crossing Rivers
    题解 P1850 [NOIP2016 提高组] 换教室
    题解 P1297 [国家集训队]单选错位
    CSP2020 游记
    学习笔记10-18
    【题解-SP1724 TRICOUNT】简单易懂的递推式写法
    题解:论如何利用 大 模 拟 吊打LGJ~
  • 原文地址:https://www.cnblogs.com/ffxdz/p/3591021.html
Copyright © 2020-2023  润新知