Utilizzando MPXJ in .NET
-
20-09-2019 - |
Domanda
Sto cercando di lavorare con i file di MS Project in un'applicazione ASP.NET, e mi sono imbattuto il href="http://mpxj.sourceforge.net/" rel="nofollow noreferrer"> biblioteca , che ha iniziato in Java ed è stato convertito in una versione di .NET pure. Funziona bene in .NET, ma la difficoltà sto trovando con esso è che tutti i suoi metodi utilizzano tipi di dati Java e quelli non native .NET. Ciò significa che per le cose come la formattazione di una data o numero che viene restituito devo andare leggere su java.text.NumberFormat, e gli altri modi in stile Java per interagire con le cose.
Quindi la mia domanda è: sto facendo qualcosa di sbagliato, o non ho praticamente dovuto programmare in "stile Java" di interagire con questa libreria in .NET? Posso certamente gestirlo, ma non sono sicuro che cosa significherà per il futuro manutenibilità, quando qualcuno guarda il mio codice.
Credo che un'altra parte a questa domanda potrebbe essere: c'è qualche altro bene, libero, meccanismo per interagire con i file mpp oltre MPXJ? Le altre due opzioni che ho visto sono a) l'installazione di MS Project sul server e utilizzando il provider OLE DB (non è possibile installare perché è di hosting condiviso), e b) l'acquisto di componenti Aspose.Tasks (almeno $ 600).
Soluzione
Io sostengo MPXJ, così ho pensato che potrebbe essere utile per dire ciao, e ti faccio sapere quello che ho preso in considerazione.
Per rispondere alla tua prima domanda, non credo che si sta facendo qualcosa di sbagliato, sono stato anche alla ricerca di modi per mediare tra tipi Java e .NET quando si utilizza la versione di IKVM MPXJ e là non sembrano essere qualsiasi soluzione stabiliti là fuori. Sto ancora cercando però!
Sono attualmente nel mezzo di aggiungere il supporto Project 2010 a MPXJ, ma una volta chiaro di che ho intenzione di indagare l'uso di una fabbrica di tipo di dati internamente MPXJ che nella versione Java vi darà tipi Java nativo da l'API, e nella versione IVKM Net vi darà esteso IVKM tipi di API che implementano interfacce .Net familiari.
L'obiettivo è quello di evitare gli sviluppatori dover pensare a tipo di conversione, questi tipi modificati dovrebbero "solo lavoro" nella maggior parte dei casi. In mancanza di questo tipo posso fornire utilità di conversione, ma preferisco questo per essere invisibile per gli utenti della versione .Net.
Scuse che non riesco a offrire una soluzione immediata - ma sono consapevole del problema