Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Het Unified Point Of Service-uitvoermodel (UnifiedPOS) bestaat uit twee uitvoertypen; synchroon en asynchroon. Een POS-apparaattype kan een of beide typen ondersteunen, of geen van beide typen.
Synchrone uitvoer
Wanneer een toepassing een typespecifieke synchrone methode voor het schrijven van uitvoer van een apparaat gebruikt, vindt de schrijfbewerking plaats op dezelfde thread die de methode wordt genoemd. Het serviceobject kan pas worden geretourneerd als de schrijfbewerking is voltooid of mislukt.
Het gebruik van synchrone uitvoer is eenvoudig, maar kan mogelijk van invloed zijn op de prestaties van de toepassing als de uitvoer niet relatief snel kan worden voltooid. Ontwikkelaars van serviceobjecten moeten hier rekening mee houden.
Asynchrone uitvoer
Bepaalde POS-apparaattypen ondersteunen asynchrone uitvoer. In het asynchrone uitvoermodel roept de toepassing het serviceobject aan om aan te vragen dat gegevens naar het apparaat worden uitgevoerd. In tegenstelling tot het synchrone model mag het serviceobject echter niet wachten totdat de schrijfbewerking is voltooid; In plaats daarvan moet het besturingselement zo snel mogelijk naar de toepassing retourneren. Wanneer een serviceobject een aanvraag van de toepassing ontvangt, moet dit het volgende doen:
- Als het fysieke apparaat geen gegevens kan ontvangen, moet het serviceobject het in het geheugen bufferen totdat het apparaat gereed is.
- Stel de eigenschap OutputId in op een id voor deze aanvraag, die moet worden gebruikt tijdens toekomstige gebeurtenissen die naar de toepassing worden verzonden.
- Ga zo snel mogelijk terug.
Het serviceobject moet vervolgens wachten totdat het apparaat de aanvraag heeft voltooid. Dit gebeurt meestal met een afzonderlijke thread die wordt beheerd door het serviceobject, dat de hardware bewaakt. Zodra de aanvraag is voltooid, wordt een Gebeurtenis OutputCompleteEvent , waarbij OutputEventArgs.OutputId is ingesteld op de eerder opgegeven id, in de wachtrij geplaatst voor levering aan de toepassing.
Beheerde wachtrij voor serviceobjecten
De POS voor .NET-klassebibliotheek biedt ondersteuning voor asynchrone uitvoer, wat voldoende is voor bijna alle serviceobjectscenario's.
Er zijn echter scenario's waarin serviceobjectontwikkelaars mogelijk hun eigen asynchrone uitvoerafhandeling moeten implementeren. Het primaire scenario is het ondersteunen van apparaten die ondersteuning bieden voor afdrukwachtrijen op basis van hardware. In dit geval stelt het serviceobject UseExternalPrintQueue in op true, overschrijft de PreQueuePrintData-methode en implementeert het eigen wachtrijmechanisme.
Wanneer UseExternalPrintQueue is ingesteld op true, worden de afdrukaanvragen niet meer toegevoegd aan de interne asynchrone wachtrij. Het is dus aan de ontwikkelaars van serviceobjecten om gegevens in de wachtrij te plaatsen op elke manier die ze nodig hebben. Dit wordt vaak gedaan met behulp van de hardware print queuing-functies van het apparaat. De basisklasse is nog steeds geldig voor dezelfde afdrukaanvragen, maar voert geen extra verwerking uit.
In deze gevallen is het serviceobject verantwoordelijk voor het volgende:
- Het implementeren van een eigen wachtrijlogica.
- StatusUpdateEvents verzenden voor geslaagde bewerkingen .
- ErrorEvents verzenden voor mislukte asynchrone bewerkingen en het opnieuw proberen verwerken.
- De statuseigenschap bijwerken.
- Alle andere asynchrone bewerkingen die zijn gedefinieerd in de UnifiedPOS-specificatie.
Zie ook
Opdrachten
- Voorbeeld van gebeurtenis-handler
- Voorbeeld van asynchrone uitvoer
- Introductie van threads voor serviceobjectlezers