前段时间一直在学习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表,完成

  

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

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services; namespace MyWeb
{
/// <summary>
/// MyService 的摘要说明
/// </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 MyService : System.Web.Services.WebService
{
muyiEntities db = new muyiEntities();
// 问:请用一句话概况你的职业
// 答:Hello World
[WebMethod]
public string HelloWorld()
{
return "Hello World";
} // Description是对服务方法的描述介绍
[WebMethod(Description = "模拟根据生日测试你上辈子是谁?")]
public string WhoAreYou(string birthday)
{
// 根据客户端提供的生日,查询数据库,查出对应的人。
List<WhoAreYou> who = db.WhoAreYou.Where(u => u.Birthday == birthday).ToList();
// 本例模拟一个生日只对应一个人
WhoAreYou you = who[];
//返回对应人名字
return you.Name;
}
}
}

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

  

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

  发布成功后浏览网站

  

  报错,没有添加默认文档

  

  添加默认文档

  

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

  

  浏览,成功

  

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

    

  添加服务引用

  

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

  

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

  

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

  

 using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WEBFORM.MWS; namespace WEBFORM
{
public partial class FormHello : Form
{
public FormHello()
{
InitializeComponent();
} private void btnTest_Click(object sender, EventArgs e)
{
if (txtBirthday.Text.Trim() == "")
{
MessageBox.Show("请输入生日");
return;
}
string birthday = txtBirthday.Text;
MyServiceSoapClient ws = new MyServiceSoapClient();
txtName.Text = ws.WhoAreYou(birthday);
}
}
}

  F5运行

  

  点击测试按钮

  

  结束语:Stay Hungry. Stay Foolish.

一个简单的Webservice的demo,简单模拟服务的更多相关文章

  1. 一个简单的webservice的demo(下)winform异步调用webservice

    绕了一大圈,又开始接触winform的项目来了,虽然很小吧.写一个winform的异步调用webservice的demo,还是简单的. 一个简单的Webservice的demo,简单模拟服务 一个简单 ...

  2. 一个简单的Webservice的demo(中)_前端页面调用

    首先新建项目,这里有两种调用方式,为了能方便理解,新建页面WebserviceTest如下图: 先引用写好的服务,这里用上次写好的服务.见上次写的一个简单的Webservice的demo,简单模拟服务 ...

  3. 使用Axis2创建一个简单的WebService服务

    使用过Java进行过WebService开发都会听过或者接触过Apache Axis2,Axis2框架是应用最广泛的WebService框架之一了. 这里使用Axis2来开发和部署一个最简单的WebS ...

  4. 一个简单的WebService实例

    WebService在.NET平台下的作用是在不同应用程序间共享数据与数据交换. 要达到这样的目标,Web services要使用两种技术: XML(标准通用标记语言下的一个子集):XML是在web上 ...

  5. 一个简单的webservice调用

    我们先创建一个简单空web应用程序 然后添加新建项目 //我们创建一个peson对象,产生数据标识返回 using System; using System.Collections.Generic; ...

  6. (转)Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

  7. 利用VS2008发布一个简单的webservice

    一个开发好的webservice,怎样发布出去,供其他电脑访问呢? 本文将介绍如何发布一个简单的webservice,其中的内容都是在网上查看别人文章,自己仿照着做了一遍,因此,难免会发生错误,如果发 ...

  8. Web Service入门简介(一个简单的WebService示例)

    Web Service入门简介 一.Web Service简介 1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从I ...

  9. 用idea搭建一个简单的SSM的Demo

    1.新建一个maven  web app项目 结构如下 resources的资源文件如下 applicationContext.xml 的配置 <?xml version="1.0&q ...

随机推荐

  1. canvas初探2

    2.2 canvas的绘图环境 canvas仅仅只是一个绘图的容器,其内存在一个绘图环境,该环境对象提供了全部的绘图功能. 目前canvas的绘图环境是2d,但canvas规范在着手准备支持其他类型的 ...

  2. 4.Powershell交互界面

    Powershell提供两种接口:交互式和自动化脚本 先学下如何与Powershell Console和平共处,通过Powershell Console和机器学会对话. 通过以上一个简单测试,知道Po ...

  3. eventbus 备注

    Event在整个系统中是单例的. EventBus.getDefault().register(this); 注册 EventBus.getDefault().unregister(this); 注销 ...

  4. NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装

    一.NoSQL的风生水起 1.1 后Web2.0时代的发展要求 随着互联网Web2.0网站的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经 ...

  5. Unity3D游戏开发初探—4.开发一个“疯狂击箱子”游戏

    一.预备知识—对象的”生“与”死“ (1)如何在游戏脚本程序中创建对象而不是一开始就创建好对象?->使用GameObject的静态方法:CreatePrimitive() 以上一篇的博文中的“指 ...

  6. 玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案

    将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了. 问题 通过服务管理器进行启动的时候,发现服 ...

  7. 谁占了我的端口 for Windows

    这篇文章发布于我的 github 博客:原文 今天在本地调试 Blog 的时候意外的出现了一些错误:127.0.0.1 4000 端口已经被其他的进程占用了.如何找到占用端口的进程呢? Configu ...

  8. Spring学习记录(九)---通过工厂方法配置bean

    1. 使用静态工厂方法创建Bean,用到一个工厂类 例子:一个Car类,有brand和price属性. package com.guigu.spring.factory; public class C ...

  9. 上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?

    今天群里有人聊图片上传,简单说下自己的经验(大牛勿喷) 0.如果你的方法里面是有指定路径的,记得一定要过滤../,比如你把 aa文件夹设置了权限,一些类似于exe,asp,php之类的文件不能执行,那 ...

  10. 【WP开发】记录屏幕操作

    在某些应用中,比如游戏,有时候需要将用户的操作记录下来.ScreenCapture类提供了这个功能.但必须注意的是:此屏幕记录功能只对当前应用程序的屏幕有效,即只有当前应用程序在前台运行时才有效. 与 ...