• 构建WebService常用特性[含简单示例程序]


    WebService Method Attributes Properties

    1.Infomation 属性:

    Description
    MessageName

    2.Behavior属性:

    BufferResponse

    CacheDuration

    EnableSession

    TransactionOption

    使用WebService代理类

    1.Examples:IDispatch,COM interop wrappers(RCW)

    2.透明的,处理底层细节

    3.使用WebService API函数 inhertis System.Web.Services.Protocols.SoapHttpClientsProtocol

    4.处理:
    Marshalling  of Parameters

    XML序列化/反序列化

    SOAP加密/解密

    一个WebService对应三个方法:

    一个同步/两个异步

    KeyProperties:
    Url,TimeOut,Proxy,RequestEncoding,UserAgents,AllowAutoRedirection

    返回复杂的数据类型

    1>数据集
    2>XML
    3>二进制数据[pdf,图片]

    .Net使得一切简单化了

    把简单的对象和属性序列化了

    下面我们来看一下通过一个WebService串行化一个XML的示例程序源代码:

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.Web;
    using System.Web.Services;

    namespace WebServiceForStock
    {
        
    /// <summary>
        
    /// Service1 的摘要说明。
        
    /// </summary>

        public class Service1 : System.Web.Services.WebService
        
    {
            
    public Service1()
            
    {
                
    //CODEGEN: 该调用是 ASP.NET Web 服务设计器所必需的
                InitializeComponent();
            }


            
    private System.Windows.Forms.TextBox textBox1;

            
    组件设计器生成的代码

            
    // WEB 服务示例
            
    // HelloWorld() 示例服务返回字符串 Hello World
            
    // 若要生成,请取消注释下列行,然后保存并生成项目
            
    // 若要测试此 Web 服务,请按 F5 键

            [WebMethod]
            
    public User StockService(int UserID)
            
    {
                User newUser
    =new User();
                newUser.personInstance
    =new Person();
                newUser.personInstance.Name
    ="Slashout";
                newUser.personInstance.Age
    =25;
                newUser.Email
    ="slashout@163.com";
                newUser.pwd
    ="test";
                
    return newUser;
            }

        }

    }



    然后看我们实例化类的程序,我们建立一个类文件:

    using System;
    using System.Web.Services;
    using System.Xml;
    using System.Xml.Serialization;
    using System.Xml.Schema;
    using System.Collections;


    namespace WebServiceForStock
    {
        
    public class Person
        
    {
            
    public string Name;
            
    public int Age;
        }

        
    public class User
        
    {
            
    public Person personInstance ;
            
    public string Email;
            
    public string pwd;

        }


        
    /// <summary>
        
    /// CustomizeClass 的摘要说明。
        
    /// 自定义类用XML序列化
        
    /// 可以返回复合的类
        
    /// </summary>

        public class CustomizeClass
        
    {

            [XmlAttribute()]
    public int orderID;
            
    public DateTime orderTime;
            [XmlElement(
    "DateTimeRequired")]public DateTime requiredDate;
            
    public DateTime shippedDate;
            
    public ArrayList Details;
            [XmlIgnore]
    public string SalesPersonID;
            
    public CustomizeClass()
            
    {
                
    //
                
    // TODO: 在此处添加构造函数逻辑
                
    //
            }
            
        }

        
        [XmlRoot(Namespace 
    = "http://www.cohowinery.com")]
        
    public class Group
        
    {
            
    public string GroupName;

            
    // This is for serializing Employee elements.
            [XmlAnyElement(Name = "Employee")]
            
    public XmlElement[] UnknownEmployees;

            
    // This is for serializing City elements.   
            [XmlAnyElement
                 (Name 
    = "City"
                 Namespace 
    = "http://www.cpandl.com")]
            
    public XmlElement[] UnknownCity;

            
    // This one is for all other unknown elements.
            [XmlAnyElement]
            
    public XmlElement[] UnknownElements;
        }



    }



    好了程序运行结果返回一个XML源代码:

      <?xml version="1.0" encoding="utf-8" ?> 
    <User xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
    <personInstance>
      
    <Name>Slashout</Name> 
      
    <Age>25</Age> 
      
    </personInstance>
      
    <Email>slashout@163.com</Email> 
      
    <pwd>test</pwd> 
      
    </User>
    假设这里是一个通用的注册用户程序,那么我们就可以通过UDDI调用这个注册方法得到我们对于用户所得到的通用注册信息,只要调用这个WebService即可了,具有平台无关性的特点

    本文来自博客园,作者:Slashout,转载请注明原文链接:https://www.cnblogs.com/SlashOut/archive/2005/03/26/126193.html 关注公众号:数字化转型

  • 相关阅读:
    Centos下使用Docker部署MySql
    用C#编写游戏脚本
    VS2013使用自带的数据库 Microsoft SQL Server 2012 Express LocalDB
    WIN11下访问Gitee(WIN11下GITEE 拉取PULL和推送PUSH失败的解决办法)
    前端MVC Vue2学习总结(二)——Vue的实例、生命周期与Vue脚手架(vue-cli)
    前端MVC Vue2学习总结(一)——MVC与vue2概要、模板、数据绑定与综合示例
    JavaScript学习总结(五)——jQuery插件开发与发布
    JavaScript学习总结(四)——this、原型链、javascript面向对象
    JavaScript学习总结(三)——闭包、IIFE、apply、函数与对象
    JavaScript学习总结(二)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
  • 原文地址:https://www.cnblogs.com/SlashOut/p/126193.html
Copyright © 2020-2023  润新知