Autor Beitrag
doublecross
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 149
Erhaltene Danke: 27

Windows 7
C#; Visual Studio 2015
BeitragVerfasst: Mo 19.08.19 07:01 
Hallo,

ich versuche gerade eine besehende .NET Anwendung so zu erweitern, dass sie Ihre Informationen auch per Web-API preisgibt. Hierbei ist es mit gelungen einen HttpSelfHostServer aufzusetzen und eine erste (noch nicht wirklich produktive, Schnittstelle in Form eines ApiController aufzusetzen. Als Gegenstelle soll eine Angular SPA fungieren.

Mein Problem ist, dass die Anwendung, welche die API stellt, den Webclient gegebenenfalls über Statusänderungen informieren muss. Natülich könnte ich diese so gestalten, dass sie von Zeit zu Zeit bei meiner Anwendung nachfragt, ob sich etwas geändert hat, ich suche aber nach einem eleganteren Weg. Ich habe im Netz ein paar Hinweise darauf gefunden, dass es wohl möglich ist Java-Script Callbacks zu definieren, welche dann vom Server (also meiner Anwendung) aufgerufen werden können. Leider habe ich aber keine Beispiele dafür finden können. Da ich aber sehr frisch in dem Themengebiet bin wären solche schon sehr Hilfreich.

Daher wende ich mich an euch. Wisst ihr, wo ich konkretere Informationen zu dem Thema finden kann? Könnt ihr mir vielleicht erklären, was ich zu tun habe? Oder ist dies vielleicht sogar ein schlechter Weg mein Problem zu lösen und ihr könnt mir einen besseren aufzeigen?

Gruß,
Doublecross
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 19.08.19 09:13 
Moin,

ein Weg, der von ASP.NET (zumindest ASP.NET Core, beim nicht-Core weiß ich es gerade nicht) nativ unterstützt wird, ist SignalR: dotnet.microsoft.com/apps/aspnet/signalr Es benutzt WebSockets um genau den Rückkanal bereitzustellen, den Du brauchst. Wenn Du auf der verlinkten Seite auf "Get Started" klickst, kommst Du auch zu einem kleinen Tutorial, wie man es benutzt.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".

Für diesen Beitrag haben gedankt: doublecross
doublecross Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 149
Erhaltene Danke: 27

Windows 7
C#; Visual Studio 2015
BeitragVerfasst: Di 20.08.19 12:47 
Danke Christian,

ich werde das so bald wie möglich versuchen das umzusetzen. Heute muss ich mich leider um etwas anderes kümmern aber die Problemstellung läuft ja nicht weg :wink:.

Einen schönen Tag noch!
doublecross Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 149
Erhaltene Danke: 27

Windows 7
C#; Visual Studio 2015
BeitragVerfasst: Mo 26.08.19 13:35 
Hallo noch einmal!

Nachdem mich das Thema SignalR die letzten Arbeitstage ein wenig in den Wahnsinn getrieben hat (ich habe wahrscheinlich jedes Fettnäpfchen mitgenommen, das zu finden war), kann ich nun Erfolg vermelden.

Zur Information, falls zukünftig jemand ähnliches vorhat.

SignalR gibt es nicht nur für.NET Core, sondern auch für das klassische .NET Framework – aber die beiden Varianten sind nicht völlig deckungsgleich. Insbesondere muss auch auf der Seite der SPA darauf geachtet werden, dass das richtige Script von Microsoft eingebunden wird.

@aspnet/signalr:
Dies ist das Paket für .NET Core

ASP.NET SignalR JavaScript Client:
Dieses hingegen ist zu verwenden, wenn mit dem klassischen Framework gearbeitet wird.

Darüber hinaus habe ich auch noch ng2-signalr entdeckt, dieses funktioniert wieder nicht mit dem mit Core Skripten.

Als Tipp kann ich nur mitgeben, achtet drauf, welche Pakete ihr verwendet und startet von Zeit zu Zeit den Debugbrowser neu, da der sich auch ganz gerne mal beim aushandeln der Verbindung verschluckt und dann gar nichts mehr geht.

Von mir noch einmal einen Riesen Dank an Christian!

Für diesen Beitrag haben gedankt: Christian S.