青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

道。道。道

安全特性不等于安全的特性

   :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理

常用鏈接

搜索

  •  

最新評(píng)論

添加Web引用的時(shí)候,WebService在客戶端有一個(gè)代理,如下:
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Web.Services", "2.0.50727.42")]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Web.Services.WebServiceBindingAttribute(Name="WebService1Soap", Namespace="http://tempuri.org/")
   public partial class WebService1 : System.Web.Services.Protocols.SoapHttpClientProtocol
 
客戶端調(diào)用WebServivce就是通過(guò)這個(gè)代理類來(lái)調(diào)用的。
 
2.       調(diào)用WebService方法,客戶端和服務(wù)器端通信是Xml,所以代理類跟Xml之間就有序列化和反序列化的過(guò)程
3.       客戶端調(diào)用WebService的過(guò)程如下
a)         客戶端調(diào)用代理類Hello world方法
string str = (new Service2.WebService1()).HelloWorld ();
b)         代理類調(diào)用基類SoapHttpClientProtocal的Invoke方法
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/HelloWorld0766", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public string HelloWorld() {
            object[] results = this.Invoke("HelloWorld", new object[0]);
            return ((string)(results[0]));
        }
c)         SoapHttpClientProtocal進(jìn)行Soap序列化Soap頭和方法,都是這個(gè)類自己做的,但是輸入?yún)?shù)和返回值,是利用的XmlSerializer,輸入?yún)?shù)要序列化,返回值要反序列化。
        protected object[] Invoke(string methodName, object[] parameters)
        {
                
                try
                {
                    message1.SetStream(stream1);
                    this.Serialize(message1);//注1
                }
               
                response1 = this.GetWebResponse(request1);
                Stream stream2 = null;
                try
                {
                    stream2 = response1.GetResponseStream();
                    objArray1 = this.ReadResponse(message1, response1, stream2, false);//注2
                }
          }
         
          注1:this.Serialize中有一句參數(shù)序列化的代碼如下
          method1.parameterSerializer.Serialize(writer1, message.GetParameterValues(), null, flag1 ? text2 : null);
          注2:this.ReadResponse中有一句返回值的反序列化的代碼如下
          message.SetParameterValues((object[]) method1.returnSerializer.Deserialize(reader1, flag1 ? text1 : null));
d)         XmlSerializer會(huì)緩存臨時(shí)程序集,這個(gè)程序集作用是序列化和反序列化,如果緩存中沒(méi)有會(huì)調(diào)用TempAssembly產(chǎn)生一個(gè)
 
Static的緩存(就是我們每次調(diào)用慢的罪魁禍?zhǔn)祝?/span>private static TempAssemblyCache cache;
獲取緩存中的程序集:this.tempAssembly = XmlSerializer.cache[defaultNamespace, type];
緩存中沒(méi)有就去加載:Assembly assembly1 = TempAssembly.LoadGeneratedAssembly(type, defaultNamespace, out implementation1);
加載沒(méi)有就去產(chǎn)生(會(huì)生成臨時(shí)文件并編譯,很慢):
this.tempAssembly = new TempAssembly(new XmlMapping[] { this.mapping }, assembly1, implementation1);
 
e)         TempAssemlby這個(gè)類負(fù)責(zé)加載以及產(chǎn)生臨時(shí)程序集
LoadGeneratedAssemlby方法中,有一段邏輯,就是默認(rèn)去加載序列化類,這個(gè)類的命名是規(guī)則如下
        internal static string GetTempAssemblyName(AssemblyName parent, string ns)
        {
            return (parent.Name + ".XmlSerializers" + (((ns == null) || (ns.Length == 0)) ? "" : ("." + ns.GetHashCode())));
        }
       同時(shí),如果加載失敗會(huì)觸發(fā)AppDomain.CurrentDomain.AssemblyResolve事件
        
4.       結(jié)論
1)   WebService的序列化是調(diào)用XmlSerializer
 
2)   WebService慢,是因?yàn)楫a(chǎn)生序列化類慢,所謂的臨時(shí)文件都是XmlSerializer的中間代碼。可以在config文件中加入如下的配置,臨時(shí)序列化的文件就不會(huì)被刪除了,WinForm程序是*.exe.config,asp.net是web.config。
        <configuration>
  <system.diagnostics>
    <switches>
      <add name="XmlSerialization.Compilation" value="4"/>
    </switches>
  </system.diagnostics>
</configuration>
 
臨時(shí)文件在C:\Documents and Settings\抹布\Local Settings\Temp下,注意,因?yàn)槊Q是隨機(jī)的,序列化的dll文件,并不能重用,重開進(jìn)程會(huì)重新生成。
3)   如果自定義序列化類,可以跳過(guò)產(chǎn)生臨時(shí)序列化的步驟,大大提高第一次加載的速度,也就是說(shuō),只要有一個(gè)
程序集名稱+.XmlSerializers”的序列化類存在,就不會(huì)動(dòng)態(tài)生成序列化程序集了。
 
4)   在代理類上可以加
[System.Xml.Serialization.XmlSerializerAssemblyAttribute(AssemblyName = "TestPerformance.XmlSerializers")]
指定Xml序列化的類,這個(gè)序列化的類可以通過(guò)一個(gè)工具產(chǎn)生,
但是根據(jù)研究TempAssemlby的LoadGeneratedAssemlby代碼發(fā)現(xiàn),這個(gè)Attribute可以不加的,只要你有一個(gè)GetTempAssemblyName返回值一樣的名稱的序列化類即可。
 
5)   根據(jù)加載失敗會(huì)觸發(fā)AppDomain.CurrentDomain.AssemblyResolve事件,可以在加載失敗后動(dòng)態(tài)產(chǎn)生序列化類,如下。
        http://support.microsoft.com/kb/872800/zh-cn,請(qǐng)參考這個(gè)kb
      private void Form1_Load(object sender, EventArgs e)
        {
            AppDomain.CurrentDomain.AssemblyResolve +=
                new ResolveEventHandler(MyResolveEventHandler);
        }
 
        static Assembly MyResolveEventHandler(object sender, ResolveEventArgs args)
        {
            Assembly a = null;
            string[] arr = args.Name.Split(new string[] { "." }, StringSplitOptions.None);
            if (args.Name.IndexOf("XmlSerializers") >= 0)
            {
                if (!System.IO.File.Exists(args.Name + ".dll"))
                    PreGenNS.Pregen.Generate(new string[] { arr[0] });
                string sSerializersDLL = args.Name + ".dll";
                string smartDeploymentHostLocation = "";
                a = Assembly.LoadFrom(smartDeploymentHostLocation + sSerializersDLL);
            }
            return a;
        }
6)VS2005利用Release編譯,會(huì)產(chǎn)生AssemblyName+"XmlSerializer.dll"的序列化文件,可以隨著客戶端一起部署,跟5這種方式不太一樣,可以根據(jù)實(shí)際情況來(lái)選擇。
利用5這種方式,是第一次調(diào)用WebService時(shí),動(dòng)態(tài)生成序列化類;而6是在軟件發(fā)布時(shí),生成這個(gè)類,并部署到客戶端。
posted on 2007-11-07 15:35 獨(dú)孤九劍 閱讀(3651) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Learn articles
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美a级一区二区| 亚洲第一福利视频| 国产精品免费观看在线| 亚洲一区综合| 亚洲精品久久7777| 欧美另类一区二区三区| 亚洲丶国产丶欧美一区二区三区| 亚洲视频免费在线观看| 亚洲乱码国产乱码精品精可以看 | 国产亚洲在线| 久久米奇亚洲| 亚洲精品中文字幕在线| 久久久久久久综合色一本| 欧美+日本+国产+在线a∨观看| 亚洲午夜视频在线观看| 国产欧美日韩精品专区| 亚洲免费av片| 久久超碰97人人做人人爱| 国产午夜亚洲精品羞羞网站| 亚洲人线精品午夜| 99www免费人成精品| 亚洲欧美激情四射在线日| 国产一区二区三区免费不卡| 国产精品www网站| 久久久亚洲国产美女国产盗摄| 欧美亚洲免费| 亚洲私人影院| 亚洲免费观看在线观看| 久久亚洲捆绑美女| 欧美影院在线播放| 亚洲国产欧美日韩精品| 欧美视频中文一区二区三区在线观看| 欧美日韩精品三区| 欧美风情在线观看| 欧美大片18| 欧美一区在线视频| 久久精品国产第一区二区三区| 欧美性开放视频| 一本久久综合| 久久成人国产| 欧美一区二区三区啪啪| 久久久久国产精品www| 久久疯狂做爰流白浆xx| 欧美国产日韩二区| 久久久久久久久蜜桃| 欧美在线一区二区| 鲁大师影院一区二区三区| 亚洲成人在线视频播放| 久久影院亚洲| 欧美好骚综合网| 韩国三级电影一区二区| 亚洲午夜在线视频| 亚洲精华国产欧美| 久久久视频精品| 国产日韩欧美91| 午夜视频在线观看一区二区| 99视频精品| 欧美日韩国产免费| 9色国产精品| 亚洲国产精品一区二区www| 久久成人精品电影| 国产日韩在线看| 欧美在线你懂的| 欧美在线不卡| 国产一区二区三区日韩欧美| 香蕉亚洲视频| 欧美一区二区观看视频| 国产一区二区丝袜高跟鞋图片| 亚洲免费高清视频| 久久一区二区视频| 亚洲东热激情| 欧美激情国产日韩精品一区18| 亚洲精选一区| 亚洲精品一区二| 亚洲欧美综合精品久久成人| 最新亚洲视频| 欧美在线黄色| 亚洲一区二区三区涩| 亚洲国产日韩欧美在线图片| 女人色偷偷aa久久天堂| 欧美特黄a级高清免费大片a级| 久久久噜噜噜久久人人看| 欧美视频日韩| 亚洲大胆人体在线| 国产欧美婷婷中文| 亚洲茄子视频| 一区二区欧美国产| 欧美激情综合| 在线综合亚洲| 性欧美超级视频| 国产日韩欧美成人| 久久成人免费| 欧美69wwwcom| 亚洲天堂av在线免费观看| 欧美精品一区二区三区在线播放| 久久精品道一区二区三区| 欧美一级淫片播放口| 久久免费精品日本久久中文字幕| 国产午夜精品理论片a级大结局 | 亚洲大胆人体视频| 狠狠综合久久av一区二区小说| 午夜精品久久久久久久白皮肤 | 欧美一区二区福利在线| 欧美激情精品久久久久久大尺度 | 亚洲精品在线电影| 欧美午夜精品理论片a级按摩| 亚洲无限av看| 午夜激情久久久| 国产精品黄视频| 欧美一区二区精品在线| 久久青青草综合| 一本久久青青| 一区二区久久久久| 欧美成人r级一区二区三区| 9国产精品视频| 国产一区二区三区成人欧美日韩在线观看 | 国产综合网站| 欧美在线|欧美| 午夜精品在线看| 国产精品99久久久久久白浆小说| 艳妇臀荡乳欲伦亚洲一区| 欧美日韩不卡视频| 亚洲网站在线| 美女露胸一区二区三区| 亚洲乱码国产乱码精品精可以看| 欧美91精品| 在线视频精品一区| 亚洲一级影院| 国产一区二区欧美日韩| 免费成人性网站| 亚洲精品一区二区三区婷婷月| 99re6热只有精品免费观看| 久久gogo国模裸体人体| 国产一区二区三区免费在线观看| 欧美成人免费全部观看天天性色| 亚洲婷婷综合久久一本伊一区| 国产在线欧美| 国产欧美一区二区精品性色| 欧美理论电影在线播放| 久久综合伊人77777麻豆| 在线性视频日韩欧美| 欧美一进一出视频| 国产精品午夜久久| 欧美精品激情| 欧美区二区三区| 欧美日韩视频不卡| 国产精品久线观看视频| 国产精品看片资源| 国产一区二区三区观看| 国产在线精品自拍| 亚洲日本久久| 亚洲欧美国产毛片在线| 午夜精品久久| 久久久久久网| 亚洲国产美女久久久久| 亚洲盗摄视频| 一区二区三区产品免费精品久久75| 亚洲福利小视频| 国产精品99久久久久久久vr| 亚洲丁香婷深爱综合| 亚洲国产高清在线| 99re国产精品| 久久综合精品国产一区二区三区| 欧美国产成人精品| 亚洲无线一线二线三线区别av| 久久国产日本精品| 亚洲欧美日韩在线| 欧美成年人视频网站| 国产精品伦一区| 亚洲欧洲在线播放| 狠狠色伊人亚洲综合网站色| 国产亚洲一级| 亚洲欧美国产精品专区久久| 亚洲国产精品成人一区二区| 欧美在线视频播放| 欧美日韩综合在线| 亚洲午夜在线视频| 亚洲美女在线视频| 久久视频一区| 激情欧美亚洲| 久久国产夜色精品鲁鲁99| 99精品热视频| 国产精品久久久久久久久免费樱桃| 狠狠爱成人网| 亚洲精品久久久久久久久久久 | 欧美r片在线| 久久女同精品一区二区| 欧美一区二区精品久久911| 你懂的网址国产 欧美| 在线看欧美视频| 老司机精品视频一区二区三区| 欧美一区二区三区免费视| 国产一区二区三区四区在线观看| 久久精品一区二区三区不卡牛牛| 亚洲福利国产| 欧美日精品一区视频| 久久久成人精品| 久久精品免费电影| 在线视频欧美日韩精品| 欧美一区二区视频97|