Domanda Raccomanderesti il ​​passaggio da Native C ++ a C ++ \ CLI? [duplicare]


Questa domanda ha già una risposta qui:

Ho lavorato come programmatore C ++ nativo per gli ultimi anni. Ora stiamo iniziando un nuovo progetto da zero. Allora, cosa pensi di passare a C ++ \ CLI al costo di perdere il codice indipendente dalla piattaforma. Ci sono dei vantaggi speciali che si possono ottenere passando a C ++ \ CLI?


12
2017-09-30 09:55


origine


risposte:


Consiglierei quanto segue, in base alla mia esperienza con C ++, C # e .NET:

  • Se vuoi andare in modo .NET, usa C #.
  • Se non vuoi .NET, usa il C ++ tradizionale.
  • Se devi collegare il tradizionale C ++ con il codice .NET, usa C ++ / CLI. Funziona sia con .NET chiamando le classi C ++ e C ++ chiamando le classi .NET.

Non ho senso nel solo andare a C ++ / CLI se non ne hai bisogno.


31
2017-09-30 10:05



Alcune domande da considerare prima di cambiare:

[1] Stai bene con Windows? Esistono dei cloni .NET per altri sistemi operativi, ma la tua app non funzionerà in modo trasparente. Una complessità che potresti non aver bisogno.

[2] Stai pensando di passare solo al supporto della raccolta dei rifiuti? Se è così, puoi semplicemente usare alcune librerie di garbage collector in C ++. E se capisci come sfruttare std :: shared_ptr, potresti non sentire la necessità di garbage collector. Un sovraccarico di cui potresti non aver bisogno.

[3] Stai considerando C ++ / CLI a causa della raccolta dati inutili e di tutte le utili classi .NET che puoi sfruttare? Se è così, perché non passare a c #. C ++ / CLI è una tecnologia di transizione ed è meglio non investire risorse in queste cose. c # sta diventando abbastanza maturo e utilizzabile.

Personalmente, mi limiterei a stare con C ++;).


6
2017-09-30 10:11



C'è qualche vantaggio per te? Probabilmente perderai l'ablity per passare a un altro sistema operativo.


3
2017-09-30 09:58



non preoccuparti se non ti stai integrando con le app .NET. Certamente non usare STL / CLR poiché le sue prestazioni sono veramente terribili.

La tentazione di capovolgere quell'interruttore per utilizzare le librerie di classi .NET, ma ci sono alternative. Se lo fai, non sarai in grado di trasferire il tuo codice così facilmente.

Sembra anche che l'aumento di OSS sia in aumento, quindi ora potrebbe essere il momento di investigare usando librerie e strumenti multipiattaforma. È possibile distribuire un'app linux molto più facilmente di una windows one (con la spedizione di un sistema operativo completamente configurato!), E si ottiene un ROI molto migliore se si distribuiscono i client Linux (poiché sono gratuiti).

Se fossi un uomo d'affari, avrei almeno la possibilità di implementarlo su Linux o Mac piuttosto che solo su Windows. Strategicamente, non vorrei scommettere che il mondo è rimasto con Microsoft tra 5 anni.


2
2017-09-30 10:08



Il vantaggio principale che si otterrebbe passando a C ++ / CLI è ottenere l'accesso alle librerie .NET e al framework stesso (garbage collection, ecc.). Tuttavia, per quanto ne so, il motivo principale che esiste C ++ / CLI è di facilitare il porting del codice C ++ esistente da eseguire nel framework .NET. Nuovi progetti sono incoraggiati ad usare C #.

Se hai bisogno di usare il codice C ++ esistente mescolato con il framework .NET, allora avrebbe senso usare C ++ / CLI, ma in generale dovresti iniziare con C #.

Se c'è qualcosa in .NET che il nuovo progetto deve usare estensivamente (forse una progettazione più semplice della GUI o qualcosa del genere), allora usa C #. in caso contrario, segui il linguaggio C ++ nativo. Non penso che perderà qualcosa facendo ciò.


2
2017-09-30 10:55



Non mi piace C ++ / CLI così tanto che consiglierei di sterzare chiaro, come descrivo Qui. Alcuni suggeriscono di usare C ++ / CLI come un ponte tra standard C ++ e C #, ma grazie al modo in cui C ++ / CLI è progettato, è molto noioso da usare in quel modo (devi creare manualmente wrapper del normale codice C ++ che può essere chiamato da C #). Pertanto, lo raccomanderei SWIG invece per interfacciare C ++ standard con C # (anche se ammettiamolo, SWIG ha una curva di apprendimento sostanziale).


1
2017-09-30 20:50



Dai uno sguardo a questi due articoli:

Una panoramica critica di C ++ / CLI, parte I

Una panoramica critica di C ++ / CLI, parte II

Credo che ormai lo sei   convinto come sono che sia C ++ / CLI   né un "set di estensioni a C ++"   (in molti aspetti è in realtà un   sottoinsieme di C ++), né è correlato a   C ++ più di qualsiasi altra lingua con   punto e virgola e parentesi graffe.   Inoltre, C ++ / CLI è sicuramente un   Linguaggio di programmazione orientato a Windows;   non è sicuramente un linguaggio che a   Server Solaris 10 o cellulare Nokia   il telefono sarà felice di correre. Cosa fa   ha qualcosa a che fare con C ++?


1
2018-03-26 11:11