更新 : 2007 年 11 月
名前空間 :
System.ServiceModel
アセンブリ :
System.ServiceModel (System.ServiceModel.dll 内)
Public Class ServiceHost _
Inherits ServiceHostBase
Dim instance As ServiceHost
public class ServiceHost : ServiceHostBase
public ref class ServiceHost : public ServiceHostBase
public class ServiceHost extends ServiceHostBase
public class ServiceHost extends ServiceHostBase
Windows Communication Foundation (WCF) サービス モデルのプログラミング モデルで使用されるホストを実装します。
インターネット インフォメーション サービス (IIS) と Windows アクティベーション サービス (WAS) のどちらも使用せずにサービスを公開する場合は、ServiceHost クラスを使用して、クライアント アプリケーションが使用するサービスを構成して公開します。IIS と WAS はどちらも ServiceHost オブジェクトと自動的に対話します。
呼び出し元が使用できるようにサービスを公開するために、WCF では、サービスの完全な説明を必要とします (ServiceDescription クラスで表されます)。ServiceHost クラスは、サービスの種類と構成情報から ServiceDescription を作成した後、その説明を使用して、説明に含まれるエンドポイント用の ChannelDispatcher オブジェクトを作成します。
ServiceHost オブジェクトを使用して、サービスのロード、エンドポイントの構成、セキュリティ設定の適用、および受信要求を処理するためのリスナの起動を行います。
' Host the service within this EXE console application.
Public Shared Sub Main()
' Create a ServiceHost for the CalculatorService type and use the base address from config.
Using svcHost As New ServiceHost(GetType(CalculatorService))
Try
' Open the ServiceHost to start listening for messages.
svcHost.Open()
' The service can now be accessed.
Console.WriteLine("The service is ready.")
Console.WriteLine("Press <ENTER> to terminate service.")
Console.WriteLine()
Console.ReadLine()
'Close the ServiceHost.
svcHost.Close()
Catch timeout As TimeoutException
Console.WriteLine(timeout.Message)
Console.ReadLine()
Catch commException As CommunicationException
Console.WriteLine(commException.Message)
Console.ReadLine()
End Try
End Using
End Sub
// Host the service within this EXE console application.
public static void Main()
{
// Create a ServiceHost for the CalculatorService type and use
// the base address from config.
ServiceHost hostDefault = new
ServiceHost(typeof(CalculatorService));
TimeSpan closeTimeout = hostDefault.CloseTimeout;
TimeSpan openTimeout = hostDefault.OpenTimeout;
ServiceAuthorizationBehavior authorization =
hostDefault.Authorization;
ServiceCredentials credentials =
hostDefault.Credentials;
ServiceDescription description =
hostDefault.Description;
int manualFlowControlLimit =
hostDefault.ManualFlowControlLimit;
NetTcpBinding portsharingBinding = new NetTcpBinding();
hostDefault.AddServiceEndpoint(
typeof( CalculatorService ),
portsharingBinding,
"net.tcp://localhost/MyService" );
int newLimit = hostDefault.IncrementManualFlowControlLimit(100);
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService)))
{
try
{
// Open the ServiceHost to start listening for messages.
serviceHost.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();
// Close the ServiceHost.
serviceHost.Close();
}
catch (TimeoutException timeProblem)
{
Console.WriteLine(timeProblem.Message);
Console.ReadLine();
}
catch (CommunicationException commProblem)
{
Console.WriteLine(commProblem.Message);
Console.ReadLine();
}
}
}
System..::.Object
System.ServiceModel.Channels..::.CommunicationObject
System.ServiceModel..::.ServiceHostBase
System.ServiceModel..::.ServiceHost
System.ServiceModel.Web..::.WebServiceHost
この型のすべてのパブリック static (Visual Basic では Shared) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
Windows Vista, Windows XP SP2, Windows Server 2003
.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。
.NET Framework
サポート対象 : 3.5、3.0
参照