Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Výstupní model Unified Point of Service (UnifiedPOS) se skládá ze dvou výstupních typů; synchronní a asynchronní. Typ zařízení POS může podporovat jeden nebo oba typy, nebo ani jeden typ.
Synchronní výstup
Když aplikace používá synchronní metodu specifickou pro zařízení k zápisu výstupu, provede se operace zápisu ve stejném vlákně, které volala metodu. Objekt služby se nemusí vrátit, dokud se operace zápisu nedokončila nebo se nezdařila.
Použití synchronního výstupu je jednoduché, ale může to potenciálně ovlivnit výkon aplikace, pokud se výstup nedá relativně rychle dokončit. Vývojáři objektů služby by to měli vzít v úvahu.
Asynchronní výstup
Některé typy zařízení POS podporují asynchronní výstup. V asynchronním výstupním modelu aplikace volá objekt služby k vyžádání výstupu dat do zařízení. Na rozdíl od synchronního modelu však objekt služby nesmí čekat na dokončení operace zápisu; místo toho by měl co nejdříve vrátit řízení do aplikace. Když objekt služby obdrží požadavek z aplikace, měl by provést následující:
- Pokud fyzické zařízení nemůže přijímat data, objekt služby by ho měl ukládat do vyrovnávací paměti, dokud nebude zařízení připravené.
- Nastavte vlastnost OutputId na identifikátor pro tento požadavek, který se použije při budoucích událostech odesílaných do aplikace.
- Vraťte se co nejdříve.
Objekt služby pak musí počkat, až zařízení dokončí požadavek. Obvykle se to provádí pomocí samostatného vlákna spravovaného objektem služby, který monitoruje hardware. Po úspěšném dokončení požadavku se událost OutputCompleteEvent s outputEventArgs.OutputId nastavenou na dříve zadaný identifikátor zařadí do fronty pro doručení do aplikace.
Spravovaná fronta objektu služby
PoS pro knihovnu tříd .NET nabízí podporu asynchronního výstupu, což je dostačující pro téměř všechny scénáře objektu služby.
Existují však některé scénáře, ve kterých mohou vývojáři objektů služby implementovat vlastní asynchronní zpracování výstupu. Primárním scénářem je podpora zařízení, která podporují hardwarové tiskové fronty. V tomto případě Service Object nastaví UseExternalPrintQueue na true, přepíše PreQueuePrintData metoda a implementuje vlastní mechanismus fronty.
Pokud je useExternalPrintQueue nastavena na hodnotu true, základní třída již nepřidá tiskové požadavky do své interní asynchronní fronty, takže je až na vývojáře objektů služby, aby zařadili data do fronty jakýmkoli způsobem, který vyžadují. To se často provádí pomocí funkcí front hardwaru zařízení. Základní třída stále předvaliduje stejné tiskové požadavky, ale neprovádí žádné další zpracování.
V těchto případech bude objekt služby zodpovědný za následující:
- Implementace vlastní logiky řazení do fronty
- Odesílání StatusUpdateEvents pro úspěšné operace
- Odesílání chyb ChybEvent pro neúspěšné asynchronní operace a zpracování opakování
- Aktualizace vlastnosti stavu
- Všechny ostatní asynchronní operace definované ve specifikaci UnifiedPOS.
Viz také
Úlohy
- Ukázka obslužné rutiny události
- Ukázka asynchronního výstupu
- Představujeme vlákna čtečky objektů služby