入门之前先简单介绍下WCF。在用WebService做开发时,很多人都不知道WCF和WebService之间的关系。实际上WCF包含了WebService,这是一个很强悍的通信技术应用框架。微软把.NET平台下所有涉及到分布式通信的一些技术都融合到wcf中来。比如webservice已经融合到wcf来了、MSQ(微软的消息队列)、甚至还融合一些通信协议,比如TCP,UDP协议。所以wcf把.NET平台下的通信问题给解决了。

这样说你也许看了可能还无法理解,这里我们来模拟一个如何解决跨系统、跨平台、跨服务器进行通信情景(如下图)。

WebService的本质:可以用来解决通信的问题--------------------------------------------------------------------

需求:让张三公司下的这些系统能够进行通信,比如我用C#来写一个计算加减乘除的程序让JAVA或PHP的系统直接来用它。

这无疑是一件令人难以理解的问题。这时候我们可以尝试使用WebService来处理这一件费解的事。

如何创建及使用WebService?

步骤:

1.添加一个Web服务

2.添加完成后,可以看到会产生一个.asmx的文件,我们需要看的是产生的.asmx.cs后台页面。在.NET3.5或早期版本,这个CS页面一般会自动生成到App_Code文件夹里。当然,.NET4.0(包含更高版本)是以节点方式产生。这里看下这个文件的代码结构:

    /// <summary>
/// WebServiceDemo 的摘要说明
/// </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 WebServiceDemo : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello ";
}
}

这个代码其实很简单,一个普通类来继承System.Web.Services.WebService这个基类。

[WebMethod]属性会将方法附加到Public 方法表示希望将该方法公开为 XML Web services 的一部分。通俗的讲就是在没有加这个属性时,你写的WebService就无法被外部访问。

3.创建一个简单的WebService

 [WebMethod]
public int Add(int a, int b)
{
return a + b;
}

4.引用:通过Winform程序去调用它

-4.1创建完winform程序后,添加服务引用

-4.2将WebService地址放到地址去搜索服务,这样就可以看到刚才创建的方法了

5.启用刚才创建的winform程序来调用这个程序

private void button1_Click(object sender, EventArgs e)
{
int a = int.Parse(t1.Text);
int b = int.Parse(t2.Text);
Var_WebService.WebServiceDemoSoapClient client = new Var_WebService.WebServiceDemoSoapClient();//WebService走的是Soap协议
int result= client.Add(a, b);
MessageBox.Show(result.ToString());
}

结果:

最新文章

  1. varnish 内置函数详细说明
  2. tokudb引擎磁盘空间不足导致写入失败的调查
  3. 运行EFDC出现这样的错误:forrt1:severe&lt;157&gt;:Program Exception-access violation
  4. android之费电检查 BetterBatteryStats
  5. VIM学习1
  6. 折返(Reentrancy)VS线程安全(Thread safety)
  7. C# 一个初学者对 依赖注入 IOC 的理解( 含 Unity 的使用)
  8. C++格式化输出浮点数
  9. 【ShaderToy】基础篇之再谈抗锯齿(antialiasing,AA)
  10. 使用Logstash filter grok过滤日志文件
  11. 在 xilinx SDK 使用 math.h
  12. [Windows] 解决 VLC Media Player 的 Crash Reporting 消息弹窗
  13. 06_Flume_interceptor_时间戳+Host
  14. C++ volatile
  15. OpenDiscussion_DataDrivenDesign
  16. java语言导学(5版)--第12章并发之二
  17. 编码转换(UTF8-&gt;GBK)
  18. MySQL 取得字段子串修改
  19. Java逍遥游记读书笔记&lt;三&gt;
  20. RabbitMQ消息队列(一): 简单队列

热门文章

  1. 解决vue跨域axios异步通信
  2. MySQL日期时间处理函数
  3. Symbol 实现属性私有化的方式
  4. MvcPager.js在特定业务场景下的问题解决
  5. python基础学习1-随机验证码
  6. wpf 中Listbox获取选中的值
  7. TMS320VC5509的外部中断
  8. 大学生Linux常用命令(一)
  9. 并发系列(四)-----CAS
  10. 180804-Spring之动态注册bean