Una DLL sviluppata in .NET è accessibile da qualsiasi lingua o sistema operativo?

0

Sto creando una DLL che voglio distribuire al pubblico per usarla come vogliono. Questa DLL contiene funzioni di utilità comuni. Le persone possono usarlo su qualsiasi sistema operativo e con qualsiasi linguaggio o struttura. Quindi, voglio chiedere che la DLL creata usando .NET 3.5 o superiore sia accessibile da altri linguaggi, sistemi operativi o framework? O devo scrivere queste funzioni anche in altre lingue o per diversi sistemi operativi? Conosco solo C # e non voglio spendere soldi per una libreria distribuita pubblicamente.

    
posta Aishwarya Shiva 02.01.2015 - 19:08
fonte

2 risposte

5

Una DLL .NET contiene il linguaggio intermedio che richiede il runtime .NET per eseguirlo e probabilmente alcune librerie di base .NET che usa / dipende da.

Ciò significa che la DLL può essere utilizzata solo su hardware / sistemi operativi che dispongono di un .NET Framework corrispondente.

Scrivere un codice per tutte possibili piattaforme è quasi impossibile e ti consiglierei di capire quali piattaforme hai davvero bisogno di supportare perché anche quando trovi un modo per eseguire la DLL su tutte le piattaforme costano un sacco di sforzi per testarlo effettivamente su tutte le piattaforme e supportarlo su tutte le piattaforme. Sarà molto più economico / più facile coprire la chiave / i principali sistemi operativi per i tuoi clienti.

    
risposta data 02.01.2015 - 21:16
fonte
2

Una DLL è un formato utilizzato per le librerie condivise dal sistema operativo Microsoft Windows. Altri sistemi operativi utilizzano altri formati e poiché le DLL sono binari, non possono generalmente essere utilizzati su altre architetture di processori come i dispositivi ARM. Pertanto, le DLL sono di scarsa o scarsa utilità su Mac OS X, su sistemi operativi basati su Linux come Ubuntu e su dispositivi mobili (ad esempio, con iOS, Android o Windows Phone).

(il punto sulle architetture dei processori non è del tutto vero dato che i programmi C # sono in genere compilati in bytecode intermedio indipendente dall'architettura, tuttavia altre DLL non hanno questa flessibilità)

Inoltre, il codice scritto in C # richiede in genere il framework .NET o almeno il runtime .NET per funzionare. Diversi sistemi operativi Windows supportano diverse librerie .NET. Il targeting per codice del desktop potrebbe non funzionare su dispositivi mobili. Le librerie .NET di Microsoft non sono attualmente disponibili su sistemi non Windows.

Anche se la tua DLL scritta in C # sarà di scarsa utilità su sistemi non Windows, ci sono alcune possibilità per rendere il tuo codice più ampiamente utilizzabile:

  • Il progetto WINE offre un livello di compatibilità Windows per sistemi operativi di tipo Unix. A condizione che l'architettura del processore corrisponda, ciò consente agli utenti di eseguire EXE, che possono anche utilizzare DLL. Tuttavia, WINE non è un meccanismo praticabile per rendere le librerie utilizzabili. Sfortunatamente, il progetto WINE - come sforzo volontario - è in ritardo di anni nelle funzionalità di Windows.

  • Il progetto Mono offre una reimmagliatura del framework .NET e del linguaggio C # che gira su una varietà di dispositivi e sistemi operativi, inclusi Linux e dispositivi mobili. È quindi possibile ricompilare la libreria per ciascun sistema di destinazione utilizzando Mono. Tuttavia, l'implementazione Mono è in ritardo di anni, quindi non sarà possibile utilizzare le funzionalità del linguaggio moderno o aggiunte più recenti alle API .NET. Portare il codice su Mono è possibile, ma potrebbe richiedere un certo sforzo. Microsoft ha annunciato che aggiungerà il supporto per i sistemi non Windows, ma fino ad allora Mono è la soluzione migliore.

  • Se ti accontenti solo del targeting dei sistemi Windows, offri pacchetti compilati tramite NuGet. Ciò rende più semplice per gli altri programmatori C # ottenere e incorporare la tua libreria.

  • Considera la pubblicazione del codice sorgente. Ciò rende il debug molto più semplice per gli utenti della tua biblioteca e aiuta gli altri ad aiutarti. GitHub è un buon punto di partenza per utilizzare Git per il controllo della versione.

  • Dimentica C # e usa un linguaggio veramente multipiattaforma. Tuttavia, sarai sempre bloccato in un ecosistema specifico. Se si utilizza Java, la libreria può essere utilizzata solo da altre lingue in esecuzione sulla JVM (ma la JVM viene eseguita su qualsiasi sistema operativo). Quasi tutte le lingue possono facilmente interfacciarsi con una libreria scritta in C, ma scrivere C è difficile (ancora di più se vuoi che il tuo codice sia portatile).

Potrebbero esserci modi più nuovi, ma sono passati un paio d'anni dall'ultima volta che ho scritto C # ...

    
risposta data 02.01.2015 - 21:23
fonte

Leggi altre domande sui tag