Service クラス
XML Web サービスに関連付けられる Port クラスと関連するインスタンスをセットにしてグループ化します。このクラスは継承できません。
この型のすべてのメンバの一覧については、Service メンバ を参照してください。
System.Object
System.Web.Services.Description.DocumentableItem
System.Web.Services.Description.Service
NotInheritable Public Class Service
Inherits DocumentableItem
[C#]
public sealed class Service : DocumentableItem
[C++]
public __gc __sealed class Service : public DocumentableItem
[JScript]
public class Service extends DocumentableItem
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
Service クラスは、 <definitions> ルート要素で囲まれた WSDL (Web Services Description Language) <service> 要素に対応します。WSDL の詳細については、http://www.w3.org/TR/wsdl/ の仕様を参照してください。
使用例
Imports System
Imports System.Web.Services.Description
Imports System.Xml
Imports Microsoft.VisualBasic
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 'Main
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 = _
"https://localhost/ServiceClass/MathService.vb.asmx"
myPort.Extensions.Add(mySoapAddressBinding)
Return myPort
End Function 'CreatePort
End Class 'MyServiceClass
[C#]
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 =
"https://localhost/ServiceClass/MathService_CS.asmx";
myPort.Extensions.Add(mySoapAddressBinding);
return myPort;
}
}
[C++]
#using <mscorlib.dll>
#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 = 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 =
S"https://localhost/ServiceClass/MathService_CS.asmx";
myPort->Extensions->Add(mySoapAddressBinding);
return myPort;
}
int main()
{
try
{
// Read a WSDL document.
ServiceDescription* myServiceDescription =
ServiceDescription::Read(S"MathService_CS.wsdl");
ServiceCollection* myServiceCollection =
myServiceDescription->Services;
int noOfServices = myServiceCollection->Count;
Console::WriteLine(S"\nTotal number of services: {0}", __box(noOfServices));
// Gets a reference to the service.
Service* myOldService = myServiceCollection->Item[0];
Console::WriteLine(S"No. of ports in the service: {0}",
__box(myServiceCollection->Item[0]->Ports->Count));
Console::WriteLine(S"These are the ports in the service:");
for(int i = 0 ; i < myOldService->Ports->Count; i++)
Console::WriteLine(S"Port name: {0}", myOldService->Ports->Item[i]->Name);
Console::WriteLine(S"Service name: {0}", myOldService->Name);
Service* myService = new Service();
myService->Name = S"MathService";
// Add the Ports to the newly created Service.
for(int i = 0; i < myOldService->Ports->Count; i++)
{
String* PortName = myServiceCollection->Item[0]->Ports->Item[i]->Name;
String* BindingName = myServiceCollection->Item[0]->Ports->Item[i]->Binding->Name;
myService->Ports->Add(CreatePort(PortName,BindingName,
myServiceDescription->TargetNamespace));
}
Console::WriteLine(S"Newly created ports -");
for(int i = 0; i < myService->Ports->Count; i++)
Console::WriteLine(S"Port name: {0}", myOldService->Ports->Item[i]->Name);
// Add the extensions to the newly created Service.
int noOfExtensions = myOldService->Extensions->Count;
Console::WriteLine(S"No. of extensions: {0}", __box(noOfExtensions));
if (noOfExtensions > 0)
{
for(int i = 0; i < myOldService->Ports->Count; i++)
myService->Extensions->Add(myServiceCollection->Item[0]->Extensions->Item[i]);
}
// Remove the service from the collection.
myServiceCollection->Remove(myOldService);
// Add the newly created service.
myServiceCollection->Add(myService);
myServiceDescription->Write(S"MathService_New.wsdl");
}
catch(Exception* e)
{
Console::WriteLine(S"Exception: {0}", e->Message);
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Web.Services.Description
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Web.Services (System.Web.Services.dll 内)