zoukankan      html  css  js  c++  java
  • WebService

    WebService 是基于soap与http协议以xml数据格式进行通信

    、 soap 协议

       soap 协议的全称是简单对象访问协议(simple object access protocol),soap 协议已XML的形式进行数据传输,soap协议时可以跨平台使用,只要规范对象的访问方式,但soap协议仍然是基于http协议,通过http去进行数据传输。

      soap 协议的组成部分:

      a、Soap 信封

      b、soap 编码规则

     c、soap 远程调用

    d、soap 绑定

    soap协议和http协议的关系,类似于网络分层的上下层协议。使用soap协议的双方 把soap 包绑定到http报文之中,并且通过http 进行实际的数据传输。

     总结: soap 协议提供了简单的数据传输机制,以XML的形式进行数据库传输。

      WSDL(Web Service Description Language) web 服务描述语言,它符合XML的语言规范,用来描述服务端webservice 方法,包含以下内容:

     a、方法名称

     b、方法参数

    c、 各个参数的类型

    d、返回的数据类型等

    一个WSDL可以完整的描述服务器提供的Web Service

    Web Service 中webmethod 包含以下属性:

    BufferResponse:

        /// <summary>
            /// BufferResponse =true  时,服务端以16KB的块区 缓冲响应,响应在序列化的同事不断的发给客户端,不管响应是否完全结束
            ///  小批量数据 开启时  可显著提高性能
            /// </summary>
            /// <returns></returns>
            [WebMethod(BufferResponse =true)] 
           
            public string TestBufferResponse()
            {
    
                return "Hello World";
            }
    

     enableSession

       未开启session:

     #region   测试enableSession
    
            [WebMethod(enableSession:true)]
            public string TestWithSession()
            {
                return GetSession();
            }
            [WebMethod(enableSession: false)]
            public string TestWithNoSession()
            {
                // 当前方法禁止使用session
                return GetSession();
            }
            public string GetSession()
            {
    
                if (Session == null)
                    return $"{nameof(TestWithSession)}__session 被禁用";
                if (Session["i"] == null)
                    Session["i"] = 0;
                    Session["i"] = (int)Session["i"] + 1;
                return Session["i"].ToString() ;
    
            }
    
            #endregion
    

      

     

     

     

    描述 别名

      [WebMethod(CacheDuration =10,EnableSession =true,Description ="测试cacheduration",MessageName ="CacheTest")]
            
            public  string TestCachaDuration()
            {
                if (Session["i"] == null)
                    Session["i"] = 0;
                Session["i"] = (int)Session["i"] + 1;
                return Session["i"].ToString();
            }
    

      

    事务:

       //首先引用using System.EnterpriseServices;,然后设置属性TransactionOption = TransactionOption.Required。
        //设置TransactionOption.Disabled、TransactionOption.NotSupported、TransactionOption.Supported表示不参与事务。
        ///设置TransactionOption.Required、TransactionOption.RequiresNew表示创建一个新的事务。
        ///意思是说当TransactionOption的属性为Required或 RequiresNew的WEB服务方法调用另一个TransactionOption的属性为Required或RequiresNew的WEB服务方法时,
        ///每个WEB服务方法将参与他们自己的事务,因为Web Service方法只能用作事务中的根对象。
        //PS:WEB服务方法的TransactionOption默认属性为Disabled
        //提交事务ContextUtil.SetComplete();
        //回滚事务ContextUtil.SetAbort();
        [WebMethod(TransactionOption = TransactionOption.Required)]
        public string HelloWorlds()
        {
            try
            {
                SqlConnection con = new SqlConnection("server=.;uid=sa;pwd=sa;database=db.mdf;");
                SqlCommand cmd = new SqlCommand("update users set name = 'yangxing' where id = 5", con);
                con.Open();
                cmd.ExecuteNonQuery();
                cmd.CommandText = "update users1 set name = 'yangxing1' where id = 6";//users1表不存在,执行该语句报错
                cmd.ExecuteNonQuery();//抛出异常
                ContextUtil.SetComplete();//提交事务
                return "true";
            }
            catch
            {
                ContextUtil.SetAbort();//回滚事务
                return "false";
            }
        }
    

      

      [WebMethod(CacheDuration =10,EnableSession =true,Description ="测试cacheduration",MessageName ="CacheTest")]                public  string TestCachaDuration()        {            if (Session["i"] == null)                Session["i"] = 0;            Session["i"] = (int)Session["i"] + 1;            return Session["i"].ToString();        }

  • 相关阅读:
    例题6-8 Tree Uva548
    例题6-7 Trees on the level ,Uva122
    caffe Mac 安装
    Codeforces Round #467 (Div. 1) B. Sleepy Game
    Educational Codeforces Round37 E
    Educational Codeforces Round 36 (Rated for Div. 2) E. Physical Education Lessons
    Good Bye 2017 E. New Year and Entity Enumeration
    Good Bye 2017 D. New Year and Arbitrary Arrangement
    Codeforces Round #454 D. Seating of Students
    浙大紫金港两日游
  • 原文地址:https://www.cnblogs.com/hnzheng/p/12727310.html
Copyright © 2011-2022 走看看