Nasıl yapılır: Yapılandırmada Hizmet Bağlama Belirtme
Bu örnekte, temel hesap makinesi hizmeti için bir ICalculator
sözleşme tanımlanır, hizmet sınıfında uygulanır CalculatorService
ve ardından uç noktası Web.config dosyasında yapılandırılır ve burada hizmetin tarafından kullanıldığı BasicHttpBindingbelirtilir. Yapılandırma yerine kod kullanarak bu hizmetin nasıl yapılandırılacağının açıklaması için bkz . Nasıl yapılır: Kodda Hizmet Bağlaması Belirtme.
Bağlama ve adres bilgilerini kodda kesinlik temelli olarak değil, yapılandırmada bildirim temelli olarak belirtmek genellikle en iyi yöntemdir. Dağıtılan bir hizmetin bağlamaları ve adresleri genellikle hizmet geliştirilirken kullanılanlardan farklı olduğundan, kodda uç noktaları tanımlamak genellikle pratik değildir. Daha genel olarak bağlama ve adresleme bilgilerinin kod dışında tutulması, uygulamanın yeniden derlenmesine veya yeniden dağıtılmasına gerek kalmadan bunların değişmesine olanak tanır.
Aşağıdaki yapılandırma adımlarının tümü Yapılandırma Düzenleyicisi Aracı (SvcConfigEditor.exe) kullanılarak yapılabilir.
Bu örneğin kaynak kopyası için bkz . BasicBinding.
Hizmeti yapılandırmak için kullanılacak TemelHttpBinding'i belirtmek için
Hizmet türü için bir hizmet sözleşmesi tanımlayın.
[ServiceContract] public interface ICalculator { [OperationContract] double Add(double n1, double n2); [OperationContract] double Subtract(double n1, double n2); [OperationContract] double Multiply(double n1, double n2); [OperationContract] double Divide(double n1, double n2); }
<ServiceContract()> _ Public Interface ICalculator <OperationContract()> _ Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double <OperationContract()> _ Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double <OperationContract()> _ Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double <OperationContract()> _ Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double End Interface
Hizmet sözleşmesini bir hizmet sınıfında uygulayın.
public class CalculatorService : ICalculator { public double Add(double n1, double n2) { return n1 + n2; } public double Subtract(double n1, double n2) { return n1 - n2; } public double Multiply(double n1, double n2) { return n1 * n2; } public double Divide(double n1, double n2) { return n1 / n2; } }
Public Class CalculatorService Implements ICalculator Public Function Add(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Add Return n1 + n2 End Function Public Function Subtract(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Subtract Return n1 - n2 End Function Public Function Multiply(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Multiply Return n1 * n2 End Function Public Function Divide(ByVal n1 As Double, _ ByVal n2 As Double) As Double Implements ICalculator.Divide Return n1 / n2 End Function End Class
Not
Hizmet uygulaması içinde adres veya bağlama bilgileri belirtilmez. Ayrıca, yapılandırma dosyasından bu bilgileri getirmek için kodun yazılması gerekmez.
kullanan WSHttpBindingiçin bir uç nokta yapılandırmak üzere
CalculatorService
bir Web.config dosyası oluşturun.<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name=" CalculatorService" > <!-- Leave the address blank to be populated by default --> <!-- from the hosting environment,in this case IIS, so --> <!-- the address will just be that of the IIS Virtual --> <!-- Directory. --> <!-- Specify the binding configuration name for that --> <!-- binding type. This is optional but useful if you --> <!-- want to modify the properties of the binding. --> <!-- The bindingConfiguration name Binding1 is defined --> <!-- below in the bindings element. --> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="Binding1" contract="ICalculator" /> </service> </services> <bindings> <wsHttpBinding> <binding name="Binding1"> <!-- Binding property values can be modified here. --> <!-- See the next procedure. --> </binding> </wsHttpBinding> </bindings> </system.serviceModel> </configuration>
Aşağıdaki satırı içeren bir Service.svc dosyası oluşturun ve bunu Internet Information Services (IIS) sanal dizininize yerleştirin.
<%@ServiceHost language=c# Service="CalculatorService" %>
Bağlama özelliklerinin varsayılan değerlerini değiştirmek için
öğesinin varsayılan özellik değerlerinden WSHttpBindingbirini değiştirmek için, wsHttpBinding> öğesi içinde <yeni bir bağlama yapılandırma adı
<binding name="Binding1">
oluşturun ve bu bağlama öğesindeki bağlamanın öznitelikleri için yeni değerleri ayarlayın. Örneğin, varsayılan açma ve kapatma zaman aşımı değerlerini 1 dakika ile 2 dakika arasında değiştirmek için yapılandırma dosyasına aşağıdakileri ekleyin.<wsHttpBinding> <binding name="Binding1" closeTimeout="00:02:00" openTimeout="00:02:00"> </binding> </wsHttpBinding>