ServiceEndpointCollection 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
包含服務的端點的集合。
public ref class ServiceEndpointCollection : System::Collections::ObjectModel::Collection<System::ServiceModel::Description::ServiceEndpoint ^>
public class ServiceEndpointCollection : System.Collections.ObjectModel.Collection<System.ServiceModel.Description.ServiceEndpoint>
type ServiceEndpointCollection = class
inherit Collection<ServiceEndpoint>
Public Class ServiceEndpointCollection
Inherits Collection(Of ServiceEndpoint)
- 繼承
範例
下列範例會示範如何使用 Find 和 FindAll 方法來列舉符合各種搜尋準則的 ServiceEndpoint 物件。
[System.ServiceModel.ServiceContractAttribute(
Namespace = "http://Microsoft.ServiceModel.Samples")]
public interface IAdd
{
[System.ServiceModel.OperationContractAttribute(
Action = "http://Microsoft.ServiceModel.Samples/IAdd/Add",
ReplyAction = "http://Microsoft.ServiceModel.Samples/IAdd/AddResponse")]
double Add(double n1, double n2);
}
public interface IAddChannel : IAdd, System.ServiceModel.IClientChannel
{
}
public partial class AddClient : System.ServiceModel.ClientBase<IAdd>, IAdd
{
public AddClient()
{
}
public AddClient(string endpointConfigurationName)
:
base(endpointConfigurationName)
{
}
public AddClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress address)
:
base(binding, address)
{
}
public double Add(double n1, double n2)
{
return base.Channel.Add(n1, n2);
}
}
using System;
using System.Configuration;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Collections.ObjectModel;
using System.Collections.Generic;
using System.Xml;
namespace Microsoft.ServiceModel.Samples
{
// Define an add service contract.
[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")]
public interface IAdd
{
[OperationContract]
double Add(double n1, double n2);
}
// Implement the add service contract.
public class AddService : IAdd
{
public double Add(double n1, double n2)
{
double result = n1 + n2;
Console.WriteLine("Received Add({0},{1})", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}
// Host the add service within an EXE console application.
public static void Main()
{
// Set addresses for the service from configuration.
Uri baseAddress = new Uri(ConfigurationManager.AppSettings["baseAddress"]);
// Create a ServiceHost for the AddService type at the addAdddress.
ServiceHost serviceHost = new ServiceHost(typeof(AddService), baseAddress);
// Enumerate endpoints (defined in the App.config file).
Console.WriteLine("All endpoints for the service:");
ServiceDescription desc = serviceHost.Description;
foreach (ServiceEndpoint endpoint in desc.Endpoints)
{
Console.WriteLine("Endpoint - address: {0}", endpoint.Address);
Console.WriteLine(" binding: {0}", endpoint.Binding.Name);
Console.WriteLine(" contract: {0}", endpoint.Contract.Name);
Console.WriteLine();
}
// Find a service endpoint using the base address.
ServiceEndpoint baseEndpoint = desc.Endpoints.Find(baseAddress);
Console.WriteLine("A service endpoint at the base address:");
Console.WriteLine("Endpoint - address: {0}", baseEndpoint.Address);
Console.WriteLine(" binding name: {0}", baseEndpoint.Binding.Name);
Console.WriteLine(" contract name: {0}", baseEndpoint.Contract.Name);
Console.WriteLine();
// Find an endpoint for the IAdd type of service.
ServiceEndpoint addEndpoint = desc.Endpoints.Find(typeof(IAdd));
Console.WriteLine("A service endpoint of the IAdd type:");
Console.WriteLine("Endpoint - address: {0}", addEndpoint.Address);
Console.WriteLine(" binding name: {0}", addEndpoint.Binding.Name);
Console.WriteLine(" contract name: {0}", addEndpoint.Contract.Name);
Console.WriteLine();
// Find all of the endpoints for the IAdd type of service.
Collection<ServiceEndpoint> addEndpoints = desc.Endpoints.FindAll(typeof(IAdd));
Console.WriteLine("All the endpoints for the service of the IAdd type:");
foreach (ServiceEndpoint endpoint in addEndpoints)
{
Console.WriteLine("Endpoint - address: {0}", endpoint.Address);
Console.WriteLine(" binding name: {0}", endpoint.Binding.Name);
Console.WriteLine(" contract name: {0}", endpoint.Contract.Name);
Console.WriteLine();
}
// Find all of the endpoints for the service with the specific qualified contract name.
XmlQualifiedName contractQName = new XmlQualifiedName("IAdd","http://Microsoft.ServiceModel.Samples");
Collection<ServiceEndpoint> contractEndpoints = desc.Endpoints.FindAll(contractQName);
Console.WriteLine("All endpoints for the service with the contract QName\n\t http://Microsoft.ServiceModel.Samples.IAdd");
foreach (ServiceEndpoint endpoint in contractEndpoints)
{
Console.WriteLine("Endpoint - address: {0}", endpoint.Address);
Console.WriteLine(" binding name: {0}", endpoint.Binding.Name);
Console.WriteLine(" contract name: {0}", endpoint.Contract.Name);
Console.WriteLine(" contract namespace: {0}", endpoint.Contract.Namespace);
Console.WriteLine();
}
// Open the ServiceHostBase to create listeners and 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 ServiceHostBase to shutdown the service.
serviceHost.Close();
}
}
}
/* This code produces the following output:
All endpoints for the service:
Endpoint - address: http://localhost:8000/samples/service
binding: WSHttpBinding
contract: IAdd
Endpoint - address: net.tcp://localhost:9000/samples/service
binding: NetTcpBinding
contract: IAdd
A service endpoint at the base address:
Endpoint - address: http://localhost:8000/samples/service
binding name: WSHttpBinding
contract name: IAdd
A service endpoint of the IAdd type:
Endpoint - address: http://localhost:8000/samples/service
binding name: WSHttpBinding
contract name: IAdd
All the endpoints for the service of the IAdd type:
Endpoint - address: http://localhost:8000/samples/service
binding name: WSHttpBinding
contract name: IAdd
Endpoint - address: net.tcp://localhost:9000/samples/service
binding name: NetTcpBinding
contract name: IAdd
All endpoints for the service with the contract QName
http://Microsoft.ServiceModel.Samples.IAdd
Endpoint - address: http://localhost:8000/samples/service
binding name: WSHttpBinding
contract name: IAdd
contract namespace: http://Microsoft.ServiceModel.Samples
Endpoint - address: net.tcp://localhost:9000/samples/service
binding name: NetTcpBinding
contract name: IAdd
contract namespace: http://Microsoft.ServiceModel.Samples
The service is ready.
Press <ENTER> to terminate service.
*/
備註
這個服務端點的集合是由中繼資料 API 用於管理具有多個端點的服務。 例如,當從 WSDL 連接埠型別建立服務端點時,會由 ServiceEndpointCollection 屬性和 Endpoints 方法傳回 ImportAllEndpoints。
此集合提供 Find 尋找具有特定名稱或位址之特定型別端點的能力;或是提供 FindAll 尋找符合指定合約類型或名稱準則之服務端點的能力。
屬性
Count |
取得 Collection<T> 中實際包含的項目數目。 (繼承來源 Collection<T>) |
Item[Int32] |
在指定的索引位置上取得或設定項目。 (繼承來源 Collection<T>) |
Items |
取得 IList<T> 周圍的 Collection<T> 包裝函式。 (繼承來源 Collection<T>) |
方法
明確介面實作
ICollection.CopyTo(Array, Int32) |
從特定的 ICollection 索引開始,將 Array 的項目複製到 Array。 (繼承來源 Collection<T>) |
ICollection.IsSynchronized |
取得值,這個值表示對 ICollection 的存取是否同步 (安全執行緒)。 (繼承來源 Collection<T>) |
ICollection.SyncRoot |
取得可用以同步存取 ICollection 的物件。 (繼承來源 Collection<T>) |
ICollection<T>.IsReadOnly |
取得值,指出 ICollection<T> 是否唯讀。 (繼承來源 Collection<T>) |
IEnumerable.GetEnumerator() |
傳回逐一查看集合的列舉值。 (繼承來源 Collection<T>) |
IList.Add(Object) |
將項目加入至 IList。 (繼承來源 Collection<T>) |
IList.Contains(Object) |
判斷 IList 是否包含特定值。 (繼承來源 Collection<T>) |
IList.IndexOf(Object) |
判斷 IList 中指定項目的索引。 (繼承來源 Collection<T>) |
IList.Insert(Int32, Object) |
將項目插入 IList 中指定的索引處。 (繼承來源 Collection<T>) |
IList.IsFixedSize |
取得值,指出 IList 是否有固定的大小。 (繼承來源 Collection<T>) |
IList.IsReadOnly |
取得值,指出 IList 是否唯讀。 (繼承來源 Collection<T>) |
IList.Item[Int32] |
在指定的索引位置上取得或設定項目。 (繼承來源 Collection<T>) |
IList.Remove(Object) |
從 IList 移除特定物件之第一個符合的元素。 (繼承來源 Collection<T>) |