Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Temel bulma örneği, bir hizmetin nasıl bulunabilir hale getirileceklerini ve bulunabilir bir hizmeti nasıl arayıp çağıracaklarını gösterir. Bu örnek iki projeden oluşur: hizmet ve istemci.
Uyarı
Bu örnek kodda keşifi hayata geçirir. Yapılandırmada keşif uygulayan bir örnek için bkz Yapılandırma.
Hizmet
Bu basit bir hesap makinesi hizmeti uygulamasıdır. İlgili keşif kodu, hizmet konağına bir Main eklendiği ve aşağıdaki kodda gösterildiği gibi bir ServiceDiscoveryBehavior eklendiği UdpDiscoveryEndpoint içerisinde bulunabilir.
using (ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
serviceHost.AddServiceEndpoint(typeof(ICalculatorService), new
WSHttpBinding(), String.Empty);
// Make the service discoverable over UDP multicast
serviceHost.Description.Behaviors.Add(new ServiceDiscoveryBehavior());
serviceHost.AddServiceEndpoint(new UdpDiscoveryEndpoint());
serviceHost.Open();
// ...
}
Müşteri
İstemci, hizmeti bulmak için bir DynamicEndpoint kullanır. İstemci açıldığında, standart bir uç nokta olan DynamicEndpoint, hizmetin uç noktasını çözümler. Bu durumda, DynamicEndpoint hizmet sözleşmesine göre hizmeti arar. , DynamicEndpoint aramayı varsayılan olarak bir UdpDiscoveryEndpoint üzerinden yürütür. Bir hizmet uç noktasını bulduklarında, istemci belirtilen bağlama üzerinden bu hizmete bağlanır.
public static void Main()
{
DynamicEndpoint dynamicEndpoint = new DynamicEndpoint( ContractDescription.GetContract(typeof(ICalculatorService)), new WSHttpBinding());
// ...
}
İstemci, hizmetleri aramak için sınıfını InvokeCalculatorService kullanan adlı DiscoveryClient bir yöntem tanımlar.
DynamicEndpoint
ServiceEndpoint devralır, böylece InvokeCalculatorService yöntemine geçirilebilir. Örnek, hesap makinesi hizmetinin çeşitli işlemlerini çağırmak için DynamicEndpoint örneğini oluşturur ve CalculatorServiceClient nesnesini kullanır.
static void InvokeCalculatorService(ServiceEndpoint serviceEndpoint)
{
// Create a client
CalculatorServiceClient client = new CalculatorServiceClient(serviceEndpoint);
Console.WriteLine("Invoking CalculatorService");
Console.WriteLine();
double value1 = 100.00D;
double value2 = 15.99D;
// Call the Add service operation.
double result = client.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
// Call the Subtract service operation.
result = client.Subtract(value1, value2);
Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result);
// Call the Multiply service operation.
result = client.Multiply(value1, value2);
Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result);
// Call the Divide service operation.
result = client.Divide(value1, value2);
Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result);
Console.WriteLine();
//Closing the client gracefully closes the connection and cleans up resources
client.Close();
}
Bu örneği kullanmak için
Bu örnek HTTP uç noktalarını kullanır ve bu örneği çalıştırmak için uygun URL ACL'lerinin eklenmesi gerekir. Daha fazla bilgi için bkz . HTTP ve HTTPS'yi yapılandırma. Yükseltilmiş bir ayrıcalıkta aşağıdaki komutun yürütülmesi uygun ACL'leri eklemelidir. Komut olduğu gibi çalışmazsa, Etki Alanınızı ve Kullanıcı Adınızı aşağıdaki bağımsız değişkenler ile değiştirmek isteyebilirsiniz.
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%Visual Studio'yu kullanarak Basic.sln açın ve örneği oluşturun.
service.exe uygulamasını çalıştırın.
Hizmet başlatıldıktan sonra client.exeçalıştırın.
İstemcinin adresini bilmeden hizmeti bulabildiğini gözlemleyin.