ffxdz
来自反方向的钟。本博客所有文章均为原创,如有雷同,一定是他人转载本博客。

导航

 

     现在时刻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应用。

posted on 2014-03-10 01:52  ffxdz  阅读(1138)  评论(12编辑  收藏  举报