麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > 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+ 激活(例如,cocreateinstancecreateobject 等)。在服務器上創建并在單獨的客戶端計算機上安裝上述 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 訪問服務器應用程序。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久成人国产精品入口 | 91久久精品一二三区 | 中文字幕亚洲欧美 | 蜜桃成品人免费视频 | 激情宗合网 | 日韩在线播放一区二区 | 免费毛片小视频 | 日韩a毛片免费观看 | 视频一区二区国产 | 欧美成人免费在线视频 | 久久精品视频在线看99 | 久久国产精品久久久久久电车 | 日本在线播放一区二区三区 | 宅男视频在线观看免费 | 国产成人午夜高潮毛片 | 91美女视频在线 | 国产免费福利视频 | 黄色网址电影 | 久久久久久久久久亚洲 | 露脸各种姿势啪啪的清纯美女 | 91麻豆精品国产91久久久无需广告 | 羞羞视频免费观看网站 | 欧美三日本三级少妇三级99观看视频 | 国产成人精品区 | 午夜精品成人 | 黄色网址免费在线播放 | 亚洲成人在线免费观看 | 久久国产精品91 | 特片网久久 | av影院在线 | 一级一级一级毛片 | 一级片免费在线 | 免费人成在线播放 | 国产精品一品二区三区四区18 | 久久国产精品久久精品国产演员表 | 亚洲国产精品一区二区三区 | 中韩毛片 | 亚洲视频综合网 | 性猛交ⅹxxx乱巴西 在线播放中文 | 超碰97最新 | 久久精品免费国产 |