用本地C#写出的WebService利用MQTT协议去连接阿里云来实现数值的远程传输和使用(异步调用)第三篇:Web Service的引用

简介

  关于我这里引用的例子,采用的是我第二篇里面的getvalue函数,没有看过的可以先去看看然后再来看这篇文章,地址如下: https://blog.csdn.net/qq_19408097/article/details/97135942

WebService的发布

  关于Web Service网站发布的内容我在之前的文章中已经详细的讲过了,所以我就不在这里再过多的去描述了,地址如下:https://blog.csdn.net/qq_19408097/article/details/97108147

WebService的引用

  我们现在开始测试Webservice提供的getvalue函数,所以我们先要确保自己在阿里云上有一个与发出端(设备A)不同的接收端(设备C)设备,以及已经确保建立好了一个由设备A将数据传递给设备C的规则(本块内容在我以前的文章中已经写过了,想了解的可以去下列地址去查询: https://blog.csdn.net/qq_19408097/article/details/96452193 )。我们先写一个C#窗体程序,用来调用我已经写好的WebService。我们点开VS然后再重新建一个项目,项目为C#的窗体程序。
在这里插入图片描述
创建完成以后,点击左侧的工具箱,从中找到label和button两项,拖入一个label和两个button:
在这里插入图片描述在这里插入图片描述
右击,添加服务引用:
在这里插入图片描述
点击高级:
在这里插入图片描述
选择添加web引用:
在这里插入图片描述
输入发布好的网站,点击圆圈处的按钮:
在这里插入图片描述
选择添加引用:
在这里插入图片描述
然后我们双击button1,将代码复制进去:

private void button1_Click(object sender, EventArgs e)
        {
            localhost.webservice ws = new localhost.webservice();
            ws.access_aliyun("***", "***", "***", "cn-shanghai");
        }

第一个 *** 处输入你接收端(即设备C)的productKey。
第二个 *** 处输入你接收端的deviceName,
第三个 *** 处输入你接收端的deviceSecret。

然后点击如图位置后,双击button2,将下列代码复制进去:

private void button2_Click(object sender, EventArgs e)
        {
            string a;
            localhost.webservice ws = new localhost.webservice();
            ws.access_aliyun("***", "***", "***", "cn-shanghai");            
            a = ws.getvalue("***", "***", "***", "cn-shanghai");            
            label1.Text = a;
        }

同理:
第一个 *** 处输入你接收端(即设备C)的productKey
第二个 *** 处输入你接收端的deviceName
第三个 *** 处输入你接收端的deviceSecret
两行的 *** 都是如此操作

  然后我们在阿里云上开启由设备A到设备C的规则引擎。
  然后我们运行两个程序,一个是刚刚创建的窗体,还有一个是在之前的文章里创建的设备A的本地程序(在我以前的文章里写过这个窗体是如何制作的,网址如下: https://blog.csdn.net/qq_19408097/article/details/96425940 ),然后按照如下操作运行:
在这里插入图片描述
  注明一下,这里button1的作用是登录接收端的设备C,在数据上传之前,一定要保证接收端的设备在阿里云上处于在线状态,所以换而言之,只要接收端的设备处在在线状态,就算不按button1,直接按button2(button2是用来获取接收端topic的数值的按钮),也是没有问题的。而且这个获取数据的button2功能可以再强一点:
  首先,我们确保接收端的设备处在在线状态:(我这里的接收端设备C名字为computer2)
在这里插入图片描述
  确认在线以后,然后我们只打开发出端的程序不打开接收端的程序(就是只打开上面那张图右侧的程序,不打开左侧的那个程序),然后将数据输入后点击“数据上传”:
在这里插入图片描述
  完成以后,我们再启动接收端的程序:
在这里插入图片描述
  在保证此时接收端设备依旧在线的情况下,不用点击button1,直接点击button2,依旧可以在label1上显示数据:
在这里插入图片描述
  使接收端设备保持在线的方法有很多种,最简单的一种就是在接收数据前点击button1,(注:点击button1以后,如果停止程序的运行,阿里云上的设备会依旧保持在线的状态一段时间)而且每次在线时间的时间都是很长的,只要不是操作的过于缓慢,他都不会进入离线的状态。可以用这种方法,来进行测试。

总结

  之前我写过双设备的数据传输与使用,那个其实只是当前这个技术的一个前提,因为其实双设备和单设备的来去其实不大,就只是需要多加一条规则引擎而已,其他的差别就只是登陆的设备的参数需要进行一定的改变就可以了。
  但是对于已经发布和引用好的Webservice来说,WebService的作用其实并不是使接收端和发出端的程序差别加大,而是为了简单化程序,其实想想的话,这个程序在进行一定的加工以后,也是可以变成双向通信的,而且两个程序此时真的几乎是一模一样(之前还要调节设备的参数,现在只要调节namespace即可),只需要在云端写好规则引擎的话,做到双向通信,其实和单向通信就没有多大的差别了。
  WebService的使用可以给设备的创建和使用带来很多的好处,也可以使程序的使用方法变得更加的多样化,并且只要和发布的用户在同一个IP的前提条件下,就可以调用我已经写好了的WebService,实在是比之前复制代码要快得多。(前提是函数已经封装好)
  本章到这里就结束了,谢谢大家!

发布了40 篇原创文章 · 获赞 80 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_19408097/article/details/97141861