Architettura dell'interfaccia utente del driver V4
Importante
La piattaforma di stampa moderna è il mezzo preferito di Windows per comunicare con le stampanti. Ti consigliamo di usare il driver di classe IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi per stampanti.
Per altre informazioni, vedere Piattaforma di stampa moderna e guida alla progettazione dell'app di supporto per la stampa.
Un obiettivo di progettazione generale per l'architettura dei driver v4 era quello di fornire il supporto predefinito per l'interfaccia utente dell'app di Microsoft Store.
Il paradigma dell'interfaccia utente basato su applicazioni usato è un esempio chiaro di questo. Le app per dispositivi UWP offrono agli utenti un'esperienza a schermo intero supportata nell'interfaccia utente dell'app di Microsoft Store. Le app per dispositivi UWP per la stampa forniscono estendibilità per le preferenze di stampa e le notifiche della stampante per le stampanti che supportano il driver di stampa v4. Le app per dispositivi UWP per la stampa forniscono anche visibilità per il dispositivo di stampa nella nuova schermata Start.
Le app di estensione della stampante supportano le preferenze di stampa e le notifiche della stampante quando gli utenti eseguono applicazioni esistenti sul desktop di Windows. Anche se le interfacce utente per queste applicazioni sono molto diverse, con una personalizzata per il tocco e l'altra ottimizzata per gli utenti del mouse e della tastiera, la logica di business e la connessione ai driver di stampa v4 possono comunque essere simili, indipendentemente dall'interfaccia utente.
Il diagramma seguente mostra un'architettura di alto livello delle app per dispositivi di Microsoft Store per gli esempi di estensioni del driver di stampa e della stampante v4 disponibili in GitHub.
Come illustrato nel diagramma precedente, l'architettura basata su modello/visualizzazione/controller consente alle app di condividere codice a livello di modello, scritto in C#.
Estensione di PrinterExtensionLibrary
Il progetto PrinterExtensionLibrary incluso nei vari esempi può essere esteso usando nuove classi o estendendo il set specificato di classi. Poiché Microsoft apporta periodicamente aggiornamenti al codice di esempio, è consigliabile che i partner riducano al minimo il numero di modifiche al codice apportate ai file di origine forniti. Per i partner che estendono il set specificato di classi, è consigliabile contrassegnare le classi esistenti come "parziale" e aggiungere nuove funzioni o sostituzioni in un file di origine separato.
Condivisione di file binari compilati tra app UWP e app desktop
Il progetto PrinterExtensionLibrary fornito negli esempi di estensioni per dispositivi e stampanti di Microsoft Store usa lo stesso codice sorgente, ma può essere utile compilare il codice in modo che sia portabile tra i progetti senza essere compilati separatamente per ogni progetto. Per rendere portabile il codice per il progetto PrinterExtensionLibrary, è necessario convertire il progetto in una libreria di classi portabile. Per eseguire la conversione, seguire questa procedura.
In Microsoft Visual Studio fare clic su File>nuovo>progetto e quindi cercare "Portabile" nella casella Cerca modelli installati.
Selezionare Libreria di classi portabile Visual C#, quindi specificare un nome per il progetto nella casella di testo Nome e fare clic su OK.
Copiare il codice sorgente dal progetto PrinterExtensionLibrary esistente nel nuovo progetto.
Fare clic con il pulsante destro del mouse sul progetto Libreria di classi portabile e scegliere Scarica. Aprire quindi il file con estensione csproj e aggiungere la sezione seguente al file, subito prima dell'ultimo tag nel documento.
<ItemGroup> <COMReference Include="PrinterExtensionLib"> <Guid>{91CE54EE-C67C-4B46-A4FF-99416F27A8BF}</Guid> <VersionMajor>1</VersionMajor> <VersionMinor>0</VersionMinor> <Lcid>0</Lcid> <WrapperTool>tlbimp</WrapperTool> <Isolated>False</Isolated> <EmbedInteropTypes>True</EmbedInteropTypes> </COMReference> </ItemGroup>
Se gli avvisi sono visualizzati come risultato di riferimenti COM, aggiungere quanto segue al <tag PropertyGroup> :
<ResolveComReferenceSilent>true</ResolveComReferenceSilent>
API per gli scenari dell'interfaccia utente di stampa
Un'API è stata sviluppata come parte del modello di driver di stampa v4 per supportare le estensioni della stampante e le app per dispositivi UWP per la stampa. A livello generale, lo scenario delle preferenze di stampa usa PrintTicket, PrintCapabilities e i nuovi contenitori di proprietà per ottenere e archiviare tutte le informazioni. Le notifiche della stampante sono guidate da un nuovo sistema di eventi basato sullo schema Di comunicazione bidirezionale (Bidi) e questo nuovo sistema usa il protocollo AsyncUI tra client e server. La natura incentrata sui dati di questa API significa che un'applicazione può supportare facilmente molti dispositivi.
Le estensioni della stampante devono essere compilate in modo da poter degradare normalmente se i dati richiesti non sono disponibili. Ad esempio, se una particolare funzionalità PrintCapabilities non è disponibile o se una proprietà in uno dei contenitori delle proprietà non è disponibile, questo non dovrebbe impedire il funzionamento del resto dell'app. Quando si accede ai contenitori delle proprietà o a proprietà specifiche in un contenitore delle proprietà, l'app deve usare la sintassi try-catch per assicurarsi che eventuali eccezioni generate non causi l'arresto anomalo dell'app. Per altre informazioni, vedere Interfacce di estensione della stampante.