Devo mischiare python e .NET?

4

Quindi ho una buona padronanza su come sviluppare rapidamente un'applicazione controllata dalla GUI in .NET (non tanto in Python, ho solo usato Tkinter). Voglio che il mio codice sia facilmente implementabile con pochissime dipendenze. Tuttavia, deve interfacciarsi con un particolare pacchetto software di terze parti che espone una API COM molto difficile o un'API Python molto più semplice.

Sto pensando di scrivere alcuni script Python per eseguire l'elaborazione di cui ho bisogno. Questi script verranno chiamati come sottoprocesso dall'applicazione .NET. Vorrei completare il progetto molto più velocemente in questo modo, invece di passare giorni a lavorare attraverso l'API COM.

Ritengo che il codice risultante sarebbe anche molto più semplice e breve evitando l'API COM, ma mescolerò due lingue se codifico l'applicazione in questo modo. Inoltre non sto spedendo il mio interprete Python con esso, userà quello fornito con il software del fornitore.

Questa è una pessima idea?

Ho cercato IronPython, ma questo software di terze parti apparentemente richiede a cpython di sfruttare la sua API, quindi non sono sicuro che funzionerà a meno che non utilizzi la rotta COM.

    
posta Peter Smith 11.07.2011 - 21:10
fonte

3 risposte

7

Puoi aggiungere il supporto Python alla tua applicazione usando IronPython . Tuttavia, dovresti sapere che questo non include alcuna libreria standard di Python. Puoi effettuare chiamate dal tuo script Python nel runtime .Net con un'importazione dall'aspetto standard.

Ad esempio, se desideri accedere a Decimal.Parse, includi

from System import Decimal 

nella parte superiore del codice.

Incorporare IronPython è in realtà molto semplice. Ecco un articolo che ti aiuterà a iniziare: link

(Modifica su nota: puoi importare anche le librerie Python, ma dovrai distribuirle con la tua applicazione, o in qualche modo dire all'applicazione dove trovare i file .py da importare.)

    
risposta data 11.07.2011 - 21:15
fonte
0

Direi che dipende. I vantaggi dell'utilizzo della soluzione Python che ci hai già detto: più facile da gestire API. Il principale problema è che la comunicazione alla tua API di terze parti passerà attraverso processi secondari, che potrebbero essere potenzialmente più lenti di una chiamata COM api in-process, con meno possibilità di gestione degli errori e gestione degli eventi.

Come hai detto che Python è già installato sul tuo computer di destinazione, la distribuzione sembra non essere un problema qui. E non vorrei passare alla rotta IronPython finché il venditore del tuo software di terze parti non ti dice che la sua API Python è stata creata per questo.

    
risposta data 11.07.2011 - 23:31
fonte
0

Nella mia esperienza, se la tua soluzione può essere installata con un singolo programma di installazione, non importa quante lingue o tecnologie utilizzi, agli utenti non interessa. A seconda del runtime Python del fornitore è probabilmente una buona cosa, almeno non dovresti preoccuparti degli utenti finali che lo aggiornano a una versione (potenzialmente incompatibile).

    
risposta data 12.07.2011 - 01:27
fonte

Leggi altre domande sui tag