web的demo制造_一个简单的Webservice的demo,简单模拟服务

前段时间一直在学习WCF,匆匆忙忙的把《WCF全面解析》和《WCF服务编程》看了一遍,好多东西都不是很懂,又听了一下WCF分布式开发的网络教程,算是马马虎虎的明白点了。回顾了一下Webservice,将二者进行比较学习。考虑到以后的发展,当时决定学习WCF,希望自己在不久的将来能将WCF学的稍微精通点吧。这几天又将Webservice看了一遍,回想当时学习Webservice处处碰到坑,由于没人指点,连最基本地点发布都折腾好长时间,只能一点一点的填坑跳坑。这几天闲了,想写一个简单的Webservice,希望能给当时和我一样的人有所帮助,也当给自己做个笔记。简单的demo,大牛可以绕道了,食品追溯。

先写个WinForm调用的模拟服务的,下篇写个WebForm下AJAX调用的。

首先,新建一个空的web应用程序。文件—>新建—>项目,选择Web下的ASP.NET 空 Web 应用程序。取名:MyWeb,如下图:

确定

再添加Web服务,添加—>新建项—>Web—>Web 服务,取名:MyService.asmx。如下图:

添加Web服务完成

在这里,模拟一个服务,类似于通过生日查询上辈子是谁的的测试。数据库添加点简单的数据,如下图:

这里偷懒,我用EF了。添加—>新建项—>数据—>ADO.NET 实体数据模型,取名:DB.edmx。如下图:

数据表已经建好了,选择从数据库生成,如下图:

下一步,连接属性

接着下一步

选择WhoAreYou表,完成

在服务端写服务,这里只简单些个获取名字的方法。服务端代码:

1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.Linq;4 usingSystem.Web;5 usingSystem.Web.Services;6

7 namespaceMyWeb8 {9 ///

10 ///MyService 的摘要说明11 ///

12 [WebService(Namespace = "http://tempuri.org/")]13 [WebServiceBinding(ConformsTo =WsiProfiles.BasicProfile1_1)]14 [System.ComponentModel.ToolboxItem(false)]15 //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。16 //[System.Web.Script.Services.ScriptService]

17 public classMyService : System.Web.Services.WebService18 {19 muyiEntities db = newmuyiEntities();20 //问:请用一句话概况你的职业21 //答:Hello World

22 [WebMethod]23 public stringHelloWorld()24 {25 return "Hello World";26 }27

28 //Description是对服务方法的描述介绍

29 [WebMethod(Description = "模拟根据生日测试你上辈子是谁?")]30 public string WhoAreYou(stringbirthday)31 {32 //根据客户端提供的生日,查询数据库,查出对应的人。

33 List who = db.WhoAreYou.Where(u => u.Birthday ==birthday).ToList();34 //本例模拟一个生日只对应一个人

35 WhoAreYou you = who[0];36 //返回对应人名字

37 returnyou.Name;38 }39 }40 }

写好以后,我们要发布到IIS上,先建立一个空网站。打开IIS,网站—>添加网站,输入IP、端口。这里有两个坑。首先,网站的名称要和发布的web服务名称一致,不然报错,在发布服务时提示没有MyService的站点。第二,应用程序池要选择程序集4.0,如果是2.0,会提示错误。这是当时我做的时候遇到的两个坑。

建立好空站点后,我们将写好的web服务发布到这里。首先生成一下,发布。将Web服务发布到我们刚在建立的网站。

发布成功后浏览网站

报错,没有添加默认文档

添加默认文档

双击打开,右键—>添加,或点击右上角的添加,录入服务的名字

浏览,成功

好了,现在可以调用服务了。为了区别,重新新建一个winform窗体项目

  

添加服务引用

在地址栏中填入Web服务地址,在这里注意命名空间,这里改为了MWS,是客户端调用服务的命名空间。

引用成功后,在引用文件夹下多出来了MWS,如下图:

打开窗体,后台,我们开始写客户端的调用代码。

1 usingSystem;2 usingSystem.Collections.Generic;3 usingSystem.ComponentModel;4 usingSystem.Data;5 usingSystem.Drawing;6 usingSystem.Linq;7 usingSystem.Text;8 usingSystem.Threading.Tasks;9 usingSystem.Windows.Forms;10 usingWEBFORM.MWS;11

12 namespaceWEBFORM13 {14 public partial classFormHello : Form15 {16 publicFormHello()17 {18 InitializeComponent();19 }20

21 private void btnTest_Click(objectsender, EventArgs e)22 {23 if (txtBirthday.Text.Trim() == "")24 {25 MessageBox.Show("请输入生日");26 return;27 }28 string birthday =txtBirthday.Text;29 MyServiceSoapClient ws = newMyServiceSoapClient();30 txtName.Text =ws.WhoAreYou(birthday);31 }32 }33 }

F5运行

点击测试按钮

结束语:Stay Hungry. Stay Foolish.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值