Progetto per Librerie Personali

di il
6 risposte

Progetto per Librerie Personali

Gentili,
chiedo un consiglio ai più esperti di me per affrontare al meglio il tema librerie.
In azienda abbiamo iniziato a ragionare sul fatto che spesse volte creiamo codice ridondante oppure ricopiamo delle intere classi su progetti diversi con proliferazione del codice, etc ed ora vorremmo razionalizzare il tutto.
Volendo partire con il piede giusto, o almeno dopo averci ragionato un po' sù e premesso che:
1) Un progetto di libreria che ha più classi crea di norma una sola DDL;
2) Una volta pubblicato un pacchetto su NuGet non si può cancellare ma solo rendere non ricercabile;
avevo pensato di creare un progetto:
1) Tipo: .Net Standard 2.00 (abbiamo progetti vari winform, wpf, asp.net core, servizi .net framework e .net core);
2) Nome Progetto: NomeOrganizzazione.Librerie
3) Poi implementare varie categorie es. NomeOrganizzazione.Librerie.Sicurezza.Crypto, NomeOrganizzazione.Librerie.Office.Csv, etc.
Secondo voi è:
1) Una modalità abbastanza flessibile e razionale?
2) Meglio fare un progetto unico con un unico DLL oppure più progetti singoli con DLL più specializzate?
3) Varie ed eventuali (che non manca mai...)
Come sempre grazie a chiunque mi darà una dritta, e buon weekend.
Lucius

6 Risposte

  • Re: Progetto per Librerie Personali

    1) Una modalità abbastanza flessibile e razionale?
    direi di sì
    2) Meglio fare un progetto unico con un unico DLL oppure più progetti singoli con DLL più specializzate?
    dipende quanto sono ampie ed indipendenti le classi che prevedi di trasformare in dll ,se siete in molti a lavorare sugli stessi progetti avere più dll potrebbe essere un vantaggio in fase di sviluppo per evitare di pestarsi i piedi a vicenda
    3)
  • Re: Progetto per Librerie Personali

    luciusinfabula ha scritto:


    1) Una modalità abbastanza flessibile e razionale?
    Mi pare sensata.

    luciusinfabula ha scritto:


    2) Meglio fare un progetto unico con un unico DLL oppure più progetti singoli con DLL più specializzate?
    A mio avviso, la scelta è correlata alle dipendenze che si trascina dietro di sè la specifica libreria.

    Suppongo che ciascuna libreria avrà dipendenze da altre librerie, sia interne sia di terze parti.
    Da questo punto di vista, più sono granulari e meglio è, altrimenti accorpando eccessivamente si rischia di doversi trascinare dietro un numero elevato di dipendenze, che magari possono richiede configurazioni, licenze e altro ancora e quindi rendere difficoltoso evitare l'antipattern cosiddetto "Entourage".

    Si tratta comunque di un aspetto che deve essere valutato caso per caso e dipende anche da come avviene il design della struttura/organizzazione delle librerie: se alcune contengono esclusivamente interfacce e classi di utilità, e non fanno riferimento a implementazioni particolari, si possono accorpare maggiormente, mentre dall'altro lato qualsiasi cosa costituisca una implementazione specifica (es. una classe che implementa una interfaccia per invio e-mail e permette di collegarsi via SMTP o altro servizio la metterei da sola in una propria libreria).

    Per dare indicazioni più precise, bisognerebbe approfondire sia le classi da distribuire che le necessità/abitudini del team di sviluppo per non generare troppo caos e più disordine del necessario.

    Ciao!
  • Re: Progetto per Librerie Personali

    Avete INIZIATO a ragionare?

    Oh mamma!
  • Re: Progetto per Librerie Personali

    Si avevo pensato anch'io di creare progetti specifici per ciascuna libreria, più agevole lo sviluppo, la distribuzione in NuGet e la manutenzione, per dipendenze, licenze, ed altro.
    Ringrazio per le dritte Surfernet ed Alka, come sempre faccio bene a frequentare questo forum; poi cosa volete il rumore di fondo c'è sempre dapper...tutto.
  • Re: Progetto per Librerie Personali

    Gentili,
    spero di non sbagliare a riprendere questo post, essendo però l'argomento correlato sempre al tema librerie.
    Ho abbastanza capito come procedere per creare delle librerie da caricare su NuGet per renderle disponibili a tutto il gruppo di lavoro, il mio dubbio riguarda solo la tipologia di libreria.
    Avendo progetti in .Net framework e .Net Core (asp.net core, servizi Windows, web.api) avevo deciso di creare delle librerie di tipo .Net Standard 2.0; solo però che certe librerie devono essere usate anche per app. Office, pertanto devono essere configurate anche per COM.
    Vi è già capitato di dover creare librerie .Net Standard con visibilità COM? Sarebbe possibile? Meglio evitare?
    In tal caso dovrei creare più versioni: per .Net Framework-COM e .Net Core o ci sono altre soluzioni?
    Ringrazio come sempre chi vorrà darmi uno spunto di lavoro.
    Saluti e buon fine settimana.
    Lucius
  • Re: Progetto per Librerie Personali

    luciusinfabula ha scritto:


    Vi è già capitato di dover creare librerie .Net Standard con visibilità COM? Sarebbe possibile? Meglio evitare?
    Che io sappia, quanto chiedi non è possibile, in quanto la libreria realizzata con .NET Standard non è concepita per essere impiegata in modalità "stand alone", bensì come contenitore di logica che virtualmente può essere compilata con versioni e tipologie differenti di .NET (Framework e Core) pertanto il progetto che guida il tipo di libreria (assembly) generato e utilizzato dipende dal target dell'applicazione finale.

    Nulla ti impedisce comunque di scrivere la maggior parte della logica in una libreria .NET Standard e poi farne uso in una DLL esposta via COM che fa da "shell", ossia che contiene il minimo indispensabile per registrare e richiamare gli oggetti che offre, lasciando tutta la business logic nella parte .NET Standard.

    Ciao!
Devi accedere o registrarti per scrivere nel forum
6 risposte