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

道。道。道

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

   :: 首頁(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>
            久久久久久一区二区三区| 亚洲国内精品| 午夜精品美女自拍福到在线| 欧美国产日韩视频| 免费观看成人| 欧美激情二区三区| 日韩亚洲国产精品| 性久久久久久久| 久久大综合网| 欧美成人视屏| 欧美色视频日本高清在线观看| 欧美网站大全在线观看| 国产老女人精品毛片久久| 欲香欲色天天天综合和网| 亚洲精品久久久久久下一站 | 亚洲国产欧美一区二区三区久久| 亚洲国产精品久久久久婷婷老年| 日韩天堂av| 亚洲一区二区三区高清不卡| 欧美一区二区三区免费观看视频| 久久精品在这里| 欧美激情小视频| 宅男噜噜噜66一区二区66| 久久精品在线观看| 欧美精品乱人伦久久久久久| 国产欧美日韩免费| 亚洲精品国产精品乱码不99按摩| 一区二区三区成人精品| 久久男人资源视频| 一区二区三区视频在线播放| 久久精品一区二区三区不卡牛牛 | 国产精品美女999| 91久久久久久久久| 欧美在线视频观看免费网站| 亚洲人成绝费网站色www| 日韩午夜av在线| 久久久噜久噜久久综合| 国产精品日本精品| 一区二区三区日韩在线观看| 美女视频一区免费观看| 午夜精品免费在线| 欧美肉体xxxx裸体137大胆| 在线观看成人小视频| 欧美在线网站| 亚洲一区二区三区四区中文| 欧美女人交a| 亚洲精品九九| 亚洲国产精品999| 久久蜜桃香蕉精品一区二区三区| 国产日韩欧美成人| 午夜精品短视频| 中国成人黄色视屏| 欧美精品在线观看一区二区| 亚洲日本成人在线观看| 欧美大片一区二区| 久久嫩草精品久久久精品一| 激情综合电影网| 久久久久99精品国产片| 欧美一区二区三区日韩| 国产欧美一区二区精品忘忧草| 亚洲欧美卡通另类91av| 亚洲性夜色噜噜噜7777| 国产精品二区二区三区| 亚洲欧洲99久久| 亚洲欧美一区二区激情| 国产一区二区欧美| 久久免费国产| 久久青青草综合| 亚洲高清三级视频| 欧美成年人视频网站| 麻豆精品视频在线观看| 亚洲精品一线二线三线无人区| 亚洲国产精品一区二区久| 欧美激情中文不卡| 亚洲一区二区三区色| 久久久久免费观看| 久久婷婷国产综合尤物精品| 欧美一区二区在线看| 国内精品嫩模av私拍在线观看| 久久三级福利| 欧美+日本+国产+在线a∨观看| 亚洲精一区二区三区| 国产精品99久久99久久久二8 | 亚洲一区二区三区在线看| 亚洲天堂偷拍| 一区二区三区在线视频免费观看| 欧美a级大片| 欧美日韩综合在线| 久久久国产91| 欧美日韩国产限制| 久久精品国产77777蜜臀| 久久手机免费观看| 亚洲自拍偷拍福利| 久久综合久久综合久久| 亚洲午夜精品一区二区三区他趣| 午夜亚洲伦理| 一道本一区二区| 欧美一区综合| 99这里只有久久精品视频| 午夜精品免费在线| 99精品国产在热久久婷婷| 亚洲欧美日韩国产中文| 亚洲精品一区二区网址| 欧美中文字幕视频| 中文国产成人精品| 久久久亚洲影院你懂的| 亚洲欧美视频在线观看| 久久久久久久91| 亚洲欧美激情诱惑| 欧美乱人伦中文字幕在线| 久久久久综合网| 欧美午夜在线一二页| 欧美/亚洲一区| 国产精品女主播一区二区三区| 欧美激情第三页| 伊人精品视频| 欧美一级视频精品观看| 夜夜嗨av一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 亚洲制服av| 欧美日韩亚洲精品内裤| 亚洲国产成人午夜在线一区 | 欧美激情第9页| 欧美成人精品在线观看| 国产一区二区三区精品久久久| 亚洲人成在线播放| 亚洲国产专区| 久久综合五月| 噜噜噜91成人网| 国产亚洲精品bv在线观看| 亚洲一卡久久| 亚洲综合首页| 欧美日韩在线不卡| 国产精品视频免费在线观看| 久久精品最新地址| 欧美日韩国产综合视频在线观看| 欧美二区在线| 亚洲国产二区| 免费不卡在线视频| 欧美高清成人| 亚洲精品在线一区二区| 女人色偷偷aa久久天堂| 欧美大片免费久久精品三p | 老司机一区二区三区| 国产老女人精品毛片久久| 亚洲精品国产精品国自产观看| 久久精品首页| 亚洲日本欧美天堂| 午夜精品999| 国产精品免费一区豆花| 亚洲精品国产拍免费91在线| 欧美成人午夜77777| 免费观看一区| 亚洲天堂av在线免费| 亚洲欧美日韩国产成人| 亚洲欧美大片| 欧美国产日韩一区二区三区| 国产视频一区二区在线观看| 亚洲精品一区久久久久久| 免费成人av在线| 亚洲激情视频网| 欧美色大人视频| 亚洲视频一区在线观看| 亚洲精品久久视频| 欧美精品久久久久久久免费观看| 国产精品亚洲综合久久| 在线成人av| 亚洲国产精品ⅴa在线观看| 亚洲国产欧美一区二区三区久久| 欧美一级播放| 欧美成年人视频| 亚洲小视频在线观看| 国产美女精品| 美女久久一区| 亚洲综合国产激情另类一区| 久久综合999| 99国产一区二区三精品乱码| 国产精品一区视频网站| 嫩草国产精品入口| 亚洲永久精品大片| 欧美大片va欧美在线播放| 亚洲欧美日韩一区二区三区在线观看| 国产一区999| 欧美日韩妖精视频| 久久久久久久尹人综合网亚洲| 久久综合久色欧美综合狠狠| 一区二区三区免费在线观看| 国产欧美日韩视频在线观看| 欧美电影在线观看完整版| 亚洲永久在线| 亚洲人成免费| 欧美成人一区二区| 欧美一区二区三区免费在线看 | 亚洲国产成人精品久久久国产成人一区| 亚洲欧美韩国| 韩国欧美国产1区| 久久久久免费视频| 亚洲欧美国内爽妇网| 美女诱惑黄网站一区| 久久激五月天综合精品|