Usługi internetowe - przykłady
W oparciu o architekturę usług sieciowych w ramach implementacji usług internetowych tworzymy dwa następujące komponenty -
Usługodawca lub wydawca
To jest dostawca usługi internetowej. Usługodawca realizuje usługę i udostępnia ją w Internecie lub intranecie.
Napiszemy i opublikujemy prostą usługę internetową przy użyciu .NET SDK.
Zgłaszający usługę lub konsument
To jest dowolny konsument usługi internetowej. Żądający wykorzystuje istniejącą usługę internetową, otwierając połączenie sieciowe i wysyłając żądanie XML.
Napiszemy również dwa requestery usług internetowych: jednego konsumenta internetowego (aplikacja ASP.NET) i drugiego konsumenta aplikacji Windows.
Poniżej przedstawiono nasz pierwszy przykład usługi sieciowej, która działa jako dostawca usług i ujawnia dwie metody (dodaj i SayHello) jako usługi internetowe, które mają być używane przez aplikacje. To jest standardowy szablon usługi internetowej. Usługi sieciowe .NET używają rozszerzenia .asmx. Należy zauważyć, że metoda udostępniana jako usługa internetowa ma atrybut WebMethod. Zapisz ten plik jako FirstService.asmx w katalogu wirtualnym IIS (jak wyjaśniono w konfigurowaniu usług IIS; na przykład c: \ MyWebSerces).
FirstService.asmx
<%@ WebService language = "C#" class = "FirstService" %>
using System;
using System.Web.Services;
using System.Xml.Serialization;
[WebService(Namespace = "http://localhost/MyWebServices/")]
public class FirstService : WebService{
[WebMethod]
public int Add(int a, int b) {
return a + b;
}
[WebMethod]
public String SayHello() {
return "Hello World";
}
}
Aby przetestować usługę internetową, należy ją opublikować. Usługa internetowa może zostać opublikowana w intranecie lub w Internecie. Opublikujemy tę usługę sieciową w usługach IIS uruchomionych na komputerze lokalnym. Zacznijmy od skonfigurowania usług IIS.
Otwórz Start → Ustawienia → Panel sterowania → Narzędzia administracyjne → Menedżer usług internetowych.
Rozwiń i kliknij prawym przyciskiem domyślną witrynę internetową; wybierz Nowy & # rarr; Katalog wirtualny. Otworzy się Kreator tworzenia katalogu wirtualnego. Kliknij Następny.
Otworzy się ekran „Alias katalogu wirtualnego”. Wpisz nazwę katalogu wirtualnego. Na przykład MyWebServices. Kliknij Następny.
Otworzy się ekran „Katalog zawartości witryny sieci Web”.
Wprowadź nazwę ścieżki katalogu wirtualnego. Na przykład c: \ MyWebServices. Kliknij Następny.
Otworzy się ekran „Uprawnienia dostępu”. Zmień ustawienia zgodnie ze swoimi wymaganiami. Zachowajmy domyślne ustawienia tego ćwiczenia.
Kliknij przycisk Dalej. Kończy konfigurację usług IIS.
Kliknij Zakończ, aby zakończyć konfigurację.
Aby sprawdzić, czy usługi IIS zostały poprawnie skonfigurowane, skopiuj plik HTML (na przykład x.html) do utworzonego powyżej katalogu wirtualnego (C: \ MyWebServices). Teraz otwórz Internet Explorera i wpiszhttp://localhost/MyWebServices/x.html. Powinien otworzyć plik x.html.
Note- Jeśli to nie zadziała, spróbuj zastąpić hosta lokalnego adresem IP komputera. Jeśli nadal nie działa, sprawdź, czy usługi IIS są uruchomione; może zajść potrzeba ponownej konfiguracji usług IIS i katalogu wirtualnego.
Aby przetestować tę usługę sieci Web, skopiuj FirstService.asmx do katalogu wirtualnego IIS utworzonego powyżej (C: \ MyWebServices). Otwórz usługę internetową w przeglądarce Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx). Powinien otworzyć stronę usługi internetowej. Strona powinna zawierać linki do dwóch metod udostępnianych przez naszą aplikację jako usługi sieciowe. Gratulacje! Napisałeś swój pierwszy serwis internetowy!
Testowanie usługi internetowej
Jak właśnie widzieliśmy, pisanie usług internetowych w .NET Framework jest łatwe. Pisanie konsumentów usług internetowych jest również łatwe w środowisku .NET; jest jednak nieco bardziej zaangażowana. Jak wspomniano wcześniej, napiszemy dwa rodzaje odbiorców usług, jednego konsumenta internetowego i drugiego konsumenta aplikacji Windows. Napiszmy naszego pierwszego konsumenta usług internetowych.
Konsument usług internetowych
Napisz konsumenta internetowego, jak podano poniżej. Nazwij to WebApp.aspx. Zauważ, że jest to aplikacja ASP.NET. Zapisz to w katalogu wirtualnym usługi internetowej (c: \ MyWebServices \ WebApp.axpx).
Ta aplikacja ma dwa pola tekstowe, które służą do pobierania liczb od użytkownika, który ma zostać dodany. Ma jeden przycisk, Wykonaj, który po kliknięciu powoduje pobranie usług sieciowych Dodaj i SayHello.
WebApp.aspx
<%@ Page Language = "C#" %>
<script runat = "server">
void runSrvice_Click(Object sender, EventArgs e) {
FirstService mySvc = new FirstService();
Label1.Text = mySvc.SayHello();
Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text), Int32.Parse(txtNum2.Text)).ToString();
}
</script>
<html>
<head> </head>
<body>
<form runat = "server">
<p>
<em>First Number to Add </em>:
<asp:TextBox id = "txtNum1" runat = "server" Width = "43px">4< /asp:TextBox>
</p>
<p>
<em>Second Number To Add </em>:
<asp:TextBox id = "txtNum2" runat = "server" Width = "44px">5</asp:TextBox>
</p>
<p>
<strong><u>Web Service Result -</u></strong>
</p>
<p>
<em>Hello world Service</em> :
<asp:Label id = "Label1" runat = "server" Font-Underline = "True">Label< /asp:Label>
</p>
<p>
<em>Add Service</em> :
& <asp:Label id = "Label2" runat = "server" Font-Underline = "True">Label</asp:Label>
</p>
<p align = "left">
<asp:Button id = "runSrvice" onclick = "runSrvice_Click" runat = "server" Text = "Execute"></asp:Button>
</p>
</form>
</body>
</html>
Po utworzeniu konsumenta musimy utworzyć serwer proxy dla usługi internetowej, która ma być używana. Ta praca jest wykonywana automatycznie przez Visual Studio .NET za nas podczas odwoływania się do dodanej usługi sieciowej. Oto kroki, które należy wykonać -
Utwórz serwer proxy dla usługi sieci Web, która ma być używana. Serwer proxy jest tworzony za pomocą narzędzia WSDL dostarczonego z zestawem .NET SDK. To narzędzie wyodrębnia informacje z usługi sieci Web i tworzy serwer proxy. Serwer proxy jest ważny tylko dla określonej usługi internetowej. Jeśli chcesz korzystać z innych usług internetowych, musisz również utworzyć serwer proxy dla tej usługi. Program Visual Studio .NET automatycznie tworzy serwer proxy po dodaniu odwołania do usługi sieci Web. Utwórz serwer proxy dla usługi sieci Web za pomocą narzędzia WSDL dostarczonego z zestawem .NET SDK. Utworzy plik FirstSevice.cs w bieżącym katalogu. Musimy go skompilować, aby utworzyć FirstService.dll (proxy) dla usługi sieci Web.
c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
Umieść skompilowany serwer proxy w katalogu bin katalogu wirtualnego usługi sieci Web (c: \ MyWebServices \ bin). Internetowe usługi informacyjne (IIS) wyszukują serwer proxy w tym katalogu.
Utwórz konsumenta usługi w taki sam sposób, jak to zrobiliśmy. Należy zauważyć, że obiekt serwera proxy usługi sieci Web jest tworzony w konsumentach. Ten serwer proxy obsługuje interakcję z usługą.
Wpisz adres URL konsumenta w IE, aby go przetestować (na przykład http: //localhost/MyWebServices/WebApp.aspx).
Konsument usługi sieci Web opartej na aplikacjach systemu Windows
Pisanie konsumenta usługi internetowej opartej na aplikacji systemu Windows jest takie samo, jak pisanie dowolnej innej aplikacji systemu Windows. Musisz tylko utworzyć proxy (co już zrobiliśmy) i odwołać się do tego proxy podczas kompilacji aplikacji. Poniżej znajduje się nasza aplikacja Windows, która korzysta z usługi sieciowej. Ta aplikacja tworzy obiekt usługi sieciowej (oczywiście proxy) i wywołuje metody SayHello i Add.
WinApp.cs
using System;
using System.IO;
namespace SvcConsumer {
class SvcEater {
public static void Main(String[] args) {
FirstService mySvc = new FirstService();
Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());
Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());
}
}
}
Skompiluj go za pomocą c:\>csc /r:FirstService.dll WinApp.cs
. Stworzy WinApp.exe. Uruchom go, aby przetestować aplikację i usługę internetową.
Teraz pojawia się pytanie: Skąd możesz mieć pewność, że ta aplikacja faktycznie wywołuje usługę internetową?
To jest proste do przetestowania. Zatrzymaj serwer sieciowy, aby nie można było skontaktować się z usługą sieciową. Teraz uruchom aplikację WinApp. Spowoduje to uruchomienie wyjątku czasu wykonywania. Teraz ponownie uruchom serwer WWW. Powinno działać.