日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载

發(fā)布時(shí)間:2025/5/22 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
MTOM消息優(yōu)化傳輸機(jī)制主要應(yīng)用于大量數(shù)據(jù)的傳輸,很多文章中也直接得出結(jié)論:使用MTOM文件傳輸效率高。為什么MTOM的數(shù)據(jù)傳輸效率會(huì)比別的方式要高?MTOM真的如此完美嗎,它有什么不足?什么情況下使用MTOM?這些疑問(wèn),本文WSE3.0構(gòu)建Web服務(wù)安全系列文章的第4節(jié):MTOM消息優(yōu)化傳輸機(jī)制和文件上傳、下載--將為您一一解答。本節(jié)結(jié)構(gòu)為1.MTOM基礎(chǔ)概念2.WSE3.0工具配置MTOM3.代碼實(shí)現(xiàn)與分析4.總結(jié)。最后附上實(shí)現(xiàn)代碼供大家參考。 WSE3.0中引入MTOM機(jī)制,給我們借助WSE框架實(shí)現(xiàn)大量數(shù)據(jù)的交互帶來(lái)顯著的益處。在WSE 3.0中,我們可以使用MTOM用于服務(wù)器端和客戶(hù)端傳遞消息,另外的好處就是,WSE 3.0M允我們?cè)趥鬟f大數(shù)據(jù)量時(shí)使用WSE 3.0消息層的安全性機(jī)制,借助WSE3.0的安全框架,我們不僅可以驗(yàn)證用戶(hù)的合法性,還可以對(duì)消息進(jìn)行加密,不僅能夠保證數(shù)據(jù)的安全,還可以實(shí)現(xiàn)大數(shù)據(jù)量的高效傳輸。
??? 1.【MTOM基礎(chǔ)概念】 提到MTOM消息優(yōu)化傳輸機(jī)制,通常的實(shí)驗(yàn)結(jié)果是使用MTOM傳輸數(shù)據(jù)會(huì)提高大約33%的性能。 消息傳輸優(yōu)化機(jī)制 (MTOM) 標(biāo)準(zhǔn)允許將消息中包含的大型數(shù)據(jù)元素外部化,并將其作為無(wú)任何特殊編碼的二進(jìn)制數(shù)據(jù)隨消息一起傳送。MTOM 消息會(huì)打包為多部分/相關(guān) MIME 序列,放在SOAP 消息中一起傳送。 我們需要了解一些相關(guān)的概念。什么是BASE64編碼、MTOM消息優(yōu)化傳輸機(jī)制、MIME。這些對(duì)于我們理解MTOM消息優(yōu)化傳輸機(jī)制問(wèn)題非常的必要。下面就來(lái)做下介紹。 1.1【BASE64編碼】 BASE64編碼 的原理很簡(jiǎn)單,其方法是,將輸入數(shù)據(jù)流每次取6 bit(每bit代表1位二進(jìn)制),不足6bit的補(bǔ)0,這樣,每3個(gè)8位字節(jié)將編碼為4個(gè)6位字節(jié)(3×8 → 4×6);不滿4個(gè)字節(jié)的以“=”填充。其實(shí)這4個(gè)六位字節(jié) 仍然是8位,只不過(guò)高兩位被設(shè)置為0。當(dāng)一個(gè)字節(jié)只有6位有效時(shí),它的取值空間為0 到 2的6次方減1 即63,也就是說(shuō)被轉(zhuǎn)換的Base64編碼的每一個(gè)編碼的取值空間為(0~63)。 這樣就可以將3個(gè)8位字節(jié),轉(zhuǎn)換為4個(gè)字節(jié),這4個(gè)轉(zhuǎn)換的字節(jié)都可以映射到字符中。也即數(shù)據(jù)都可以使用字符編碼代替。 因?yàn)檗D(zhuǎn)換后的字符串要比原來(lái)的多一個(gè)字節(jié),長(zhǎng)1/3。因此編碼后的數(shù)據(jù)長(zhǎng)度增加到4/3倍。這里也是為什么使用SOAP消息效率比MTOM低的原因。因?yàn)镾OAP使用XML語(yǔ)言進(jìn)行消息傳遞,XML是基于BASE64編碼的語(yǔ)言。 1.2【MIME】 ?????MIME表示多用途Internet郵件擴(kuò)允協(xié)議。MIME擴(kuò)允了基本的面向文本的Internet郵件系統(tǒng),以便可以在消息中包含二進(jìn)制附件。MIME(Multipurpose Internet Mail Extentions),一般譯作"多用途的網(wǎng)絡(luò)郵件擴(kuò)充協(xié)議"。顧名思義,它可以傳送多媒體文件。 MIME (Multipurpose Internet Mail Extensions,多目的Internet郵件擴(kuò)展)是創(chuàng)建用于電子郵件交換,網(wǎng)絡(luò)文檔,及企業(yè)網(wǎng)和Internet上的其他應(yīng)用程序中的文件格式的規(guī)范。 1.3【MTOM消息優(yōu)化傳輸】 MTOM 全稱(chēng)Message Transmission Optimization Mechanism,即消息傳輸優(yōu)化機(jī)制。它提出的模型適用于大量數(shù)據(jù)的交互情況。針對(duì)Base64編碼情況帶來(lái)的開(kāi)銷(xiāo)提出的解決方案。當(dāng)數(shù)據(jù)量小的時(shí)候,SOAP依然使用XML進(jìn)行消息的傳遞。 但是在大量數(shù)據(jù)情況下,如果數(shù)據(jù)依然進(jìn)行Base64編碼,會(huì)帶來(lái)33%的額外開(kāi)銷(xiāo),這樣的情況對(duì)于大量數(shù)據(jù)交換的情況是無(wú)法容忍的。MTOM 就是針對(duì)SOAP 消息傳輸?shù)幕A(chǔ)上提出的改進(jìn)辦法。對(duì)于大量數(shù)據(jù)的傳遞,不會(huì)進(jìn)行進(jìn)行Base64編碼,而是直接以附件的二進(jìn)制原始數(shù)據(jù)的形式封裝在SOAP消息的MIME 部分,進(jìn)行傳輸。SOAP 消息通過(guò)指向隨其發(fā)送的 MIME 部分來(lái)引用二進(jìn)制內(nèi)容,另外包括SOAP基本的XML 數(shù)據(jù),這些還是Base64編碼。因?yàn)榇四P团c簡(jiǎn)單郵件協(xié)議SMTP 模型基本一致。 MTOM通過(guò)簡(jiǎn)化大量數(shù)據(jù)的編碼過(guò)程,從而提高數(shù)據(jù)的處理效率。因?yàn)镾OAP消息等必要的信息,MTOM 也有一些必要的開(kāi)銷(xiāo)。MTOM僅在二進(jìn)制數(shù)據(jù)元素的大小超過(guò)大約 1 KB 時(shí),才能體現(xiàn)出其優(yōu)勢(shì)。 2.【W(wǎng)SE3.0工具配置MTOM】 在WSE3.0項(xiàng)目中使用MTOM消息傳輸優(yōu)化機(jī)制非常的方便,我們可以使用WSE 3.0配置工具分別為Web 服務(wù)和Client客戶(hù)端設(shè)置啟用MTOM,生成相應(yīng)的策略文件,WSE3.0機(jī)制會(huì)根據(jù)策略對(duì)消息傳輸使用MTOM(也可以通過(guò)代碼實(shí)現(xiàn)) 。 數(shù)據(jù)使用字節(jié)流byte[]數(shù)組在客戶(hù)端和服務(wù)端進(jìn)行傳輸,簡(jiǎn)單的例子就是消息的交互和文件的上傳和下載操作。本次配置基本介紹的情況也是借助WSE3.0的安全機(jī)制實(shí)現(xiàn)文件的安全傳輸。 2.1首先使用WSE 3.0配置工具設(shè)置服務(wù)端消息傳輸策略。如圖: 客戶(hù)端設(shè)置為on,要求客戶(hù)端使用MTOM機(jī)制進(jìn)行數(shù)據(jù)傳輸。服務(wù)端設(shè)置為Optional,表示可選,服務(wù)端既支持MTOM又可以不支持MTOM編碼的消息。適用性強(qiáng)。 此種情況即服務(wù)端會(huì)根據(jù)客戶(hù)端的請(qǐng)求類(lèi)型來(lái)決定是否啟用MTOM機(jī)制進(jìn)行數(shù)據(jù)傳遞.如果客戶(hù)端適用MTOM編碼,則服務(wù)會(huì)啟用MTOM處理消息。如果設(shè)置為Always,服務(wù)端會(huì)一直使用MTOM機(jī)制進(jìn)行消息的傳遞。一般不推薦使用這個(gè)方式。OFF即一直不使用MTOM機(jī)制進(jìn)行消息傳遞。64為最大附加二進(jìn)制文件的個(gè)數(shù)。最后表示需要首先使用SOAP消息封裝。 The optional mode is the default settings. In this mode the WSE processes the incoming SOAP messages whether or not they are MTOM encoded. This gives much more flexibility to web services that are not only dealing with large amount of data. With optional the client is the one who decide whether to use MTOM or not, if the client application request to use MTOM the web service will use MTOM. In always mode all incoming and outgoing SOAP messages must be MTOM encoded. When a SOAP request is received that is not encoded using MTOM, an HTTP error 415: "Media unsupported" is returned to the sender. This option is ideal for Web Services that only deal with large amount of data. In never mode all incoming SOAP messages must not be MTOM encoded. When a SOAP request is received that is encoded using MTOM, an HTTP error 415: "Media unsupported" is returned to the sender. That means the client application should never use MTOM. 對(duì)應(yīng)的配置文件為: ??? <messaging>
????? <mtom serverMode="optional" clientMode="On" />
??? </messaging>
2.2客戶(hù)端的設(shè)置與服務(wù)端類(lèi)似: 客戶(hù)端配置文件的代碼如下: ??? <messaging>
????? <mtom clientMode="On" serverMode="optional" />
??? </messaging>
3.【代碼實(shí)現(xiàn)與分析】 進(jìn)行完畢配置以后我們來(lái)具體進(jìn)入代碼的開(kāi)發(fā)階段。這里給出了使用MTOM上傳照片的例子,一個(gè)使用了證書(shū)加密圖片上傳。先給出服務(wù)端的實(shí)現(xiàn),包括兩個(gè)服務(wù)類(lèi):WSE3MTOMService和WSE3MTOMSecureService。方法都是二進(jìn)制字節(jié)數(shù)據(jù)流的傳遞。 3.1WSE3MTOMService直接實(shí)現(xiàn)基于MTOM機(jī)制的圖片上傳和下載方法,具體實(shí)現(xiàn)如下: //WSE 3.0 Samples中的MTOM示例演示了:不加密上傳、下載文件、
[WebService(Namespace = "http://www.cnblogs.com/frank_xl/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WSE3MTOMService : System.Web.Services.WebService
{
??? public WSE3MTOMService()
??? {
??? }
??? //此方法返回不加密的字節(jié)數(shù)組,下載文件
??? [WebMethod]
??? public byte[] DownLoadFile(string fileName)
??? {
??????? byte[] file = new byte[1024];
??????? String filePath = AppDomain.CurrentDomain.BaseDirectory + @"App_Data\" + fileName;
??????? file = File.ReadAllBytes(filePath);
??????? return file;
??? }
??? //上傳文件,傳回2進(jìn)制數(shù)據(jù)
??? [WebMethod]
??? public void UpLoadFile(byte[] file)
??? {
??????? String filePath = AppDomain.CurrentDomain.BaseDirectory + @"App_Data\" + "FrankXuLei.gif";
??????? if (File.Exists(filePath))
??????????? File.Delete(filePath);
??????? File.WriteAllBytes(filePath, file);
??? }
}
3.2WSE3MTOMSecureService定義了一個(gè)文件下載的方法。具體如下: //WSE 3.0 Samples中的MTOM示例演示了:加密上傳、下載文件、
[WebService(Namespace = "http://www.cnblogs.com/frank_xl/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//Returns binary data secured via the ServerPolicy in the wse3policyCache.config policy file
[Policy("ServerPolicy")]
public class WSE3MTOMSecureService : System.Web.Services.WebService
{
??? public WSE3MTOMSecureService()
??? {
??? }
??? //T通過(guò)服務(wù)端 X509 證書(shū)加密
??? // MTOM可以使用WS-Security安全協(xié)議.
??? [WebMethod]
??? public byte[] DownLoadFileWithSecurity(string fileName)
??? {
??????? byte[] file = null;
??????? String filePath = AppDomain.CurrentDomain.BaseDirectory + @"App_Data\" + fileName;
??????? file = File.ReadAllBytes(filePath);//從文件里讀取字節(jié)流
??????? return file;
??? }
}
3.3客戶(hù)端建立控制臺(tái)應(yīng)用程序,添加對(duì)Web服務(wù)的引用。實(shí)例化連個(gè)代理服務(wù)類(lèi),進(jìn)行文件的上傳和下載。具體代碼如下: //直接進(jìn)行數(shù)據(jù)傳輸,不需要加密
??????? public void DownLoadFile(String fileName)
??????? {
??????????? //實(shí)例化服務(wù)代理類(lèi)
??????????? WSE3MTOMServiceWse serviceproxy = new WSE3MTOMServiceWse();
??????????? //or alternatively set the RequireMtom property on the proxy
??????????? //serviceproxy.RequireMtom = true;
??????????? //獲取文件二進(jìn)制字節(jié)流
??????????? byte[] loadFile = serviceproxy.DownLoadFile(fileName);
??????????? //打印數(shù)據(jù)信息
??????????? Console.WriteLine("File Name: {0}", fileName);
??????????? Console.WriteLine("File has been downloaded without security sucessfully from Server: {0}", loadFile.Length);
??????????? //保存文件
??????????? String filePath = AppDomain.CurrentDomain.BaseDirectory + fileName;
??????????? Console.WriteLine("");
??????????? if (File.Exists(filePath))
??????????????? File.Delete(filePath);
??????????? File.WriteAllBytes(filePath, loadFile);
??????? }
??????? //安全方式下載文件
??????? public void DownLoadFileSecure(String fileName)
??????? {
???????????
??????????? WSE3MTOMSecureServiceWse serviceproxy = new WSE3MTOMSecureServiceWse();
??????????? //Set anonymousForCertificateSecurity policy assertion when calling
??????????? //this secure service
??????????? serviceproxy.SetPolicy("ClientPolicy");
??????????? byte[] loadFile = serviceproxy.DownLoadFileWithSecurity(fileName);
??????????? //打印數(shù)據(jù)信息
??????????? Console.WriteLine("File Name: {0}", fileName);
??????????? Console.WriteLine("File has been downloaded with security sucessfully from Server: {0}", loadFile.Length);
??????????? //保存文件
??????????? String filePath = AppDomain.CurrentDomain.BaseDirectory + "Secure_"+ fileName;
??????????? Console.WriteLine("");
??????????? if (File.Exists(filePath))
??????????????? File.Delete(filePath);
??????????????? File.WriteAllBytes(filePath, loadFile);
??????? }
??????? //測(cè)試非加密安全上傳文件
??????? public void UpLoadFile(String fileName)
??????? {
??????????? String filePath = AppDomain.CurrentDomain.BaseDirectory + fileName;
??????????? //實(shí)例化服務(wù)代理
??????????? WSE3MTOMServiceWse serviceproxy = new WSE3MTOMServiceWse();
??????????? //讀取文件數(shù)據(jù)
??????????? byte[] upFile = File.ReadAllBytes(filePath);
??????????? //調(diào)用方法傳輸數(shù)據(jù)
??????????? serviceproxy.UpLoadFile(upFile);
??????????? //輸出上傳文件信息
??????????? Console.WriteLine("File Name: {0}", fileName);
??????????? Console.WriteLine("File has been uploaded sucessfully from Client: {0}", upFile.Length);
??????? }
運(yùn)行結(jié)果如圖: 首先是上傳一個(gè)文件到服務(wù)器端,然后進(jìn)行下載操作。均顯示成功。可以在程序的運(yùn)行目錄下找到下載的新文件。 4.【總結(jié)】 通過(guò)以上的介紹和學(xué)習(xí),我們知道了一下結(jié)論: 1.MTOM機(jī)制會(huì)效率提升1/3.原因:正常文本 XML 使用 Base64 對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行編碼,這要求每三個(gè)字節(jié)對(duì)應(yīng)四個(gè)字符,從而使得數(shù)據(jù)的大小增加三分之一。MTOM 能夠以原始字節(jié)形式傳輸二進(jìn)制數(shù)據(jù),這會(huì)縮短編碼/解碼時(shí)間并生成較小的消息。 2.使用的場(chǎng)合:MTOM適合大量的數(shù)據(jù)交換,通常是大量數(shù)據(jù)情況下才有優(yōu)勢(shì), 如上傳文檔和圖片,目的在于優(yōu)化對(duì)較大的二進(jìn)制負(fù)載的傳輸。 3.缺陷:對(duì)于較小的二進(jìn)制負(fù)載來(lái)說(shuō),使用 MTOM 發(fā)送 SOAP 消息會(huì)產(chǎn)生顯著的開(kāi)銷(xiāo)。 另外提供本文的代碼下載。以供大家學(xué)習(xí)參考,代碼下載連接/Files/frank_xl/WSE3MTOM_FrankXuLei.rar。如有意見(jiàn)也歡迎交流~ Web服務(wù)駐留在IIS外,可以由系統(tǒng)服務(wù)、控制臺(tái)程序等托管的方式比較簡(jiǎn)單,大家可以參考微軟的例子,這個(gè)WCF里也有類(lèi)似的寄宿宿主的概念。其實(shí)有許多相似之處。 最后在準(zhǔn)備《WSE3.0構(gòu)建Web服務(wù)安全》系列文章的過(guò)程中,我也收獲不少,也希望本系列文能給您的學(xué)習(xí)帶來(lái)一些幫助。包括我之前的《WCF分布式開(kāi)發(fā)必備知識(shí)》系列都是學(xué)習(xí)WCF分布式重要知識(shí)點(diǎn)的總結(jié)。并且全部給出了詳細(xì)的代碼實(shí)現(xiàn)和注釋。方便大家的學(xué)習(xí)和實(shí)際項(xiàng)目的應(yīng)用。下面我們將正式進(jìn)入WCF分布式開(kāi)發(fā)的學(xué)習(xí)階段,我會(huì)繼續(xù)給出系統(tǒng)的介紹和詳細(xì)的實(shí)現(xiàn)代碼。希望有興趣的朋友繼續(xù)關(guān)注~謝謝 1.WSE3.0安全機(jī)制與實(shí)例開(kāi)發(fā) 2.非對(duì)稱(chēng)加密、公鑰、密鑰、證書(shū)、簽名的區(qū)別和聯(lián)系以及X.509 證書(shū)的獲得和管理 3.WSE3.0策略配置、證書(shū)、簽名、與實(shí)例開(kāi)發(fā) 參考資料: 1.BASE64編碼基于十進(jìn)制的實(shí)現(xiàn)方法 2.MTOM編碼 MSDN

總結(jié)

以上是生活随笔為你收集整理的WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产视频网站在线观看 | 色播五月激情五月 | 日韩精品一区二区三 | 亚洲AV成人无码久久精品巨臀 | 日本伦理片在线看 | 久久这里只精品 | 久久精品人人 | 日本一区欧美 | 香港黄色网 | 越南av| 国产一级免费看 | 黄色一级片av | 看个毛片 | 成人在线观看免费 | 韩日精品中文字幕 | 精品国产一区二区三区在线 | 七月色| 91视频最新入口 | 午夜免费福利影院 | 日韩福利电影在线 | 日本久久久久久 | 国内自拍区 | 亚洲综合情 | 美女被揉胸视频 | 欧美性猛交xxxx乱大交蜜桃 | 特级毛片在线观看 | 中国人妖和人妖做爰 | 日韩不卡一区二区三区 | 天堂va欧美ⅴa亚洲va一国产 | 伊人久久精品视频 | 在线观看日批视频 | 久久偷拍免费视频 | 欧美成人三级在线观看 | 最近中文字幕在线观看 | 国产女主播av | 精品一区二区三区在线免费观看 | 欧美三级网| 人妻互换一区二区激情偷拍 | 男人午夜av | 四虎在线影视 | 欧美激情性生活 | 精品国产乱码久久久久久浪潮 | 少妇视频网 | 国产乱淫av免费 | 波多野结衣一区二区三区 | 国产成人无码一区二区在线观看 | 日日操狠狠干 | 久久综合激的五月天 | 国产在线二区 | 肉嫁高柳家 高清 | 亚洲激情短视频 | 午夜免费看 | 中文字幕成人网 | 国产黄色一级 | 国产一区二区视频免费在线观看 | 91丨九色丨蝌蚪丨丝袜 | 欧美视频第一区 | 亚洲免费高清 | 日本在线观看免费 | 国产一级免费看 | 日本一道本在线 | 色婷婷777777仙踪林 | japan粗暴video蹂躏 | 色涩涩 | 欧美日韩1| 老妇裸体性激交老太视频 | 欧美大屁股熟妇bbbbbb | 性――交――性――乱睡觉 | 香蕉视频黄污 | 欧美日韩视频无码一区二区三 | 国产性色视频 | 中文一级片 | 久久香蕉影视 | 国产精品综合一区二区 | 青青国产在线视频 | 91在线高清视频 | 精品一区二区三区四区 | 久久亚洲AV无码专区成人国产 | 午夜久久久久久久久久 | 91精品国产色综合久久不卡粉嫩 | 蜜桃传媒一区二区亚洲av | 亚洲精品激情 | 成人片在线看 | 四季av一区二区凹凸精品 | 日本精品入口免费视频 | 成人av资源网| 国产精品国语对白 | 国产精品一区2区 | 69影院少妇在线观看 | 成人自拍视频在线观看 | 中文字幕永久免费 | 日本在线视频一区 | 国产午夜精品在线观看 | 国产精品久久久久久久久久免费 | 91精品国产91综合久久蜜臀 | 搡国产老太xxx网站 高h喷汁呻吟3p | 成人春色影视 | 日日躁狠狠躁 | 亚洲人免费视频 |