Service 類別

定義

將一組與 XML Web 服務相關的類別實例 Port 群組起來。 此類別無法獲得繼承。

public ref class Service sealed : System::Web::Services::Description::DocumentableItem
public ref class Service sealed : System::Web::Services::Description::NamedItem
public sealed class Service : System.Web.Services.Description.DocumentableItem
[System.Web.Services.Configuration.XmlFormatExtensionPoint("Extensions")]
public sealed class Service : System.Web.Services.Description.NamedItem
type Service = class
    inherit DocumentableItem
[<System.Web.Services.Configuration.XmlFormatExtensionPoint("Extensions")>]
type Service = class
    inherit NamedItem
Public NotInheritable Class Service
Inherits DocumentableItem
Public NotInheritable Class Service
Inherits NamedItem
繼承
繼承
屬性

範例

#using <System.Xml.dll>
#using <System.Web.Services.dll>
#using <System.dll>

using namespace System;
using namespace System::Web::Services::Description;
using namespace System::Xml;

Port^ CreatePort( String^ PortName, String^ BindingName, String^ targetNamespace )
{
   Port^ myPort = gcnew Port;
   myPort->Name = PortName;
   myPort->Binding = gcnew XmlQualifiedName( BindingName,targetNamespace );
   
   // Create a SoapAddress extensibility element to add to the port.
   SoapAddressBinding^ mySoapAddressBinding = gcnew SoapAddressBinding;
   mySoapAddressBinding->Location = "http://localhost/ServiceClass/MathService_CS.asmx";
   myPort->Extensions->Add( mySoapAddressBinding );
   return myPort;
}

int main()
{
   try
   {
      // Read a WSDL document.
      ServiceDescription^ myServiceDescription = ServiceDescription::Read( "MathService_CS.wsdl" );
      ServiceCollection^ myServiceCollection = myServiceDescription->Services;
      int noOfServices = myServiceCollection->Count;
      Console::WriteLine( "\nTotal number of services: {0}", noOfServices );

      // Gets a reference to the service.
      Service^ myOldService = myServiceCollection[ 0 ];
      Console::WriteLine( "No. of ports in the service: {0}", myServiceCollection[ 0 ]->Ports->Count );
      Console::WriteLine( "These are the ports in the service:" );
      for ( int i = 0; i < myOldService->Ports->Count; i++ )
         Console::WriteLine( "Port name: {0}", myOldService->Ports[ i ]->Name );
      Console::WriteLine( "Service name: {0}", myOldService->Name );
      Service^ myService = gcnew Service;
      myService->Name = "MathService";

      // Add the Ports to the newly created Service.
      for ( int i = 0; i < myOldService->Ports->Count; i++ )
      {
         String^ PortName = myServiceCollection[ 0 ]->Ports[ i ]->Name;
         String^ BindingName = myServiceCollection[ 0 ]->Ports[ i ]->Binding->Name;
         myService->Ports->Add( CreatePort( PortName, BindingName, myServiceDescription->TargetNamespace ) );
      }
      Console::WriteLine( "Newly created ports -" );
      for ( int i = 0; i < myService->Ports->Count; i++ )
         Console::WriteLine( "Port name: {0}", myOldService->Ports[ i ]->Name );

      // Add the extensions to the newly created Service.
      int noOfExtensions = myOldService->Extensions->Count;
      Console::WriteLine( "No. of extensions: {0}", noOfExtensions );
      if ( noOfExtensions > 0 )
      {
         for ( int i = 0; i < myOldService->Ports->Count; i++ )
            myService->Extensions->Add( myServiceCollection[ 0 ]->Extensions[ i ] );
      }

      // Remove the service from the collection.
      myServiceCollection->Remove( myOldService );

      // Add the newly created service.
      myServiceCollection->Add( myService );
      myServiceDescription->Write( "MathService_New.wsdl" );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: {0}", e->Message );
   }
}
using System;
using System.Web.Services.Description;
using System.Xml;

class MyServiceClass
{
   public static void Main()
   {
      try
      {
         // Read a WSDL document.
         ServiceDescription myServiceDescription =
            ServiceDescription.Read("MathService_CS.wsdl");
         ServiceCollection myServiceCollection =
            myServiceDescription.Services;

         int noOfServices = myServiceCollection.Count;
         Console.WriteLine("\nTotal number of services: " + noOfServices);

         // Gets a reference to the service.
         Service  myOldService = myServiceCollection[0];
         Console.WriteLine("No. of ports in the service: "+
            myServiceCollection[0].Ports.Count);
         Console.WriteLine("These are the ports in the service:");
         for(int i = 0 ; i < myOldService.Ports.Count; i++)
            Console.WriteLine("Port name: " + myOldService.Ports[i].Name);
         Console.WriteLine("Service name: " + myOldService.Name);

         Service myService = new Service();
         myService.Name = "MathService";

         // Add the Ports to the newly created Service.
         for(int i = 0; i < myOldService.Ports.Count; i++)
         {
            string PortName = myServiceCollection[0].Ports[i].Name;
            string BindingName = myServiceCollection[0].Ports[i].Binding.Name;
            myService.Ports.Add(CreatePort(PortName,BindingName,
               myServiceDescription.TargetNamespace));
         }

         Console.WriteLine("Newly created ports -");
         for(int i = 0; i < myService.Ports.Count; i++)
            Console.WriteLine("Port name: " + myOldService.Ports[i].Name);

         // Add the extensions to the newly created Service.
         int noOfExtensions = myOldService.Extensions.Count;
         Console.WriteLine("No. of extensions: " + noOfExtensions);
         if (noOfExtensions > 0)
         {
            for(int i = 0; i < myOldService.Ports.Count; i++)
               myService.Extensions.Add(myServiceCollection[0].Extensions[i]);
         }

         // Remove the service from the collection.
         myServiceCollection.Remove(myOldService);

         // Add the newly created service.
         myServiceCollection.Add(myService);

         myServiceDescription.Write("MathService_New.wsdl");
      }
      catch(Exception e)
      {
         Console.WriteLine("Exception: " + e.Message);
      }
   }

   public static Port CreatePort(string PortName,string BindingName,
      string targetNamespace)
   {
      Port myPort = new Port();
      myPort.Name = PortName;
      myPort.Binding = new XmlQualifiedName(BindingName,targetNamespace);

      // Create a SoapAddress extensibility element to add to the port.
      SoapAddressBinding mySoapAddressBinding = new SoapAddressBinding();
      mySoapAddressBinding.Location =
         "http://localhost/ServiceClass/MathService_CS.asmx";
      myPort.Extensions.Add(mySoapAddressBinding);
      return myPort;
   }
}
Imports System.Web.Services.Description
Imports System.Xml

Class MyServiceClass
   Public Shared Sub Main()
      Try
         ' Read a WSDL document.
         Dim myServiceDescription As ServiceDescription = _
            ServiceDescription.Read("MathService_vb.wsdl")
         Dim myServiceCollection As ServiceCollection = _
            myServiceDescription.Services

         Dim noOfServices As Integer = myServiceCollection.Count
         Console.WriteLine(ControlChars.Newline & _
            "Total Number of Services :" & noOfServices.ToString())

         ' Gets a reference to the service.
         Dim myOldService As Service = myServiceCollection(0)
         Console.WriteLine("No. of Ports in the Service" & _
            myServiceCollection(0).Ports.Count.ToString())
         Console.WriteLine("These are the ports in the service:")
         Dim i As Integer
         For i = 0 To myOldService.Ports.Count - 1
            Console.WriteLine("Port name: " & myOldService.Ports(i).Name)
         Next i
         Console.WriteLine("Service name: " & myOldService.Name)

         Dim myService As New Service()
         myService.Name = "MathService"

         ' Add the Ports to the newly created Service.
         Dim j As Integer
         For j = 0 To myOldService.Ports.Count - 1
            Dim PortName As String = myServiceCollection(0).Ports(j).Name
            Dim BindingName As String = _
               myServiceCollection(0).Ports(j).Binding.Name
            myService.Ports.Add(CreatePort(PortName, BindingName, _
               myServiceDescription.TargetNamespace))
         Next j

         Console.WriteLine("Newly created ports -")
         Dim k As Integer
         For k = 0 To myService.Ports.Count - 1
            Console.WriteLine("Port name: " & myOldService.Ports(k).Name)
         Next k 

         ' Add the extensions to the newly created Service.
         Dim noOfExtensions As Integer = myOldService.Extensions.Count
         Console.WriteLine("No. of extensions: " & noOfExtensions.ToString())
         If noOfExtensions > 0 Then
            Dim l As Integer
            For l = 0 To myOldService.Ports.Count - 1
               myService.Extensions.Add(myServiceCollection(0).Extensions(l))
            Next l
         End If 

         ' Remove the service from the collection.
         myServiceCollection.Remove(myOldService)

         ' Add the newly created service.
         myServiceCollection.Add(myService)
         
         myServiceDescription.Write("MathService_New.wsdl")
      Catch e As Exception
         Console.WriteLine("Exception:" & e.Message)
      End Try
   End Sub

   Public Shared Function CreatePort(PortName As String, _
          BindingName As String, targetNamespace As String) As Port
      Dim myPort As New Port()
      myPort.Name = PortName
      myPort.Binding = New XmlQualifiedName(BindingName, targetNamespace)

      ' Create a SoapAddress extensibility element to add to the port.
      Dim mySoapAddressBinding As New SoapAddressBinding()
      mySoapAddressBinding.Location = _
         "http://localhost/ServiceClass/MathService.vb.asmx"
      myPort.Extensions.Add(mySoapAddressBinding)
      Return myPort
   End Function 'CreatePort
End Class

備註

Service類別對應於由<definitions>根元素包圍的 Web Services Description Language(WSDL)<service>元素。 欲了解更多關於 WSDL 的資訊,請參閱 WSDL 規範。

建構函式

名稱 Description
Service()

初始化 Service 類別的新執行個體。

屬性

名稱 Description
Documentation

取得或設定 實例 DocumentableItem的文字文件。

(繼承來源 DocumentableItem)
DocumentationElement

取得或設定 文件元素。DocumentableItem

(繼承來源 DocumentableItem)
ExtensibleAttributes

取得或設定一個型別 XmlAttribute 陣列,代表 WSDL 的屬性擴充,以符合 Web Services 互通性(WS-I)Basic Profile 1.1。

(繼承來源 DocumentableItem)
Extensions

取得與 相關聯的可擴展元素集合。Service

Name

取得或設定物品名稱。

Name

取得或設定物品名稱。

(繼承來源 NamedItem)
Namespaces

取得或設定命名空間前綴與命名空間的字典,用於在物件建構時 ServiceDescription 保留命名空間前綴與命名空間。

(繼承來源 DocumentableItem)
Ports

取得包含在 中的實例集合PortService

ServiceDescription

獲得 ServiceDescriptionService 所屬的成員。

方法

名稱 Description
Equals(Object)

判斷指定的 物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設雜湊函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

適用於