国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

.Net整合其他平臺的一些探討

開發 后端
本文講解把一個ASP.net應用程序和一個PHP Web服務連結起來,以學習一些整合分布式應用程序的方法,以及必要的應對措施,包括運行什么以及不用去做什么。

整合分布式應用程序經常是一件非常困難并且錯綜復雜的任務,即使是最富有經驗的開發者也可能會覺得頭疼。當應用程序在不同的操作系統以及涉及不同的程序平臺時,這個集成問題變得尤其復雜。雖然說,Web服務承諾可以減輕程序員完成集成任務的困難程度,但是也可能給程序員們帶來一些意想不到的麻煩。在這里我們將把一個ASP.net應用程序和一個PHP Web服務連結起來,以學習一些整合分布式應用程序的方法,以及必要的應對措施,包括運行什么以及不用去做什么。

這個Web服務在一個Apache服務器上運行,并且使用PHP開發。它從各種微軟新聞組檢索新聞摘要以及它們的關聯的文本。即使由這個服務提供的數據可以直接使用內部的。Net對象存取,但是這個服務還是將使用并提供一個連接到非。Net平臺上的不錯的演示。我們這里要討論的實例基于。Net beta 2版。

創建一個Web服務代理

Visual Studio.NET提供了一個出色的機制用于自動地生成可用于存取遠程Web服務的代理對像。因此,要首先嘗試使用這些函數來導入由PHP服務提供的Web服務描述語言(Web Services Description Language,WSDL)文件。 還可以使用.Net SDK的WSDL.exe命令行公用程序。不幸的是,在使用VS.net向導導入WSDL之后,并不能成功地創建一個代理。所以我必須把導入原始的WSDL文件后由VS.Net生成的文件轉換為WSDL:

◆把模式域名空間從http://www.w3.org/1999/XMLSchema改成http://www.w3.org/2001/XMLSchema 然后清除所有的當WSDL導入過程中由VS.Net添加的”q”域名空間。

◆刪除 xmlns:tm=http://microsoft.com/wsdl/mime/textMatching/和xmlns: mime="

◆刪除類型元素,因為原始的 WSDL文檔 并沒有包含Web服務的模式信息的指定的元素區段。

◆改變輸入輸出元素消息屬性值為包含tns域名空間前綴的形式:

以下為引用的內容: 
﹤portType name="nntpSoapPortType"﹥
﹤operation name="getheaders" parameterOrder="newsgroup numitems"﹥
﹤input message="tns:getheaders" /﹥
﹤output message="tns:getheadersresponse" /﹥
﹤/operation﹥
﹤operation name="getarticle" parameterOrder="newsgroup article"﹥
﹤input message="tns:getarticle" /﹥
﹤output message="tns:getarticleresponse" /﹥
﹤/operation﹥
﹤/portType﹥

在進行了下面的這些微小的改變,VS.Net向導能夠讀取WSDL并且自動地生成一個代理。在編譯了這個代理之后,它被包含在一個ASP.NET頁面中。然而,當這個ASP.Net頁面被執行:“ message does not have a correct SOAP root XML tag.”,這個錯誤被當作一個SOAP錯誤從Web服務中返回。

為了精確地評估這個錯誤,代理調用被一個名為Proxy Trace的公用程序使用,以便代理生成SOAP包裝。這可以通過把下列代碼添加進ASP.Net頁面來實現:

msNews.Proxy = new System.Net.WebProxy( http://localhost:8080);

在察看了由.Net代理生成的SOAP包裝之后,我有點奇怪為什么會返回這個錯誤,因為實際上一個相對的SOAP包裝被生成并被發送到Web服務。即使在嘗試了好幾個轉化成代理代碼之后這個錯誤依然持續。代碼段列表2顯示了從PHP Web服務返回的完整的SOAP錯誤包裝。

在使用VS.Net中創建的代理對象的好幾個把ASP.Net頁面與PHP Web服務連結的不成功的嘗試之后,我決定從頭開始創建SOAP包裝以便執行更有效的程序調試。{起先,它看起來好像由.Net代理生成的模式域名空間可能是問題的關鍵,因為.Net使用2001模式規范而PHP服務使用的是1999版本的規范。

然而,我把自定義的SOAP包裝改為用1999版本代替2001版本,錯誤依然存在。在嘗試了好幾個其他的小的改變之后,我決定把SOAP包裝使用的域名空間前綴和正文元素從soap (由.Net代理生成)改為SOAP - ENV,因為我看見在SOAP錯誤信息中返回了SOAP - ENV前綴。(見代碼2)這表面上看上去微不足道的改變竟解決了問題!當處理任何請求的時候,PHP服務顯然需要SOAP - ENV前綴,而拒絕不包含SOAP - ENV前綴的要求。

創建一個自定義代理

既然已經了解了為什么Web服務返回一個SOAP錯誤,我們就可以創建一個自定義代理來生成網服務期待的SOAP包裝。雖然創建一個自定義SOAP包裝肯定比使用一個由VS.net或者WSDL.exe公用程序生成的SOAP包裝要花更多的時間,但是這樣做可以完全控制包裝的內容。為了開始創建自定義代理,我創建一個名為msnewsserviceproxy的包含兩個字段的新類:

以下為引用的內容: 
public class MSNewsServiceProxy {
string _uri;
string _soapAction;
}

uri字段保存了Web服務的位置,而_soapAction字段保存了將要使用SOAP包裝發送的SOAPAction數據頭的名稱。在MSNewsServiceProxy類之內,添加CreateSoapEnvelope (),SendSoapEnvelope ()和FilterResult ()這三個方法。這些方法生成SOAP包裝請求,把它發送到Web服務,然后過濾返回的SOAP包裝。讓我們逐一的看看每個方法。注意代碼在SOAP包裝的根元素上添加一個SOAP - ENV域名空間前綴。Web服務顯然需要這個特定的前綴,而拒絕任何不包含這個前綴的信息。因為VS.net生成的代理發送一個soap域名空間前綴(而不是SOAP - ENV),所以它的消息被拒絕。Web服務不應該需要一個特定的域名空間前綴而為此拒絕不帶此前綴的消息,但是域名空間問題也是你必須注意要想使工作更好的完成,要執行一些看上去不{0>可思議的事情。

在SOAP包裝被創建之后,SendSoapEnvelope ()方法(見代碼段4)使用了幾個System.Net和System.IO域名空間中的類來把這個包裝發送到Web服務中。代碼首先通過把_uri變量傳送到對象構造器來創建一個HttpWebRequest對象。其次,與這個請求相關聯的相應的Method,ContentType和Header都將被發送。

然后一個StreamWriter對象和HttpWebRequest對象的請求流相關聯,SOAP包裝就被使用StreamWriter的Write ()方法寫到流中。

從Web服務返回的SOAP包裝被HttpWebResponse對象的SendSoapEnvelope ()方法獲得。

HttpWebResponse response = (HttpWebResponse)request.GetResponse();

如果應答不是空值,它將被載入一個XMLTextReader,XMLTextReader被用來填充XmlDocument對象。然后從這個方法中返回XmlDocument對象。

FilterSoapEnvelope ()方法分析SOAP應答包裝并把從Web服務中返回的數據裝入自定義代理的“消費者”使用的XmlDocument對象:

以下為引用的內容: 
private XmlDocument
FilterSoapEnvelope(
XmlDocument doc) {
XmlDocument filterDoc =new XmlDocument();
XmlNode result = doc.SelectSingleNode("http://results");
XmlNode resultImport = filterDoc.ImportNode(result,true);
filterDoc.AppendChild(resultImport);
return filterDoc;
}

雖然過濾器可以使用好幾種方法執行,但是FilterSoapEnvelope ()方法依靠XPath語句可以在應答SOAP包裝中得到結果元素。

微軟新聞組PHP Web服務展示了允許取得新聞組新聞摘要的兩種方法:getheaders ()和getmessage ()。 你可以看到如何在自定義代理類中使用這兩種方法(見代碼段5)。 注意每個方法中的代碼傳遞Web服務方法名被調用到CreateSoapEnvelope ()方法和任何使用這個方法關聯的參數。 在SOAP包裝被發送以及應答被接受之后,FilterSoapEnvelope ()方法被調用來把返回的數據加載到一個XmlDocument對象中,同樣,這個對象也是代理“消費者”使用的。

【編輯推薦】

  1. 使用ASP.Net 3.5的Ajax與Web服務開發實例
  2. Java EE的Web服務原理和體系結構
  3. Tomcat與Web服務器、應用服務器的關系
責任編輯:book05 來源: 阿里西西網
相關推薦

2022-01-12 08:30:55

結構體指針STM32

2009-11-25 09:23:47

PHP引用&符號

2011-11-30 15:57:18

2017-02-20 16:28:30

DCISDN-WAN傳輸網絡

2017-09-10 17:31:18

iOS渲染數據

2012-07-03 13:55:00

ASP.NET

2009-09-04 13:11:25

ASP.NET生成XM

2021-09-27 09:55:52

深度學習編程人工智能

2009-12-11 14:17:36

ASP.NET Coo

2009-08-04 16:06:19

ASP.NET代碼分離

2023-11-13 07:54:54

.NET Core開源框架

2009-08-21 18:05:23

ASP.NET Ses

2013-05-31 02:18:47

ASP.NET.Net

2011-07-29 09:33:21

iPhone 設計

2015-09-24 14:56:17

變革平臺開發云開發

2013-04-28 09:44:44

2014-11-18 15:20:03

.NET

2019-06-13 18:50:47

支付平臺架構設計

2020-11-30 13:33:25

Python平臺類游戲編程語言

2012-06-25 10:13:00

Java.NET
點贊
收藏

51CTO技術棧公眾號

欧美精品videosex极品1| 亚洲精选一区二区| 日本xxxxx18| 亚洲欧美大片| 欧美在线观看网站| www.欧美| 国产亚洲综合久久| 91禁在线看| 日韩一级高清毛片| 三级在线播放| 亚洲午夜成aⅴ人片| 天天色综合天天色| 26uuu亚洲综合色欧美| 黄色激情在线视频| 高清免费成人av| 欧洲亚洲一区二区| 首页国产欧美久久| 一区二区三区av在线| 久久成人精品| 亚洲欧美久久234| 久草精品在线观看| 久久亚洲精品无码va白人极品| 国产精品资源网| 国产精品999视频| 91蜜桃免费观看视频| av五月天在线| 一区二区三区在线看| 久久久久久久av麻豆果冻| 国产精品人人做人人爽| 国产不卡在线| 成人午夜电影久久影院| 国产中文字幕第一页| 亚洲卡通动漫在线| 国产xxxxx| 国产视频青青| 亚洲欧美在线看| 成人不用播放器| 久久久久久久精| www.99色.com| 亚洲激情六月丁香| 欧美在线观看在线观看| 亚洲成人精品视频| 在线观看小视频| 亚洲综合色区另类av| 国产在线视频2019最新视频| 中文字幕一区二区三区四区久久| 精品美女在线观看| 国产主播性色av福利精品一区| 在线观看不卡av| 国产精品网站在线播放| 国产欧美日韩精品在线观看| 成人黄色免费短视频| 91蜜桃视频在线| 丁香婷婷久久久综合精品国产| 日韩中文字幕在线一区| 亚洲视频在线观看一区| av在线亚洲男人的天堂| 日本大胆欧美| 国产精品麻豆va在线播放| 亚洲伊人影院| 五月天丁香久久| 国产精品粉嫩| 亚洲综合一区在线| 日本在线观看免费| 一区二区三区动漫| 欧美1区二区| 日韩激情视频在线播放| av女优在线播放| 91久久精品国产91久久性色tv | 久久久久久久久久av| 亚洲欧美综合另类中字| 亚洲资源在线| 国产美女直播视频一区| 石原莉奈在线亚洲三区| av免费中文字幕| 欧美视频第一页| 日韩av在线直播| 国产黄色小视频在线| 日本一区二区在线不卡| 国产大学生校花援交在线播放 | av首页在线| 91精品国产综合久久久久| 国产精品免费精品自在线观看| 波多野结衣视频一区二区| 精品伦理精品一区| 三区四区不卡| 成人免费在线视频网站| 国产一区2区| 六月婷婷久久| 欧美三级黄美女| 国产乱码精品一区二区三区中文| 999亚洲国产精| 欧美不卡在线一区二区三区| 国产乱子伦一区二区三区国色天香| 91视频最新入口| 亚洲另类在线视频| 一区二区三区中文字幕电影| 亚洲日日夜夜| 国产成人综合亚洲| 丁香花在线电影| 国产精品第二页| 成人同人动漫免费观看| 日韩国产小视频| 91精品国产综合久久精品性色| 久操成人av| 北条麻妃69av| 亚洲精品美女久久久久| 欧美在线影院| 丁香视频免费观看| 日韩在线观看高清| 免费永久网站黄欧美| 一个人免费视频www在线观看| 欧美久久精品一级黑人c片 | 欧美成人乱码一区二区三区| 日韩免费视频| 我要看一级黄色大片| 中文字幕av一区中文字幕天堂 | 91一区一区三区| 国产传媒在线观看| 国产欧美日韩一区| 精品国产91久久久久久| 欧洲在线一区| 成人淫片免费视频95视频| 精品国偷自产在线| 韩日欧美一区二区三区| 成人影欧美片| 国外成人在线视频网站| 色94色欧美sute亚洲线路一久 | 久久久久久美女| 成人免费视频国产在线观看| 亚洲日本天堂| 欧美日韩精品免费看| 91 com成人网| 亚洲欧美不卡| 影音先锋男人在线资源| 国产精品一区二区三区四区五区 | 国产精品99久久精品| 992tv在线影院| 国产精品一区av| 欧美丝袜一区二区| 亚洲自拍偷拍网| seseavlu视频在线| 欧美成人综合一区| 精品久久久三级丝袜| 九九在线精品视频| www.色精品| 色婷婷狠狠五月综合天色拍| 原千岁中文字幕| 亚洲自拍小视频| 一本一本久久a久久精品牛牛影视| 国产精品无码久久久久| 在线观看av的网址| 国产一区二区日韩| 成人黄色av网站在线| 中文字幕日本一区| 上原亚衣加勒比在线播放| 国产成人极品视频| 偷拍日韩校园综合在线| 欧美黄在线观看| 粗大黑人巨茎大战欧美成人| 中文字幕中文字幕99| 日韩一区在线视频| 亚洲欧洲无码一区二区三区| 精品一区二区三区在线| 欧美69xxxxx| 亚洲综合网中心| 蜜臀久久99精品久久久久久宅男| 亚洲视频免费观看| 国精品一区二区| 天堂8中文在线最新版在线| 丰满爆乳一区二区三区| 国产福利成人在线| 91精品欧美福利在线观看| 国产成人99久久亚洲综合精品| 国产成人aa在线观看网站站| 深夜福利免费在线观看| 亚洲精品美女久久7777777| 久久精品国产亚洲一区二区| 午夜精品久久久久久久久久| 久久国产麻豆精品| 欧美1区2区3区4区| av在线女优影院| 热99这里只有精品| 国产在线精品自拍| 亚洲片在线观看| 亚洲大型综合色站| 国产在线播放一区三区四| 亚洲精品动态| 国精一区二区三区| 2020中文字幕在线| 日韩福利影院| 国产91九色视频| 日韩www在线| 亚洲国产cao| 国产精品99久久久久久久女警 | 欧美日韩国产影院| 国产精品影音先锋| 99久久夜色精品国产亚洲狼| 老司机精品视频网| 免费在线看黄|