Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 20007|Antwoord: 1

[ASP.NET] Introductie en introductie tot SignalR

[Link kopiëren]
Geplaatst op 05-07-2017 10:21:40 | | | |
1. Wat is SignalR:        
ASP.NET SignalR is een bibliotheek van klassen die wordt aangeboden om het proces van het toevoegen van live webinhoud aan applicaties door ontwikkelontwikkelaars te vereenvoudigen. Realtime webfunctionaliteit verwijst naar het toestaan dat servercode content actief naar clients kan pushen op elk moment, in plaats van de server te laten wachten op een verzoek van de client (voordat de content wordt teruggegeven).
Alle "live" soorten webfunctionaliteit kunnen aan je ASP.NET-applicatie worden toegevoegd met SignalR. Het meest gebruikte voorbeeld zijn chatrooms, maar we kunnen veel meer dan dat. Overweeg de volgende situaties: gebruikers moeten de webpagina voortdurend verversen om de nieuwste data te zien; Of haal (en toon nieuwe data op de pagina door long polling toe te passen), dan kun je overwegen SignalR te gebruiken om dat te doen. Bijvoorbeeld: dashboards en monitoringapplicaties; Samenwerkingsapplicaties (bijvoorbeeld meerdere mensen die tegelijkertijd documenten bewerken); Updates over de voortgang van het werk en realtime presentatieformulieren, enzovoort.
SignalR is ook geschikt voor nieuwere soorten webapplicaties die hoogfrequente updates van de server vereisen, zoals realtime gamen. Hier is een goed voorbeeld: ShoorR.
SignalR biedt een eenvoudige API waarmee gebruikers server-to-client remote procedure calls (RPC's) kunnen maken die eenvoudig vanaf serverzijde toegankelijk zijn. Netcode. SignalR bevat ook verbindingen (bijvoorbeeld verbindings- en ontkoppelingsgebeurtenissen) en verbindingsgroepering.

SignalR kan verbindingen automatisch beheren. En laat je broadcastberichten naar alle verbonden clients sturen, net als een chatroom. Natuurlijk kun je naast massaal verzenden ook berichten sturen naar specifieke klanten. De verbinding tussen de client en de server is persistent, in tegenstelling tot het traditionele HTTP-protocol, dat vereist dat de verbinding voor elke communicatie opnieuw tot stand wordt gebracht.
SignalR ondersteunt de "server push"-functie, waarbij servercode clientcode in de browser kan oproepen door gebruik te maken van remote procedure calls (RPC) in plaats van verzoeken die momenteel veel op het web worden gebruikt - het bijbehorende verwerkingsmodel.
SignalR-applicaties kunnen worden uitgebreid naar duizenden clients via Service Bus, SQL SERVER of Redis.
SignalR is open source en is toegankelijk via GitHub.

2. SignalR en WebSocket        

ignalR gebruikt de WebSocket-transportmethode - waar mogelijk. En automatisch overschakelen naar de oude transportmethode (bijvoorbeeld HTTP lange verbinding). Je kunt je applicatie zeker direct schrijven met WebSockets, maar met SignalR heb je meer extra functionaliteit zonder het wiel opnieuw uit te hoeven vinden. Het belangrijkste is dat je je kunt richten op de bedrijfsimplementatie zonder na te denken over het apart maken van compatibele code voor de oude client. SignalR stelt je ook in staat om je zorgen te maken over WebSocket-updates, omdat SignalR blijft worden bijgewerkt om het veranderen van onderliggende transportmethoden te ondersteunen om een consistente toegangsinterface te bieden voor applicaties in verschillende versies van WebSockets.
Natuurlijk kun je een oplossing maken die alleen WebSocket-transport gebruikt, en SignalR biedt alle functies die je nodig hebt om je eigen code te schrijven, zoals terugvallen op andere transportmethoden en het aanpassen van je applicatie voor nieuwere WebSocket-implementaties.

3. Vervoer en terugkeer      

SignalR is een abstractie van de transporttechnologie die nodig is om realtime functies tussen clients en servers te implementeren. SignalR start eerst de verbinding met HTTP en controleert of de WebSocket beschikbaar is - als dat zeker is, upgrade dan naar de verbinding van de WebSocket. WebSocket is de meest ideale transmissiemethode voor SignalR omdat het het meest efficiënt gebruik maakt van servergeheugen, de laagste latentie en uitgebreide onderliggende functies heeft (zoals full-duplex communicatie tussen client en server), maar ook de strengste eisen heeft: de server moet het besturingssysteem Windows Server 2012 of Windows 8 gebruiken, en dat tegelijkertijd. .NET framework versie 4.5 en hoger. Als aan deze eisen niet wordt voldaan, zal SignalR proberen een alternatieve transmissiemethode te gebruiken om verbinding te maken.

4. HTML5-verzending         

De gebruikte transportmethode hangt af van of de clientbrowser HTML5 ondersteunt, anders wordt de oude transportmethode gebruikt.
          WebSocket (als zowel de server als de browser WebSocket ondersteunen). WebSocket is de enige manier om een echte en duurzame tweerichtingsverbinding op te bouwen aan zowel de client- als serverzijde. Natuurlijk heeft WebSocket ook de strengste eisen: het wordt alleen ondersteund in de nieuwste versies van IE, Chrome en FF, en is slechts gedeeltelijk geïmplementeerd in andere browsers zoals Opera en Safari.
Server stuurt events, ook wel EventSource genoemd (als de browser server-verzendende events ondersteunt, ondersteunen vrijwel alle browsers behalve IE deze functie).

5. Komeettransmissie

De volgende transporttypes zijn gebaseerd op het Comet webapplicatiemodel, waarbij de browser of client een lange HTTP-verbinding aanvraagt en de server data naar de client kan sturen zonder expliciet verzoek van de client.
Forever Frame (alleen IE) Forever Frame maakt een verborgen IFrame aan die een verzoek naar de server stuurt dat niet wordt voltooid. De server stuurt vervolgens continu scripts naar de client en wordt direct door de client uitgevoerd, dat wil zeggen een eenrichtingsverbinding in realtime van de server naar de client. De client-naar-serververbinding gebruikt een andere verbinding dan die verbinding. Een standaard HTML-verzoek maakt bijvoorbeeld een nieuwe verbinding voor elke verzonden data.
Ajax long polling creëert geen persistente verbinding, maar pollt door voortdurend verzoeken aan de server te doen. Wacht tot de server reageert en sluit deze verbinding bij elke verbinding, en dien dan direct een nieuw verzoek in. Natuurlijk veroorzaakt dit wat vertraging wanneer de verbinding wordt gereset- en herverbonden.
Voor informatie over de transportmethoden die door verschillende configuraties worden ondersteund, zie Ondersteunde platforms. (IE vereist 8 of hoger, andere browsers zijn de huidige versie -1)
Proces voor het selecteren van overdrachtsmethoden
De volgende lijst laat zien hoe SignalR beslist welk type voor de transmissie wordt gebruikt.
IE8 en eerder, gebruik long polling.
Als JSONP is geconfigureerd (d.w.z. de jsonp-parameter is op true gezet bij het verbinden), gebruik dan long polling.
Als je een cross-domain verbinding gebruikt (d.w.z. het SignalR-eindpunt en de pagina zitten niet in hetzelfde domein), gebruik dan WebSockets als aan de volgende voorwaarden is voldaan:
De client ondersteunt Cross-Domain Resource Sharing (CORS), zie CORS op voor details
De client ondersteunt WebSocket
De server ondersteunt WebSocket
Als aan een van bovenstaande voorwaarden niet wordt voldaan, wordt een lange poll gebruikt. Voor meer informatie over cross-domein verbindingen, zie Hoe je cross-domein verbindingen tot stand brengt.
Als je het gebruik van JSONP niet configureert en de verbinding niet cross-domain is, gebruik dan natuurlijk WebSocket, mits zowel de client als de server WebSocket ondersteunen.
Als de client of server WebSockets niet ondersteunt, gebruik dan de server om gebeurtenissen te verzenden.
Als de server een gebeurtenis stuurt die niet beschikbaar is, gebruik dan een Forever Frame.
Als Forever Frame niet beschikbaar is, gebruik dan long polling.
Monitortransmissie
Je kunt zien welke transportmethode jouw applicatie gebruikt door Hub-logging in te schakelen en in de console van je browser te werken.
Om loggen mogelijk te maken, voeg je het volgende commando toe aan de clientapplicatie:
nnection.hub.logging = waar;

6. Inspectie en transport:    

Je kunt zien welke transportmethode jouw applicatie gebruikt door Hub-logging in te schakelen en in de console van je browser te werken. Om loggen mogelijk te maken, voeg je het volgende commando toe aan de clientapplicatie:
    nnection.hub.logging = waar;
        $.connection.hub.logging = waar;
In IE druk je op F12 om de ontwikkelaarstools te openen en klik je op het tabblad Console.

In Chrome druk je op Ctrl+Shift+J om de console te openen


Door de logging in de console te observeren, kun je de transmissiemethode zien die SignalR gebruikt.


7. Aangewezen Schepen:

Het onderhandelen over de transmissiemethode vereist een bepaalde hoeveelheid tijd en de middelen van de server/client. Als de clientomgeving bekend is, kan de transportmethode worden gespecificeerd wanneer de verbinding wordt gestart om de prestaties te verbeteren. De volgende code toont aan dat Ajax' long polling direct bij het starten van de verbinding wordt gebruikt als bekend is dat de client een ander protocol ondersteunt:
connection.start({ transport: 'longPolling' });
Als je wilt dat een klant het transport in een specifieke volgorde onderhandelt, kun je de volgorde specificeren waarin de onderhandeling wordt geprobeerd. De onderstaande code laat zien hoe je eerst WebSockets kunt proberen en direct na een mislukking long polling kunt doen.
connection.start({ transport: ['webSockets','longPolling'] });
De stringconstanten die door de gebruiker worden gespecificeerd, worden als volgt gedefinieerd:
webSockets
forverFrame
serverSentEvents
LongPolling

8. Verbindingen en Hubs De SignalR API omvat twee client-server communicatiemodellen: persistente verbindingen en hubs.

Een verbinding vormt een eenvoudig eindpunt voor het verzenden van een enkel, gegroepeerd of broadcastbericht. De PersistentConnection API (vertegenwoordigd door de PersistentConnection-klasse in .NET-code) geeft ontwikkelaars directe toegang tot het onderliggende communicatieprotocol van SignalR. Ontwikkelaars die verbindingsgebaseerde API's zoals WCF hebben gebruikt, zijn meer vertrouwd met het verbindingscommunicatiemodel.
Hubs zijn API-gebaseerde, maar hogere communicatiepijplijnen die clients en servers in staat stellen methoden direct naar elkaar aan te roepen. SignalR doet uitstekend werk bij het afhandelen van cross-machine scheduling, waardoor clients eenvoudig methoden op de server kunnen aanroepen alsof ze lokale methoden aanroepen, en omgekeerd. Ontwikkelaars die gebruikmaken van externe call-based AIP's zoals .Net Remoting zijn meer vertrouwd met het hubmodel. Met de hub kun je ook sterk getypeerde parameters doorgeven aan methoden en deze aan het model binden.

        Architectuurdiagram: Het onderstaande diagram toont de relatie tussen de hub, de continue verbinding en de onderliggende technologie die voor transport wordt gebruikt.


9. Hoe de hub werkt:

Wanneer de servercode de client aanroept, stuurt de server een pakket met de aanroepende methode en parameters (wanneer het object als methodeparameter wordt gebruikt, wordt het als JSON geserialiseerd om te verzenden) naar de client. De client controleert vervolgens de naam van de ontvangen methode en voert een match-lookup uit in de door de client gedefinieerde methode, en als de match succesvol is, wordt de methode uitgevoerd en wordt het gedeserialiseerde object als methodeparameter gebruikt.
Je kunt tools zoals Fiddler gebruiken om de uitvoering van methodeaanroepen te monitoren. De volgende afbeelding toont een methode die is vastgelegd uit Fiddler's logs en van de SignalR-server naar de webbrowserclient wordt gestuurd. De methode die vanaf de hub wordt gestart heet MoveShapeHub, en de methode die updateShape heet.


In dit voorbeeld wordt de naam van de hub geïdentificeerd met de parameter "H", de methodenaam met de parameter "M", en het parameterobject dat naar de methode wordt gestuurd wordt geïdentificeerd met de parameter "A". De applicatie die het bericht genereerde, werd geïmplementeerd in de high-frequency realtime communicatietutorial.
Kies een communicatiemodel:
De meeste applicaties gebruiken de API van de hub, die in de volgende situaties kan worden gebruikt:
Je moet het formaat specificeren waarin het bericht wordt verzonden.
Ontwikkelaars geven de voorkeur aan een messaging- en planningsmodel in plaats van een remote call-model
Het berichtenmodel wordt gebruikt in bestaande applicaties en is gepland om naar SignalR te worden geporteerd.






Vorig:.net/c# multithreaded het aanpassen van collecties zal een probleem zijn?
Volgend:asp.net mvc4.0 Installeren van SignalR (1)
 Huisbaas| Geplaatst op 27-08-2018 14:18:05 |
Uitgelegd door gangbare methoden van de hub


Clients. Beller: Kan communiceren met de beller

Klanten.Overigen: Communiceert met alle clients die aan deze hub zijn verbonden, behalve met uzelf

Clients.All: Kan communiceren met alle clients die op deze hub zijn aangesloten

Clients.OthersInGroup: Kan communiceren met andere clients die aan de Hub zijn verbonden buiten de opgegeven groep

Clients.Client: Communiceert met clients die een ConnectionId specificeren

Clients.AllExcept: Kan communiceren met alle clients die aan deze hub zijn verbonden, behalve met de opgegeven ConnectionId

Clients. Groep: Communiceert met clients binnen een gespecificeerde groep

Clients.User:可以与指定的userId进行通信
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com