黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Web Service序列化和反序列化

Web Service序列化和反序列化

更新時間:2020-09-22 17:20:32 來源:動力節(jié)點 瀏覽1208次

 

在此之前,我們已經(jīng)學(xué)過不少程序的序列化和反序列化,而且對序列化和反序列化的概念已經(jīng)了然于心。通俗來講,序列化就是把內(nèi)存里面的這些對象給變成一連串的字節(jié)描述的過程,反序列化則反之。本文我們就一起來學(xué)習(xí)和探究Web Service序列化和反序列化

在Web Service中,SoapExtension和SoapExtensionAttribute兩個類用于控制Web Service序列化和反序列化的一般過程,可對Web Service進行壓縮和日志等功能進行控制,同時還具有對整個Web Service傳輸?shù)膚sdl進行壓縮的功能。

SoapExtensionAttribute類:

public class ExtensionAttribute:SoapExtensionAttribute

{

int _priority = 1;

public override int Priority

{

get

{

return _priority;

}

set

{

_priority = value;

}

}

public override Type ExtensionType

{

get { return typeof(MyExtension); }//定義擴展soap的類型

}

}

這個SoapExtensionAttribute抽象類定義如下:

protected SoapExtensionAttribute();

// 返回結(jié)果:

// SOAP 擴展的 System.Type。

public abstract Type ExtensionType { get; }

// 返回結(jié)果:

// SOAP 擴展的優(yōu)先級。

SOAP 擴展分配優(yōu)先級,該優(yōu)先級有助于確定當(dāng)配置多個 SOAP 擴展以便使用 XML Web 服務(wù)方法時執(zhí)行的相對順序。SOAP 擴展的優(yōu)先級越高,它的執(zhí)行與通過網(wǎng)絡(luò)發(fā)送或接收 SOAP 消息越近。SOAP 擴展屬于三個優(yōu)先級組中的任意一個。在每個組內(nèi),priority 屬性區(qū)別每個成員。priority 屬性越低,相對優(yōu)先級就越高(0 是最高的)。

public abstract int Priority { get; set; }

//以下為擴展的soapextension類

public class MyExtension:SoapExtension

{

public override object GetInitializer(Type serviceType)

{

return GetType();

}

public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)

{

return null;

}

public override void Initialize(object initializer)

{

}

//這個override的方法會被調(diào)用四次

//分別是SoapMessageStage的BeforeSerialize,AfterSerialize,BeforeDeserialize,AfterDeserialize

public override void ProcessMessage(SoapMessage message)

{

if (message.Stage == SoapMessageStage.AfterDeserialize) //反序列化后處理

{

bool check = false;

foreach (SoapHeader header in message.Headers)

{

if (header is CertficateSoapHeader)

{

CertficateSoapHeader myHeader = (CertficateSoapHeader)header;

if (myHeader.UserName == null || myHeader.PassWord == null)

{

break;

}

if (myHeader.UserName.Equals("LY") && myHeader.PassWord.Equals("LY"))

{

check = true;

break;

}

}

}

if (!check)

{

throw new SoapHeaderException("認證失敗", SoapException.ClientFaultCode);

}

}

}

}

通過SoapMessage中的stream可以獲取發(fā)送和收到的流數(shù)據(jù),上面的功能實現(xiàn)了soapheader的權(quán)限認證,實現(xiàn)上面的類后,我們就不需要在webmethod中進行判斷,只需要加入相關(guān)的屬性即可,如:

public CertficateSoapHeader soapHeader;

[ExtensionAttribute]

[SoapHeader("soapHeader",Direction=SoapHeaderDirection.In)]

[WebMethod]

public string HelloWorld()

{

return "Hello World";

}

客戶端的調(diào)用和前面一樣,可見在Web Service中soapextension中的ProcessMessage就相當(dāng)于一個攔截器,能對進入webmethod的stream進行相關(guān)的截獲。

綜上所述,Web Service序列化和反序列化依賴于SoapExtension和SoapExtensionAttribute兩個類。熟悉和熟練使用SoapExtension類和SoapExtensionAttribute類是我們掌握Web Service序列化和反序列化的關(guān)鍵所在。


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 天天操夜夜骑 | 黑人精品videossex黑人 | 久久综合九色综合97婷婷女人 | 97影院理伦在线观看 | 麻豆久久久久久久 | 成人二区| 中文字幕在线导航 | 日韩欧美亚洲中字幕在线播放 | 欧美激情一区二区三级高清视频 | 一插综合网 | 澳门一级毛片手机在线看 | 日本波多野结衣在线 | 人人澡人人射 | 久久久精品国产免费观看同学 | 日本激情在线看免费观看视频 | 99精品视频在线免费观看 | 国产精品日韩专区 | 欧美成人午夜影院 | 国产精品18久久久久网站 | 国产一级特黄高清在线大片 | 久久综合色婷婷 | 草草视频手机在线观看视频 | 欧美一级看片 | 亚洲精品人成网在线播放影院 | 日本国产在线观看 | 天天色综合社区 | 欧美日本视频在线观看 | 一区二区在线看 | 亚洲国产女人aaa毛片在线 | 成人精品一区久久久久 | 欧美日韩国产剧情 | 最近的免费中文字幕视频 | 蕾丝视频永久在线入口香蕉 | 久 在线播放 | 欧美日韩精品高清一区二区 | 最近2019免费中文字幕视频三 | 999成人精品视频在线 | 亚洲成a人片在线观看播放 亚洲成精品动漫久久精久 亚洲大尺度 | 香港成人网 | 天天操一操 | 影院亚洲 |