亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > XML > 正文

COM+ Web 服務:通過復選框路由到 XML Web Services(1) (微軟中國)

2024-09-05 20:55:56
字體:
來源:轉載
供稿:網友
com+ web 服務:通過復選框路由到 xml web services
john noss 和 jonathan hawkins
microsoft corporation
2001年11月

摘要:com+ web 服務新增了某些功能,可與 microsoft .net remoting 集成,并通過 soap for com+ 組件實現 xml web services 發布的復選框激活。本文通過幾個示例介紹基本的互操作性、配置以及托管和非托管 com+ 組件(在 microsoft windows .net server 和 microsoft windows xp professional 上作為 xml web services 發布)的部署。

目錄

  • 簡介
  • 簡單的已知對象 (wko) 示例
  • 簡單的客戶端激活對象 (cao) 示例
  • 事務性組件示例
  • 一切才剛剛開始

簡介


com+ web 服務新增了某些功能,可與 microsoft .net remoting 集成,并通過 soap for com+ 組件實現 xml web services 發布的復選框激活。本文通過幾個示例介紹基本的互操作性、配置以及托管和非托管 com+ 組件(在 microsoft windows .net server 和 microsoft® windows® xp professional 上作為 xml web services 發布)的部署。還通過示例介紹了幾個新功能,使運行 windows xp 的客戶端能夠訪問遠程服務器上的 xml web services。
當開發人員使用 .net remoting 和托管代碼來完善現有的非托管 com+ 服務器和客戶端代碼時,這些功能可以幫助他們利用和簡化遷移過程。在 .net 框架的測試階段,有許多用戶問及如何配置 .net remoting 來進行簡單的跨計算機激活操作。com+ web 服務的解決方案是同時自動配置服務器 (microsoft windows .net server) 和客戶端 (microsoft windows xp professional) 計算機,使用 .net remoting 來提供 soap 以替代 dcom。
microsoft windows xp 和 microsoft .net 框架是本年度發布的兩個最重要的軟件。二者的目的都是為了簡化過程并提高軟件開發人員的能力,因此利用這兩種產品并發揮各自優勢來提供一套集成的、易于使用的解決方案就成為自然之選。com+ web 服務提供了一種簡單的方法,可以將 com+ 組件發布為 xml web services ;還提供了新的集成功能,用于從客戶端計算機訪問 xml web services。從以下 microsoft visual basic scripting edition (vbscript) 示例中可以了解其易于使用的特點,該示例用于確定 alaska 的 fairbanks 的當前氣溫。請在 windows xp(已安裝 .net 框架)或 windows .net server 上運行此示例:
set soapobj = getobject   ("soap:wsdl=http://www.xmethods.net/sd/temperatureservice.wsdl")wscript.echo "fairbanks 氣溫 = " & soapobj.gettemp("99707")

在上面的示例中,服務器是在 linux 上運行的 apache soap server,但也可以使用任何具有標準 web 服務說明語言 (wsdl) 描述功能的 soap v1.1 服務器。
注意: 如果出現“未找到服務器”錯誤,您需要在控制面板的 internet 選項中手動配置防火墻設置。

使用 soap 作為計算機之間通信協議的優點之一,在于它增加了可以交互操作的計算機的種類。.net remoting 具有以下兩種基本操作模型:
  • 已知對象 (wko): wko 是 soap v1.1 所支持的最常見的 xml web services 模型。它允許與其他運行 soap v1.1 兼容堆棧的計算機協同工作。服務器和客戶端可以是運行 apache soap 的非 windows 服務器和運行 pocketsoap 的 pocket pc,也可以是基于 windows 的服務器和客戶端。唯一的要求是服務器上必須安裝了與 wsdl 1.1 版本兼容的描述功能,以便生成相應的代理。此代理是在運行時生成的,并且第一次使用 wsdl 名字對象時沒有用戶介入。
  • 客戶端激活的對象 (cao): cao 提供了更豐富的開發環境,包括穩定持久的連接。較之典型的 xml web services 模型,它更類似于 dcom 模型,但要求在服務器和客戶端上都安裝有某一版本的 .net 框架。

com+ web 服務可以使用 wko 和 cao 兩種激活模型,而且所有的服務器應用程序都可以提供 wko 和 cao 端點。通過組合使用激活模型、xml web services 和 .net remoting,開發人員可以輕松地組合和匹配托管及非托管的客戶端和服務器。下表所示為兩種激活模型所支持方案的示例。
表 1:wko 模型支持的方案wko 客戶端wko 服務器vb 6.0 或非托管 c++vb 6.0 或非托管 c++vb 6.0 或非托管 c++vb .net 或 c#vb 6.0 或非托管 c++soap v1.1(在 wsdl 中描述)vb 6.0 或非托管 c++microsoft soap(atl server,soap tk)c# 或 vb .netsoap v1.1(在 wsdl 中描述)c# 或 vb .netvb 6.0 或非托管 c++c# 或 vb .netvb .net 或 c#c# 或 vb .netmicrosoft soap(atl server,soap tk)microsoft soap toolkit v2.0vb 6.0 或非托管 c++microsoft soap toolkit v2.0c# 或 vb .netsoap v1.1vb 6.0 或非托管 c++soap v1.1c# 或 vb .net
表 2:cao 模型支持的方案cao 客戶端cao 服務器c# 或 vb .net(早期綁定)vb 6.0 或非托管 c++vb 6.0 或非托管 c++vb 6.0 或非托管 c++vb 6.0 或非托管 c++c# 或 vb .netc# 或 vb .net[td]c# 或 vb .net
這種新的 com+ web 服務適用于以下用戶:
  1. 當前安裝有 microsoft® visual basic® 6.0 或者非托管 microsoft visual c++® com+ 應用程序(需要通過防火墻才能進行某些激活操作)的 com+ 用戶。(使用 soap 并不排斥通過 dcom 訪問服務器上的相同組件,客戶端計算機可以選擇協議。)對于這些客戶來說,如果要使用 soap 而不是 dcom,則使用客戶端代理導出和 cao 模型都不需要更改客戶端和服務器應用程序。只需要在服務器應用程序上啟用 soap,將其作為客戶端代理導出,然后將代理安裝在要用作 soap 客戶端的 windows xp 計算機上。
  2. 完全遷移到 windows xp 和 windows .net server 上的托管代碼的公司。com+ web 服務有助于在連接的兩端設置遠程端點。
  3. 需要在上述兩種方案中組合和匹配各種服務的開發人員,以及編寫托管服務器組件、或帶有非托管服務器組件的托管客戶端應用程序的開發人員。在第二種情況中,開發人員可以利用 com+ web 服務,在用托管代碼替換之前充分利用早期的非托管組件。

簡單的已知對象 (wko) 示例


除了對 linux 和 apachein 提供 soap 支持外,將 com+ web 服務應用于其他 microsoft 產品(例如 atl server web 服務)也非常簡單。只需使用 microsoft visual studio® .net 在服務器上生成、編譯和部署默認的 atl web 服務即可。對它進行訪問的客戶端代碼如下(請用駐留 atl server 應用程序的 web 服務器名稱替換 myserver,用您的 atl server dll 的名稱替換 jaltserver):
mon="soap:wsdl=http://myserver/jaltserver/jaltserver.dll?   handler=genjaltserverwsdl"set c = getobject(mon)wscript.echo c.helloworld("com+ web 服務") 

上述示例簡單說明了 microsoft windows xp 和 microsoft windows .net 服務器所包含的一個新的 soap 名字對象。

數據發布


如果您只想提供數據而不是使用數據,那么只需選擇一個復選框,然后輸入 iis 虛擬根名稱的值。要創建完整的 com+ web 服務,請執行以下步驟:
使用 visual basic 6.0 創建簡單的 microsoft activex® dll,并輸入以下代碼:
function add(byval value1 as double, byval value2 as double) as double add = value1 + value2end function

在 visual basic 項目屬性頁上的 general選項卡中,設置 unattended executionretained in memory,并在 component 選項卡中選擇 remote server files。使用 visual basic 開發環境生成此 dll。
在創建 visual basic 應用程序之后,需要將其注冊為 com+ 應用程序。啟動組件服務管理工具,在 windows xp 上創建 com+ 應用程序。(在此示例中,應用程序被命名為 vb6soap。)將所創建的 dll 作為組件導入,然后瀏覽到 com+ 應用程序屬性頁的 activation 選項卡,選擇 uses soap,輸入一個 soap vroot(例如,vb6soap),然后單擊 ok(如圖 1 所示)。

圖 1:vb6soap com+ 應用程序屬性頁
現在,應用程序已發布為 xml web services,并且可以使用 soap 激活。使用 internet explorer 瀏覽到 http://localhost/vb6soap/default.aspx,您會在該 aspx 頁上發現一個超鏈接,通過它可以鏈接到您的組件所生成的 wsdl。以下 vbscript 將激活您的組件:
set c = getobject   ("soap:wsdl=http://localhost/vb6soap/vb6soap.calc.soap?wsdl")for i = 1 to 10 wscript.echo i & " " & c.add(i,i) & " " & timenext 

如果用您的服務器名稱替換上面腳本中的 localhost,它也可以在遠程客戶端計算機上正常工作。引用的頁面(在此示例中為 vb6soap.calc.soap)是以 .soap 后綴結尾的組件 progid。
要通過 soap toolkit(與 windows xp professional 一起提供,并且不使用 .net remoting)訪問同一端點,請運行以下 vbscript:
set c = createobject("mssoap.soapclient")c.mssoapinit("http://localhost/vb6soap/vb6soap.calc.soap?wsdl")for i = 1 to 10 wscript.echo i & " " & c.add(i,i) & " " & timenext 

要簡化在服務器上發布 soap 的過程,您可以使用 microsoft c#™ 或 visual basic .net,并從 servicedcomponent 繼承。下面是簡單托管組件的托管代碼示例:
using system;using system.reflection;using system.runtime.interopservices;using system.enterpriseservices;[assembly: applicationname("cssoap")][assembly: applicationactivation(activationoption.server,    soapvroot="cssoap")][assembly: assemblykeyfile("cssoap.snk")]namespace cssoap{  public interface icalc  {   double add (double value1, double value2);  }  [classinterface(classinterfacetype.autodual)]  [transactionattribute(transactionoption.none)]  public class calc : servicedcomponent, icalc  {   public double add (double value1, double value2);   {      return (value1 + value2);   }   }}

上述示例中值得注意的是 applicationactivation 屬性:
[assembly: applicationactivation(activationoption.server,    soapvroot="cssoap")]

建立 c# 組件,將它安裝在全局程序集緩存中,然后運行 regsvcs.exe 將它注冊為 com+ 應用程序。這樣,該組件就被發布為 iis 虛擬根和 soap 端點。要成功地遠程使用 servicedcomponent,還需要使用 gacutil.exe 或 .net 框架用戶界面,將這個編譯后的程序集放入全局程序集緩存 (gac) 中。要通過 wsdl 訪問此 soap 端點,請使用以下 vbscript:
set c = getobject   ("soap:wsdl=http://localhost/cssoap/cssoap.calc.soap?wsdl")for i = 1 to 10 wscript.echo i & " " & c.add(i,i) & " " & timenext 

作為 soap 交互操作性的簡單示例,soap toolkit 與 windows xp professional 一起提供,并且即使運行 windows xp 的客戶端計算機上沒有安裝 .net 框架,使用以下 vbscript 也可以訪問 com+ soap 端點:
set c = createobject("mssoap.soapclient")c.mssoapinit("http://localhost/cssoap/cssoap.calc.soap?wsdl?for i = 1 to 10 wscript.echo i & " " & c.add(i,i) & " " & timenext 

為簡單起見,上述示例全部使用 vbscript 來訪問 web 服務。其實也可以通過 soap wsdl 名字對象使用 visual c+、visual basic 6.0、visual basic .net 或 c# 進行編寫。例如,visual basic .net 也可以使用編譯的托管代碼訪問同一對象,如下例所示:
imports systemimports system.runtime.interopservicesmodule wkoclient sub main()    dim wsdlmoniker =       "soap:wsdl=http://localhost/cssoap/cssoap.calc.soap?wsdl"      dim obj as object   obj = marshal.bindtomoniker(wsdlmoniker)   console.writeline(obj.add(1,2)) end subend module

使用 vbscript 是為了表明,托管的和非托管的客戶端都可以訪問發布為 com+ web 服務的 com+ 組件。在大型組織或應用程序中,很難一次轉換所有部分,com+ web 服務允許將一部分應用程序轉換為托管代碼,而無需立即全面重新編寫現有的應用程序。

簡單的客戶端激活對象 (cao) 示例


服務器上的 com+ web 服務發布將每一組件發布為 wko 和 cao 兩種形式,因此不需要額外的服務器配置。在服務器上唯一要做的操作是,在選擇 uses soap 復選框(位于 com+ 應用程序屬性頁的 activation 選項卡上)并在 soap vroot 文本框中輸入值以后,將 com+ 應用程序作為代理程序導出。下面顯示了導出代理應用程序的必要步驟:
  1. 用鼠標右鍵單擊組件服務管理工具中的 vb6soap com+ 應用程序,并選擇 export,如圖 2 所示。

    圖 2:組件服務管理工具
  2. 在圖 3 所示的 com+ 應用程序導出向導中,輸入代理 .msi 文件的位置和名稱。

    圖 3:com+ 應用程序導出向導
  3. 將代理 .msi 文件安裝在單獨的客戶端計算機上,作為預先生成的 com+ 應用程序。
    安裝時將對代理進行適當的配置,以便通過 soap 訪問正確的服務器和虛擬根。對于客戶端激活,可以不使用 wsdl 名字對象,而使用常規非托管的 com+ 激活(例如,cocreateinstance、createobject 等)。在服務器上創建并在單獨的客戶端計算機上安裝上述 visual basic 計算器示例的應用程序代理后,以下 vbscript 將通過 soap 訪問該服務器:
    set c = createobject("vb6soap.calc")for i = 1 to 10 wscript.echo i & " " & c.add(i,i) & " " & timenext 

    如果代理程序沒有啟用 com+ web 服務,則上述 vbscript 代碼將使用 dcom 訪問服務器應用程序。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美精品手机在线| 国产主播喷水一区二区| 日韩免费精品视频| 日韩av日韩在线观看| 欧美精品生活片| 欧美成人三级视频网站| 中文字幕在线看视频国产欧美| 亚洲午夜国产成人av电影男同| 久久久久久网站| 久久精品中文字幕| 亚洲欧美在线一区| 国产欧美久久一区二区| 国产日韩一区在线| 午夜精品一区二区三区在线视| 久色乳综合思思在线视频| 久久久av亚洲男天堂| 日韩在线免费视频观看| 亚洲人成欧美中文字幕| 亚洲精品影视在线观看| 韩国视频理论视频久久| 91在线观看免费| 欧美又大又硬又粗bbbbb| 黑人精品xxx一区| 亚洲第一页中文字幕| 91久久久在线| 亚洲精品久久久久久久久久久| 国产视频精品自拍| 国产一区二区日韩精品欧美精品| 国产精品永久免费| 中文字幕日韩综合av| 亚洲美女www午夜| 91久久在线播放| 亚洲精品在线观看www| 97在线视频免费| 黄色精品一区二区| 性色av香蕉一区二区| 在线播放日韩精品| 欧美成人小视频| 亚洲国产精品悠悠久久琪琪| 久久97久久97精品免视看| 亚洲欧美另类自拍| 8x拔播拔播x8国产精品| 亚洲欧美在线第一页| 91中文字幕一区| 日韩在线观看免费全| 亚洲人成网站999久久久综合| 91国产精品电影| 国产精品第一视频| 久久人人爽人人爽人人片av高请| 亚洲视频国产视频| 国产精品久久久久久久电影| 成人国产在线激情| 欧美性猛交xxx| 成人天堂噜噜噜| 亚洲欧洲日产国码av系列天堂| 91国产中文字幕| 国产成人精品av| 日韩欧美在线观看视频| 国产日韩欧美夫妻视频在线观看| 国产精品久久97| 91av在线精品| 欧美诱惑福利视频| 久久中文字幕视频| 理论片在线不卡免费观看| 91精品国产沙发| 欧美一级片免费在线| 日韩精品在线免费| 91视频免费在线| 久久久久九九九九| 午夜精品福利在线观看| 欧美在线播放视频| 91中文字幕在线| 日韩成人在线免费观看| 久久免费视频在线| 91精品免费久久久久久久久| 97精品国产97久久久久久免费| 精品视频中文字幕| 亚洲欧美国产va在线影院| 欧美在线亚洲在线| 性夜试看影院91社区| 中文字幕成人精品久久不卡| 91在线视频成人| 日韩av一区二区在线| 欧美在线国产精品| 国产美女精品视频免费观看| 久久综合伊人77777尤物| 久久九九国产精品怡红院| 欧美在线视频在线播放完整版免费观看| 久久久中精品2020中文| 欧美日韩精品在线| 国产精品久久久久久中文字| 国产一区二区三区三区在线观看| 色偷偷av一区二区三区乱| 久久成人精品一区二区三区| 亚洲第一视频网| 亚洲欧美在线一区二区| 日本精品视频在线播放| 精品中文字幕视频| 黑人欧美xxxx| 欧美天堂在线观看| 日韩av大片免费看| 欧美高清视频在线观看| 日韩视频永久免费观看| 成人免费网站在线看| 97成人精品视频在线观看| 亚洲电影免费观看高清完整版在线| 精品欧美aⅴ在线网站| 欧美激情在线有限公司| 亚洲精品福利视频| 国产91精品久久久久久| 在线不卡国产精品| 97在线免费视频| 久久精品国产亚洲精品| 久久中文字幕视频| 欧美极品美女视频网站在线观看免费| 国产日韩欧美影视| 91免费福利视频| 日韩va亚洲va欧洲va国产| 国产一区av在线| 亚洲欧美国内爽妇网| 最近2019中文字幕第三页视频| 九九九热精品免费视频观看网站| 日韩av在线影院| 亚洲第一精品自拍| 亚洲色图在线观看| 国产97色在线| 91亚洲精品久久久久久久久久久久| 欧美激情视频一区| 亚洲精品日韩在线| 色噜噜久久综合伊人一本| 国产精品爱啪在线线免费观看| 欧美亚洲视频在线看网址| 亚洲一区二区三区在线免费观看| 亚洲欧美色婷婷| 亚洲国产精品大全| 欧美日韩国产一区中文午夜| 亚洲人成网站999久久久综合| 日韩色av导航| 国产成人精品免高潮在线观看| 亚洲国产私拍精品国模在线观看| 欧美激情精品在线| 日韩精品黄色网| 亚洲自拍欧美色图| 日韩电影中文字幕av| 国产精品视频公开费视频| 国产精品久久久av久久久| 欧洲中文字幕国产精品| 亚洲一区中文字幕| 国产一区二区三区在线播放免费观看| 日韩欧美一区二区三区| 国产一区二区三区丝袜| 精品国产成人在线| 91色精品视频在线| 亚洲天堂av在线播放| zzijzzij亚洲日本成熟少妇| 91久久在线视频| 欧美在线免费观看| 国产精品久久av| 97在线日本国产| 88国产精品欧美一区二区三区| 日韩精品在线观看视频| 2019中文字幕全在线观看| 国产精品丝袜久久久久久不卡| 国产精品免费电影|