大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

Web Service序列化和反序列化

更新時(shí)間:2020-09-22 17:20:32 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1228次

 

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

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

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); }//定義擴(kuò)展soap的類型

}

}

這個(gè)SoapExtensionAttribute抽象類定義如下:

protected SoapExtensionAttribute();

// 返回結(jié)果:

// SOAP 擴(kuò)展的 System.Type。

public abstract Type ExtensionType { get; }

// 返回結(jié)果:

// SOAP 擴(kuò)展的優(yōu)先級(jí)。

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

public abstract int Priority { get; set; }

//以下為擴(kuò)展的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)

{

}

//這個(gè)override的方法會(huì)被調(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("認(rèn)證失敗", SoapException.ClientFaultCode);

}

}

}

}

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

public CertficateSoapHeader soapHeader;

[ExtensionAttribute]

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

[WebMethod]

public string HelloWorld()

{

return "Hello World";

}

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

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


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲精品一区二区在线播放 | 国产综合色在线视频播放线视 | 九九热最新视频 | 久久国产视频网站 | 九九色| 亚洲国产最新在线一区二区 | 我要看欧美一级毛片 | 99re6这里有精品热视频在线 | 久久www免费人成精品 | 亚洲精品久久久久午夜 | 国产免费一区二区三区免费视频 | 久久精品免费一区二区三区 | 国产一区在线观看免费 | 日本中文字幕一区二区有码在线 | 高清国产在线 | 日韩美视频网站 | 日本老太做爰xx | 第一序列番外篇在哪里看 | 福利一区视频 | 伊在人亚洲香蕉精品区麻豆 | 九九视频国产 | 久久亚洲国产成人影院 | 日本久久久久亚洲中字幕 | 色综合天天 | 日本猛妇色xxxxx在线 | 国产伊人久久 | 亚洲天堂二区 | 欧美亚洲图区 | 国产夜色 | 精品国产高清毛片 | 精品久久天干天天天按摩 | 日韩午夜小视频 | 99热在线播放 | 最新91在线| 欧美日韩在线视频播放 | 999在线视频| 免费又爽又黄禁片视频在线播放 | 色狠狠xx| 国产成人精品视频播放 | 欧美一区二区三区免费视频 | 日韩高清性爽一级毛片免费 |