WCF Data Services unterstützen seit Version 2.0 das serverseitige Zählen von Ergebnismengen. Durch das Anhängen von $count im URL kann man anstelle der Ergebnismenge in XML- oder JSON-Form die Anzahl der Elemente als reinen Text erhalten (Tabelle 1).
URL |
Bedeutung |
---|---|
http://UnserServer/WWWingsDataService.svc/Flug/$count |
Anzahl der Flüge |
http://UnserServer / WWWingsDataService.svc/Flug(101)/Passagier/$count |
Anzahl der Passagiere auf Flug 101 |
http://UnserServer/WWWingsDataService.svc / Flug/$count?$filter=Abflugort eq 'Berlin' |
Anzahl der Flüge von Rom |
Tabelle 1: URL mit „$count“
DataServiceProxy.WWWings6Entities proxy = new DataServiceProxy.WWWings6Entities(
new Uri("http://UnserServer/WWWingsDataService.svc"));
var anz = (from f in proxy.Flug where f.Abflugort == "Rom" select f).Count();
Console.WriteLine(anz);
Mit $inlinecount kann man zusätzlich (!) zur Ergebnismenge ein Zählergebnis erhalten, z. B. neben den ersten beiden Flügen von Rom auch die Anzahl aller Flüge (Abb. 1). Dabei kann man die Art der Zählung angeben. Derzeit ist allpages neben none (keine Zählung) die einzige verfügbare Option.
Web-API-basierte Services müssen nicht zwangsweise innerhalb von IIS laufen. Bei Bedarf kann der Entwickler sie auch in einer benutzerdefinierten Anwendung, zum Beispiel einer Kommandozeilenapplikation oder einem Windows-Dienst, zur Ausführung bringen. Hierbei ist von „Self-Hosting“ die Rede. Die dazu benötigten Assemblies System.Net.Http, System.Web.Extensions, System.Web.Http und System.Web.Http.SelfHost können entweder manuell eingebunden oder über ein zu diesem Zwecke bereitgestelltes NuGet Package mit dem Namen Microsoft.AspNet.WebAPI.SelfHost bezogen werden.
Bei Self-Hosting-Szenarien ist zu beachten, dass ab Windows Vista Benutzer vom Administrator die Erlaubnis erhalten müssen, um Services über HTTP bereitstellen zu können. Zum Erteilen dieser Rechte steht das Dienstprogramm netsh XE "netsh" zur Verfügung. Die folgende Anweisung würde zum Beispiel dem Benutzer DOMAIN\user das Recht geben, einen HTTP-basierenden Service über Port 8080 bereitzustellen:
netsh http add urlacl url=http://+:8080 user=DOMAIN\user
Alternativ dazu können Self-Hosting-Szenarien getestet werden, indem Visual Studio oder der kompilierte Self-Host als Administrator gestartet werden (Kontextmenübefehl Als Administrator starten).
Wie Listing 1 zeigt, muss der Entwickler...