c # - Windows Mobile Development: Valg af. Net kompakt vs Native (c ++) kode

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg arbejder på et erfarent og forskelligt udviklingshold, og vi forbereder os på at nærme vores første mobiludvikling, som kommer til Windows Mobile 6 (platformsændringer er ikke en mulighed).


Vi har færdigheder og erfaring i både Visual C ++ og .Net teknologier til Windows desktop og server udvikling.


Den mobile udvikling omfatter nogle billedbehandling og læs/skriveadgang til en bluetooth enhed. Desværre kan jeg ikke give mere detaljer end det.


Vi forsøger at vælge mellem at skrive den mobile klient ved hjælp af administreret kode eller indbygget kode. Vi bruger henholdsvis C # eller C ++.


Mine spørgsmål er:



  • Hvor stor er den forventede resultatforskel mellem disse sprog? Jeg har hørt, at den oprindelige kode er betydeligt hurtigere på mobile enheder, men jeg vil gerne høre fra nogen med erfaring.

  • Er der store fordele for begge sprog i form af at arbejde med Windows Mobile-tjenesterne for at få adgang til Bluetooth-enheder?

  • Er der en indvirkning på batteriets levetid mellem administreret eller indbygget kode?

  • Er der nogen anden vigtig bør vide for os at overveje?



Jeg sætter pris på din feedback.

Bedste reference


Et meget lignende spørgsmål blev stillet og besvaret for et par dage siden. Du kan finde nyttige oplysninger der.


Korte svar på dine spørgsmål:



  • Native kode er hurtigere, men for mange applikationer kan hastighedsforskellen ikke mærkes. Brug ikke indbygget kode kun for hastigheden, medmindre dette er en nøglefaktor for din ansøgning. Administrerede applikationer kan også køre hurtigt - det kan tage dem længere tid at starte.

  • Der er et godt Bluetooth-bibliotek til .NET-applikationer. Jeg er ikke opmærksom på et lignende bibliotek til C ++-applikationer.

  • Det er op til dit design for at opnå en god batterilevetid. Valg af platform betyder ikke noget.


Andre referencer 1


En anden overvejelse er spørgsmålet om hukommelsesbrug og modulstørrelse. Vi har kørt ind i betydelige problemer i mobiludvikling, og prøver simpelthen at få OS til at indlæse alle vores DLL'er i hukommelsen. I modsætning til almindelig Windows-udvikling er der en meget streng grænse på 32 Mb, hvor alle moduler skal indlæses. Vi har været nødt til at udføre mange meget beskidte tricks for at få alle vores ting indlæst med succes. Vi har fundet ud af, at selvom en bruger tænder for mobiltelefonen eller bruger en bluetooth enhed, vil driverne for disse enheder forårsage, at vores applikation fejler fordi de ville bruge pladsen til vores moduler. [2]


Med alt det i tankerne har vi ikke været i stand til at tilføje støtte til. Net i vores ansøgning på grund af den ekstra modulvægt, som dette ville have indført i vores ansøgning. Det kan være nødvendigt at tage dette i tillæg, hvis din ansøgning har mange afhængigheder.

Andre referencer 2


Ud over det store og lange svar i det andet spørgsmål nævnt af kgiannakakis, må jeg tilføje nogle få tanker og punkter.


På min arbejdsplads har vi skrevet applikationer til Windows CE 5.0 ved hjælp af C ++ og ATL/WTL. Dette ender med at være hyggeligt at arbejde med og meget let sammenlignet med både MFC og .Net.


Det andet punkt at tage højde for (som forklaret af en senior udvikler her) er at .Net kompakte ramme skal genompilere byte-koden i maskinkode hver gang applikationen skiftes til. Dette kan potentielt tage lang tid og processorkraft, så vær forsigtig.