COM+ Web 服務:通過複選框路由到 XML Web Services (轉)5

來源:互聯網
上載者:User
services|web|xml|複選框 在圖 3 所示的 COM+ 應用程式匯出嚮導中,輸入代理 .msi 檔案的位置和名稱。


  1. 在圖 3 所示的 COM+ 應用程式匯出嚮導中,輸入代理 .msi 檔案的位置和名稱。

    圖 3:COM+ 應用程式匯出嚮導
  2. 將代理 .msi 檔案安裝在單獨的用戶端電腦上,作為預先產生的 COM+ 應用程式。
    安裝時將對代理進行適當的配置,以便通過 SOAP 訪問正確的伺服器和虛擬根。對於用戶端啟用,可以不使用 WSDL Moniker,而使用常規非託管的 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 訪問伺服器應用程式。
事務性組件樣本
簡單的計算機遠算不上工作量繁重的商務應用程式,因此我們現在考慮帶有對象池的適於 COM+ 事務性組件的應用程式。
最容易管理和配置的組件是由 ServicedComponent 匯出的Managed 程式碼組件,如以下 C# 樣本所示:
using System;using System.Reflection;using System.Runtime.InteropServices;using System.EnterpriseServices;using System.Data;using System.Data.SqlClient;[assembly: ApplicationName("SCTrans")][assembly: ApplicationActivation(ActivationOption.Server,    SoapVRoot="SCTrans")][assembly: AssemblyKeyFile("SCTrans.snk")]namespace SCTrans{  public interface ISCTrans  {   string CountUp (string Key);  }  [ObjectPooling(MinPoolSize=0, MaxPoolSize=25)]  [JustInTimeActivation(true)]  [ClassInterface(ClassInterfaceType.AutoDual)]  [TransactionAttribute(TransactionOption.RequiresNew)]  public class SCTransSQLNC : ServicedComponent, ISCTrans  {   [AutoComplete]   public string CountUp (string Key)   {      _command = new SqlCommand("", _connection);      _command.CommandType = CommandType.Text;      _command.Connection.Open();     _command.CommandText = "UPDATE CallCount WITH (ROWLOCK) SET       CallCount = CallCount + 1 WHERE Machine='" + Key + "'";     _command.ExecuteNonQuery();      _command.Connection.Close();     _numcalls++;     return (_numcalls + " NC " + _guid);   }    protected override bool CanBePooled()   {     return true;    }   private int _numcalls = 0;   private string _guid = Guid.NewGuid().ToString();   private SqlConnection _connection =    new SqlConnection("user id=MyUser;password=My!Password;   database=SoapTest;server=MyServer");   private SqlCommand _command;      }}

圖 3:COM+ 應用程式匯出嚮導

將代理 .msi 檔案安裝在單獨的用戶端電腦上,作為預先產生的 COM+ 應用程式。
安裝時將對代理進行適當的配置,以便通過 SOAP 訪問正確的伺服器和虛擬根。對於用戶端啟用,可以不使用 WSDL Moniker,而使用常規非託管的 COM+ 啟用(例如,CoCreateInstance、CreateObject 等)。在伺服器上建立並在單獨的用戶端電腦上安裝上述 Visual Basic 計算機樣本的應用程式代理程式後,以下 VBScript 將通過 SOAP 訪問該伺服器:

set c = CreateObject("VB6Soap.Calc")
for i = 1 to 10
WScript.Echo i & " " & c.Add(i,i) & " " & Time
next

如果代理程式沒有啟用 COM+ Web 服務,則上述 VBScript 代碼將使用 DCOM 訪問伺服器應用程式。

事務性組件樣本
簡單的計算機遠算不上工作量繁重的商務應用程式,因此我們現在考慮帶有對象池的適於 COM+ 事務性組件的應用程式。

最容易管理和配置的組件是由 ServicedComponent 匯出的Managed 程式碼組件,如以下 C# 樣本所示:

using System;
using System.Reflection;
using System.Runtime.InteropServices;
using System.EnterpriseServices;
using System.Data;
using System.Data.SqlClient;

[assembly: ApplicationName("SCTrans")]
[assembly: ApplicationActivation(ActivationOption.Server,
   SoapVRoot="SCTrans")]
[assembly: AssemblyKeyFile("SCTrans.snk")]
namespace SCTrans
{
  public interface ISCTrans
  {
   string CountUp (string Key);
  }

  [ObjectPooling(MinPoolSize=0, MaxPoolSize=25)]
  [JustInTimeActivation(true)]
  [ClassInterface(ClassInterfaceType.AutoDual)]
  [TransactionAttribute(TransactionOption.RequiresNew)]
  public class SCTransSQLNC : ServicedComponent, ISCTrans
  {
   [AutoComplete]
   public string CountUp (string Key)
   {
      _command = new SqlCommand("", _connection);
      _command.CommandType = CommandType.Text;
      _command.Connection.Open();
     _command.CommandText = "UPDATE CallCount WITH (ROWLOCK) SET
      CallCount = CallCount + 1 WHERE Machine='" + Key + "'";
     _command.ExecuteNonQuery();
      _command.Connection.Close();
     _numcalls++;
     return (_numcalls + " NC " + _guid);
   }

   protected override bool CanBePooled()
   {
     return true;
   }
   private int _numcalls = 0;
   private string _guid = Guid.NewGuid().ToString();
   private SqlConnection _connection =
   new SqlConnection("user id=MyUser;password=My!Password;
   database=SoapTest;server=MyServer");
   private SqlCommand _command;
   
  }
}



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。