1. WebService

SOAP、WSDL、UDDI
SOAP(Simple Object Access Protocal,简单对象访问协议),是在分散或在分布式环境中交换信息的简单协议。
WSDL(Web Services Description Language,Web服务描述语言) 对WebService 的解释说明文档,描述Web服务发布的XML格式
UDDI 统一描述、发现和集成(Universal Description, Discovery, and Integration)的缩写,是Web服务的黄页,它是一个基于XML的跨平台的描述规范,可以使世界范围内的企业在互联网上发布自己所提供的服务供其他客户查询使用。

WebService工作原理:客户端向服务器段发出调用请求,发出一个SOAP消息;服务端对这SOAP消息处理后返回结果;基于SOAP协议。

优点:跨语言、跨平台、不局限于局域网和广域网、分布式异地调用。  SOAP协调使用通过HTTP 和 XML(文本语言) 进行通信

缺点:传输的数据量过大、冗余数据过多、速度感觉延迟。

Web Service :是可互操作的分布式应用程序 Web Service :使用 HTTP 和 XML 进行通信 Web Service :可以穿越防火墙,真正实现自由通信 通过 SOAP 实现异地调用 默认 80 端口

Web Service(Web 服务)提供以下属性。

Namespace:默认是"http://tempuri.org/",此属性的值包含 XML Web Service 的默认命名空间。XML 命名空间提供了一种在 XML 文档中创建名称的方法,该名称可由统一资源标识符(URI)标识。使用XML命名空间,可以唯一标识XML文档中的元素或属性因而,在 XML Web Service 的服务说明中,Namespace 被用做与 XML Web Service 直接相关的XML 元素的默认命名空间。如果不指定命名空间,则使用默认命名空间http://tempuri.org/。

Name:此属性的值包含 XML Web Service 的名称。在默认情况下,该值是实现 XML Web Service 的类的名称。

Description:此属性的值包含描述性消息,此消息将在 XML Web Service 的说明文件(例如服务说明和服务帮助页)生成后显示给 XML Web Service 的潜在用户。

WebMethod(Web 服务方法)有以下 6 个属性。

Description:是对 Web Service 方法的描述信息。就像 Web Service 方法的功能注释,可以让调用者看见的注释。

EnableSession:指示 Web Service 是否启动 Session 标志,主要通过 Cookie 完成,默认为 false。

MessageName:主要实现方法重载后的重命名:

TransactionOption:指示 Web Service 方法的事务支持。

CacheDuration:设置响应应在缓存中保留的秒数。这样 Web Service 就不需要重复执行多遍,可以提高访问效率,而 CacheDuration 就是指定缓存时间的属性。

简单代码实现如下:

using System;
using System.Collections.Generic;
using System.EnterpriseServices;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols; namespace TestWebService1
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://yxl.org/",Name="MyWebService",Description="我的webservice")]
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
// [System.Web.Script.Services.ScriptService]
public class WebService1 : System.Web.Services.WebService
{ public MySoapHeader myHeader; [SoapHeader("myHeader")]
[WebMethod( MessageName = "GetTime")]
public string GetTime()
{
if (!myHeader.IsValid())
{
return "对不起,您没有权限访问";
}
return DateTime.Now.ToString();
} [WebMethod(Description="获取所有的学生",EnableSession=false,TransactionOption=TransactionOption.Required,CacheDuration=)]
public List<Student> GetStudent()
{ return new List<Student>()
{
new Student() {Id = , Name = "张三1"},
new Student() {Id = , Name = "张三2"},
new Student() {Id = , Name = "张三3"}
};
}
[WebMethod(Description = "获取所有的学生1", EnableSession = false,MessageName="GetStudent2")]
public List<Student> GetStudent(string name)
{
return new List<Student>()
{
new Student() {Id = , Name = "张三1"},
new Student() {Id = , Name = "张三2"},
new Student() {Id = , Name = "张三3"}
};
}
} public class Student
{
public int Id { get; set; }
public string Name { get; set; }
} public class MySoapHeader : SoapHeader
{
public string UserName { get; set; }
public string Password { get; set; } public bool IsValid()
{
if (UserName == "admin" && Password == "")
{
return true;
}
else
{
return false;
}
} } }

发布后调用实现如下:

using ShowStudentInfo.ServiceReference1;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace ShowStudentInfo
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack){
loadInfo();
}
} public void loadInfo() { using (MyWebServiceSoapClient client = new MyWebServiceSoapClient())
{ //Student[] students = client.GetStudent();
//foreach (var student in students)
//{
// Response.Write(student.Name + "</br>");
//}
//Response.Write("<hr/>"); MySoapHeader myHeader = new MySoapHeader();
myHeader.UserName = "admin";
myHeader.Password = "";//用户名和密码要和调用的Web Service 一致
Response.Write(client.GetHello(myHeader)); } }
}
}

最新文章

  1. php实现设计模式之 组合模式
  2. 黑马程序员_Java基础:可变参数(Varagrs)的使用注意事项
  3. 留只脚印(DP)
  4. USACO 5.5 Hidden Password(搜索+优化)
  5. win7中USB音箱没有声音解决的方法
  6. 九度OJ 1201 二叉排序树
  7. Http协议、线程、线程池
  8. 百度Web App在线生成平台Site App体验
  9. .进程&amp;线程(&amp;java.lang.Thread)详解
  10. javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
  11. 【bzoj4174】tty的求助 莫比乌斯反演
  12. windows环境设置mysql自动备份(测试成功)
  13. [Postman]授权(11)
  14. faker模块
  15. JAVA Spring JavaBean 属性值的注入方式( 属性注入, 特殊字符注入 &lt;![CDATA[ 带有特殊字符的值 ]]&gt; , 构造器注入 )
  16. 【已解决】vbox + ubuntu 设置 1366x768 分辨率
  17. pgadmin3
  18. 前端HTML5介绍
  19. 【BZOJ1045】糖果传递(基于贪心的数学题)
  20. 【软件工程】Word frequency program

热门文章

  1. Spring mvc和Servlet
  2. cmd下进入oracle sqlplus
  3. 二维码(QR code)基本结构及生成原理
  4. Visual对象——WPF
  5. idea debug调试快捷键
  6. android多国语言使用
  7. 避免Gson使用时将一些字符自动转换为Unicode转义字符
  8. DOCKER实战案例
  9. asp.net获取URL和IP地址
  10. 发现的好东西——bitset