PortType クラス
抽象演算および対応する抽象メッセージの名前付きセットを表します。このクラスは継承できません。
この型のすべてのメンバの一覧については、PortType メンバ を参照してください。
System.Object
System.Web.Services.Description.DocumentableItem
System.Web.Services.Description.PortType
NotInheritable Public Class PortType
Inherits DocumentableItem
[C#]
public sealed class PortType : DocumentableItem
[C++]
public __gc __sealed class PortType : public DocumentableItem
[JScript]
public class PortType extends DocumentableItem
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
PortType クラスは、 <definitions> ルート要素で囲まれた WSDL (Web Services Description Language) <portType> 要素に対応します。WSDL の詳細については、http://www.w3.org/TR/wsdl/ の仕様を参照してください。
使用例
Imports System
Imports System.Web.Services.Description
Imports System.Xml
Imports Microsoft.VisualBasic
Class MyPortTypeClass
Public Shared Sub Main()
Try
Dim myPortTypeCollection As PortTypeCollection
Dim myServiceDescription As ServiceDescription = _
ServiceDescription.Read("MathService_vb.wsdl")
myPortTypeCollection = myServiceDescription.PortTypes
Dim noOfPortTypes As Integer = _
myServiceDescription.PortTypes.Count
Console.WriteLine(ControlChars.Newline & _
"Total number of PortTypes : " & noOfPortTypes.ToString())
Dim myPortType As PortType = _
myPortTypeCollection("MathServiceSoap")
myPortTypeCollection.Remove(myPortType)
' Create a new PortType.
Dim myNewPortType As New PortType()
myNewPortType.Name = "MathServiceSoap"
Dim myOperationCollection As OperationCollection = _
myServiceDescription.PortTypes(0).Operations
Dim i As Integer
For i = 0 To myOperationCollection.Count - 1
Dim inputmsg As String = _
myOperationCollection(i).Name & "SoapIn"
Dim outputmsg As String = _
myOperationCollection(i).Name & "SoapOut"
Console.WriteLine("Operation = " & myOperationCollection(i).Name)
myNewPortType.Operations.Add( _
CreateOperation(myOperationCollection(i).Name, inputmsg, _
outputmsg, myServiceDescription.TargetNamespace))
Next i
' Add the PortType to the collection.
myPortTypeCollection.Add(myNewPortType)
noOfPortTypes = myServiceDescription.PortTypes.Count
Console.WriteLine(ControlChars.Newline & _
"Total Number of PortTypes : " & noOfPortTypes.ToString())
myServiceDescription.Write("MathService_New.wsdl")
Catch e As Exception
Console.WriteLine("Exception: " & e.Message)
End Try
End Sub 'Main
Public Shared Function CreateOperation(operationName As String, _
inputMessage As String, outputMessage As String, _
targetNamespace As String) As Operation
Dim myOperation As New Operation()
myOperation.Name = operationName
Dim input As OperationMessage = _
CType(New OperationInput(), OperationMessage)
input.Message = New XmlQualifiedName(inputMessage, targetNamespace)
Dim output As OperationMessage = _
CType(New OperationOutput(), OperationMessage)
output.Message = New XmlQualifiedName(outputMessage, targetNamespace)
myOperation.Messages.Add(input)
myOperation.Messages.Add(output)
Return myOperation
End Function 'CreateOperation
End Class 'MyPortTypeClass
[C#]
using System;
using System.Web.Services.Description;
using System.Xml;
class MyPortTypeClass
{
public static void Main()
{
try
{
PortTypeCollection myPortTypeCollection;
ServiceDescription myServiceDescription =
ServiceDescription.Read("MathService_CS.wsdl");
myPortTypeCollection = myServiceDescription.PortTypes;
int noOfPortTypes = myServiceDescription.PortTypes.Count;
Console.WriteLine("\nTotal number of PortTypes : "
+ noOfPortTypes);
PortType myPortType = myPortTypeCollection["MathServiceSoap"];
myPortTypeCollection.Remove(myPortType);
// Create a new PortType.
PortType myNewPortType = new PortType();
myNewPortType.Name = "MathServiceSoap";
OperationCollection myOperationCollection =
myServiceDescription.PortTypes[0].Operations;
for(int i=0;i<myOperationCollection.Count;i++)
{
string inputmsg = myOperationCollection[i].Name + "SoapIn";
string outputmsg = myOperationCollection[i].Name + "SoapOut";
Console.WriteLine("Operation = " + myOperationCollection[i].Name);
myNewPortType.Operations.Add(
CreateOperation(myOperationCollection[i].Name, inputmsg,
outputmsg,myServiceDescription.TargetNamespace));
}
// Add the PortType to the collection.
myPortTypeCollection.Add(myNewPortType);
noOfPortTypes = myServiceDescription.PortTypes.Count;
Console.WriteLine("\nTotal Number of PortTypes : "
+ noOfPortTypes);
myServiceDescription.Write("MathService_New.wsdl");
}
catch(Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
}
public static Operation CreateOperation(string operationName,
string inputMessage, string outputMessage, string targetNamespace)
{
Operation myOperation = new Operation();
myOperation.Name = operationName;
OperationMessage input = (OperationMessage) new OperationInput();
input.Message = new XmlQualifiedName(inputMessage, targetNamespace);
OperationMessage output = (OperationMessage) new OperationOutput();
output.Message = new XmlQualifiedName(outputMessage, targetNamespace);
myOperation.Messages.Add(input);
myOperation.Messages.Add(output);
return myOperation;
}
}
[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;
Operation* CreateOperation(String* operationName,
String* inputMessage, String* outputMessage, String* targetNamespace)
{
Operation* myOperation = new Operation();
myOperation->Name = operationName;
OperationMessage* input = dynamic_cast<OperationMessage*> (new OperationInput());
input->Message = new XmlQualifiedName(inputMessage, targetNamespace);
OperationMessage* output = dynamic_cast<OperationMessage*> (new OperationOutput());
output->Message = new XmlQualifiedName(outputMessage, targetNamespace);
myOperation->Messages->Add(input);
myOperation->Messages->Add(output);
return myOperation;
}
int main()
{
try
{
PortTypeCollection* myPortTypeCollection;
ServiceDescription* myServiceDescription =
ServiceDescription::Read(S"MathService_CS.wsdl");
myPortTypeCollection = myServiceDescription->PortTypes;
int noOfPortTypes = myServiceDescription->PortTypes->Count;
Console::WriteLine(S"\nTotal number of PortTypes : {0}", __box(noOfPortTypes));
PortType* myPortType = myPortTypeCollection->Item[S"MathServiceSoap"];
myPortTypeCollection->Remove(myPortType);
// Create a new PortType.
PortType* myNewPortType = new PortType();
myNewPortType->Name = S"MathServiceSoap";
OperationCollection* myOperationCollection =
myServiceDescription->PortTypes->Item[0]->Operations;
for(int i=0;i<myOperationCollection->Count;i++)
{
String* inputmsg = String::Concat( myOperationCollection->Item[i]->Name, S"SoapIn" );
String* outputmsg = String::Concat( myOperationCollection->Item[i]->Name, S"SoapOut" );
Console::WriteLine(S"Operation = {0}", myOperationCollection->Item[i]->Name);
myNewPortType->Operations->Add(
CreateOperation(myOperationCollection->Item[i]->Name, inputmsg,
outputmsg,myServiceDescription->TargetNamespace));
}
// Add the PortType to the collection.
myPortTypeCollection->Add(myNewPortType);
noOfPortTypes = myServiceDescription->PortTypes->Count;
Console::WriteLine(S"\nTotal Number of PortTypes : {0}", __box(noOfPortTypes));
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 内)