WinRT può davvero essere usato solo ai limiti?

15

Microsoft (principalmente, Herb Sutter ) consiglia di utilizzare WinRT con C ++ / CX per mantenere WinRT ai limiti dell'applicazione e mantiene il nucleo dell'applicazione scritto in standard ISO C ++.

Ho scritto un'applicazione che vorrei lasciare portatile, quindi la mia funzionalità di base è stata scritta in C ++ standard e ora sto cercando di scrivere un front-end in stile Metro usando C ++ / CX. Ho avuto un po 'di problemi con questo approccio, comunque. Ad esempio, se voglio spostare un vettore di tipi C ++ definiti dall'utente in un controllo ListView XAML, devo avvolgere il mio tipo definito dall'utente in un tipo ref / value di WinRT perché venga archiviato in Vector^ . Con questo approccio, sono inevitabilmente rimasto con una grande porzione delle mie classi C ++ con classi WinRT.

Questa è la prima volta che ho provato a scrivere un'applicazione portatile portatile in C ++. È davvero pratico mantenere WinRT lungo i confini come questo? In quale altro modo si può gestire questo tipo di core portatile con un limite specifico della piattaforma?

    
posta Bret Kuhns 07.08.2012 - 19:03
fonte

2 risposte

8

IMHO (vecchio programmatore, lavoro in Microsoft ma questa è un'opinione personale): prima che io possa rispondere a questa domanda, devi rispondere a questa altra domanda:

Dove si sta spostando il codice? Se stai attaccando con una singola piattaforma (in questo caso, WinRT), allora sii vicino alla piattaforma - e questo significa usare le astrazioni esistenti. Per il tuo esempio, il tuo codice utilizzerà quindi Vector ^ per soddisfare le esigenze di WinRT.

OTOH, se ti stai spostando da qualche altra parte (rocce VMS!), allora gli standard hanno un senso.

Dato che le tre più grandi piattaforme portatili e tablet sul mercato utilizzano tutte lingue diverse per attività di programmazione comuni, lo spostamento del codice potrebbe non essere un'opzione valida.

    
risposta data 13.10.2012 - 21:53
fonte
0

Non devi usare C ++ / CX, invece puoi usare il WRL ( Windows Libreria di runtime ) simile ai vecchi modelli di ATL, non al C ++ di tipo "finta" che è C ++ / CX. È l'approccio "di basso livello" dalla MS a consumare oggetti WinRT ed è completamente standard C ++ come nonno usato per scrivere!

Potrebbe non essere "bello" come C ++ / CX ma è una questione di opinione - la mia opinione personale è che C ++ / CX è il terzo tentativo di un C ++ esteso, ed è un terzo fallimento. Ignoralo e spera che vada allo stesso modo delle altre 2 incarnazioni.

    
risposta data 12.10.2012 - 20:25
fonte

Leggi altre domande sui tag