Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Ukázka GettingStarted ukazuje, jak implementovat typickou službu a typického klienta pomocí technologie Windows Communication Foundation (WCF). Tento vzorek je základem všech ostatních základních technologických ukázek.
Poznámka:
Postup nastavení a pokyny k sestavení pro tuto ukázku najdete na konci tohoto tématu.
Služba popisuje operace, které provádí ve smlouvě o poskytování služeb, které veřejně zveřejňuje jako metadata. Služba obsahuje také kód pro implementaci operací.
Klient obsahuje definici kontraktu služby a třídu proxy pro přístup ke službě. Kód proxy serveru se generuje z metadat služby pomocí nástroje ServiceModel Metadata Utility (Svcutil.exe).
Ve Windows Vista je služba hostovaná ve službě aktivace systému Windows (WAS). V systémech Windows XP a Windows Server 2003 je hostování zajišťováno pomocí Internetové informační služby (IIS) a ASP.NET. Hostování služby ve službě IIS nebo WAS umožňuje automatické aktivaci služby při prvním přístupu.
Poznámka:
Pokud chcete raději začít s ukázkou, která je hostitelem služby v konzolové aplikaci místo služby IIS, podívejte se na ukázku samoobslužného hostitele .
Služba a klient určují podrobnosti o přístupu v nastavení konfiguračního souboru, které poskytují flexibilitu v době nasazení. To zahrnuje definici koncového bodu, která určuje adresu, vazbu a kontrakt. Vazba určuje podrobnosti přenosu a zabezpečení pro přístup ke službě.
Služba konfiguruje chování modulu runtime pro publikování metadat.
Služba implementuje kontrakt, který definuje komunikační vzor žádosti a odpovědi. Kontrakt je definován ICalculator rozhraním, které zveřejňuje matematické operace (sčítání, odčítání, násobení a dělení). Klient odešle požadavky na danou matematickou operaci a služba odpoví výsledkem. Služba implementuje ICalculator kontrakt definovaný v následujícím kódu.
' Define a service contract.
<ServiceContract(Namespace:="http://Microsoft.Samples.GettingStarted")>
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
// Define a service contract.
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
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);
}
Implementace služby vypočítá a vrátí odpovídající výsledek, jak je znázorněno v následujícím ukázkovém kódu.
' Service class which implements the service contract.
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
// Service class that implements the service contract.
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;
}
}
Služba zveřejňuje koncový bod pro komunikaci se službou definovanou pomocí konfiguračního souboru (Web.config), jak je znázorněno v následující ukázkové konfiguraci.
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- ICalculator is exposed at the base address provided by
host: http://localhost/servicemodelsamples/service.svc. -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
...
</service>
</services>
Služba zveřejňuje koncový bod na základní adrese poskytované službou IIS nebo hostitelem WAS. Vazba se konfiguruje se standardním WSHttpBindingprotokolem , který poskytuje komunikaci HTTP a standardní protokoly webových služeb pro adresování a zabezpečení. Smlouva je ICalculator implementovaná službou.
Služba může být díky své konfiguraci dostupná klientovi na stejném počítači na http://localhost/servicemodelsamples/service.svc. Pro klienty na vzdálených počítačích pro přístup ke službě musí být místo localhost zadán plně kvalifikovaný název domény.
Architektura ve výchozím nastavení nezpřístupňuje metadata. Proto služba zapne ServiceMetadataBehavior a zveřejní koncový bod výměny metadat (MEX) na adrese http://localhost/servicemodelsamples/service.svc/mex. Toto ukazuje následující konfigurace.
<system.serviceModel>
<services>
<service
name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
...
<!-- the mex endpoint is exposed at
http://localhost/servicemodelsamples/service.svc/mex -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<!--For debugging purposes set the includeExceptionDetailInFaults
attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Klient komunikuje pomocí daného typu kontraktu pomocí třídy klienta vygenerované nástrojem ServiceModel Metadata Utility (Svcutil.exe). Tento vygenerovaný klient je obsažen v souboru generatedClient.cs nebo generatedClient.vb. Tento nástroj načte metadata pro danou službu a vygeneruje klienta pro použití klientskou aplikací ke komunikaci pomocí daného typu kontraktu. Hostovaná služba musí být k dispozici pro vygenerování kódu klienta, protože služba se používá k načtení aktualizovaných metadat.
Spuštěním následujícího příkazu z příkazového řádku sady SDK v klientském adresáři vygenerujte zadaný proxy server:
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs
Chcete-li vygenerovat klienta v jazyce Visual Basic, zadejte následující příkaz z příkazového řádku sady SDK:
Svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
Pomocí vygenerovaného klienta má klient přístup k danému koncovému bodu služby konfigurací příslušné adresy a vazby. Podobně jako služba klient používá konfigurační soubor (App.config) k určení koncového bodu, se kterým chce komunikovat. Konfigurace koncového bodu klienta se skládá z absolutní adresy koncového bodu služby, vazby a kontraktu, jak je znázorněno v následujícím příkladu.
<client>
<endpoint
address="http://localhost/servicemodelsamples/service.svc"
binding="wsHttpBinding"
contract=" Microsoft.ServiceModel.Samples.ICalculator" />
</client>
Implementace klienta vytvoří instanci klienta a použije typové rozhraní k zahájení komunikace se službou, jak je znázorněno v následujícím ukázkovém kódu.
' Create a client
Dim client As New CalculatorClient()
' Call the Add service operation.
Dim value1 = 100.0R
Dim value2 = 15.99R
Dim result = client.Add(value1, value2)
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result)
' Call the Subtract service operation.
value1 = 145.00R
value2 = 76.54R
result = client.Subtract(value1, value2)
Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result)
' Call the Multiply service operation.
value1 = 9.00R
value2 = 81.25R
result = client.Multiply(value1, value2)
Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result)
' Call the Divide service operation.
value1 = 22.00R
value2 = 7.00R
result = client.Divide(value1, value2)
Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result)
'Closing the client gracefully closes the connection and cleans up resources
// Create a client.
CalculatorClient client = new CalculatorClient();
// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = client.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);
// Call the Subtract service operation.
value1 = 145.00D;
value2 = 76.54D;
result = client.Subtract(value1, value2);
Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result);
// Call the Multiply service operation.
value1 = 9.00D;
value2 = 81.25D;
result = client.Multiply(value1, value2);
Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result);
// Call the Divide service operation.
value1 = 22.00D;
value2 = 7.00D;
result = client.Divide(value1, value2);
Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result);
//Closing the client releases all communication resources.
client.Close();
Při spuštění ukázky se požadavky na operace a odpovědi zobrazí v okně konzoly klienta. Stisknutím klávesy ENTER v okně klienta klienta ukončete klienta.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Ukázka Začínáme ukazuje standardní způsob vytvoření služby a klienta. Další verze základu vychází z tohoto příkladu, aby demonstrovala konkrétní funkce produktu.
Jak nastavit, sestavit a spustit ukázku
Ujistěte se, že jste provedli instalační proceduru One-Time pro ukázky Windows Communication Foundation.
Pokud chcete sestavit verzi C# nebo Visual Basic .NET řešení, postupujte podle pokynů v Sestavení ukázek Windows Communication Foundation.
Pokud chcete spustit ukázku v konfiguraci s jedním počítačem nebo konfiguraci na více počítačích, postupujte podle pokynů v části Spouštění ukázek Windows Communication Foundation.