Die guten alten ASP.net Web Services sollten eigentlich schon seit .net knapp 10 Jahren durch WCF abgelöst werden. Aber ASMX findet sich auch heute noch, teilweise auch neu implementiert in vielen Software Projekten. Es ist einfach zu programmieren, zu hosten und zu troubleshooten. Selbst SharePoint bietet eine Reihe von Schnittstellen als ASP.NET Web Service an.
Als Basis dient folgender sehr einfacher ASMX Service, der in einem eigene Projekt innerhalb der Windows 8 Store APP Visual Studio 2012 Solution angelegt wird (vormals METRO).
Imports System.Web.ServicesImports System.Web.Services.ProtocolsImports System.ComponentModel
System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _Public Class WebService1Inherits System.Web.Services.WebService
<WebMethod()> _Public Function GetKunden() As List(Of kunde)
Dim l As New List(Of kunde)
l.Add(New kunde With {.ID = "1", .isMale = True, .FamName = "Mayer", .Vorname = "Klaus"})
l.Add(New kunde With {.ID = "9", .isMale = False, .FamName = "Becker", .Vorname = "Verona"})
l.Add(New kunde With {.ID = "13", .isMale = True, .FamName = "Weber", .Vorname = "Gerhard"})
l.Add(New kunde With {.ID = "31", .isMale = True, .FamName = "Müller", .Vorname = "Thorsten"})
Return lEnd FunctionEnd ClassPublic Class kundeProperty ID As StringProperty Vorname As StringProperty FamName As StringProperty isMale As BooleanEnd ClassUm diesen Service zu nutzen erzeugen die meisten im Visual Studio Projekt per Add Service Reference und URL des Services die Proxy Klassen im Projekt. In einer Winforms Anwendung (nach wie vor) kann man das mehr oder minder direkt über den Zusatzdialog “Advanced” tun.

Diese Option fehlt bei Windows 8 Apps, schlicht weil es dort kein .net 2.0 mehr gibt.
Auf den ersten Blick ist das auch nicht nötig, weil man das auch direkt ganz gut hinbekommt.

Allerdings muss im Gegensatz zu Windows Forms in der WinRT, die Kommunikation Asynchron abgehandelt werden. Das erzeugt ganz neue Problemstellungen für den .NET Code bzw. der VB.NET Source kann nicht direkt wieder verwendet werden.
Dim svc As New ServiceReference1.WebService1SoapClientPrivate Async Sub MainPage_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.LoadedDim resp = Await svc.GetKundenAsync()
liste1.ItemsSource = resp.Body.GetKundenResultEnd Sub
Der nötige XAML Code mit einem Listeview Steuerelement in der Page
<ListView x:Name="liste1"><ListView.ItemTemplate><DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding VorName}"Padding="0,0,5,0"/>
<TextBlock Text="{Binding FamName}" FontWeight="Bold" />
</StackPanel></DataTemplate></ListView.ItemTemplate></ListView>Letztendlich die Ausgabe der Windows 8 APP

Noch ein Paar Hintergrund Infos. Da Windows 8 .NET 4.5 verwendet, kommen eigentlich WCF Proxys zum Einsatz. Microsoft hat allerdings im WCF Bereich ob des konfigurations Desasters auf die App.Config verzichtet. Statt “Contract First” lautet nun die Devise Konvention über Konfiguration.
Also wo findet man nun die nötigen Parameter. Im Code- der reference.vb.

Den kann man natürlich ändern, muss aber in Kauf nehmen, das wenn die Service Reference aktualisiert wird, die Änderungen weg sind.
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitten "kicken" sie ihn.
