2009-04-23 12 views
7

Qual è la vostra esperienza del mondo reale con i blocchi applicativi Microsoft e altre soluzioni Microsoft anziché scrivere le vostre soluzioni?Qual è la vostra esperienza con i blocchi applicativi Microsoft

Ho iniziato un nuovo progetto e ho deciso di provarlo. Ho usato i blocchi di gestione delle eccezioni e di registrazione. Il blocco di gestione delle eccezioni funziona bene per ciò di cui avevo bisogno. Il blocco di registrazione ha fatto il 95% di quello che mi serviva, il resto doveva essere personalizzato. Ci è voluto un po 'di tempo per capire come personalizzarlo e poi avere alcuni problemi di riferimento alla versione. La registrazione è un'operazione molto semplice, sia che si scriva su un file o su un database (in entrambi i progetti). Con il senno di poi sarebbe stato più veloce scrivere il mio.

Il progetto richiede anche la sincronizzazione dei dati con un PDA. Con un po 'di ricerca, sembrava chiaro che la direzione che stava indicando era Sincronizzazione. Dopo aver trascorso circa 3 giorni cercando di ottenere tutte le giuste versioni dei diversi pezzi di software non ho potuto ottenere il campione funzionante Windows Mobile Synchronization Error. Ho scelto di utilizzare la semplice comunicazione desktop OpenNETCF per copiare i file da/verso il pda, utilizzare la serializzazione di oggetti binari e scrivere il mio codice di sincronizzazione di base che impiegava meno tempo e fa tutto esattamente nel modo in cui lo voglio (e non ci si sente buono:))

Alcuni lati positivi:

  • non c'è bisogno di reinventare la ruota
  • Approfittate aggiornamenti
  • Approfittate di altri strumenti progettati per lavorare con loro
  • grandi incrementi base di utenti feedback, test e robusto ness
  • bene avere sul tuo curriculum
  • un nuovo sviluppatore aggiunto alla squadra può avere familiarità con loro
  • fornire un sacco di funzionalità personalizzabili

aspetti negativi:

  • sovra- progettato, cerca di essere un coltellino svizzero, fornendo molte più funzionalità di quanto sia mai necessario per una soluzione che crea complessità.
  • anche così, non sembrano mai soddisfare tutti i requisiti del progetto, la coda può finire scodinzolando il cane. Immagino che questo dipenda da quanta influenza hai su come funziona l'applicazione.
  • necessario imparare come implementare correttamente il blocco dell'applicazione (ok, quindi questo deve essere fatto solo la prima volta che vengono utilizzati, quindi non è grossa)
  • aumenta le dipendenze su diverse versioni di DLL, un po 'di questo va con quel
  • grandi e ingombranti (non è un problema in questi giorni)
  • difficile da personalizzare per la loro complessità

Questa è stata la mia esperienza di apprendimento e mi permetterà di essere meglio attrezzati per prendere una decisione su se andare con la soluzione Microsoft (o altre terze parti così lutions) contro scrivere il mio.

E la tua esperienza?

risposta

6

Sono over-engineered ed era il mio più grande problema con esso, alla fine mi sono sbarazzato di esso e non lo uso più.

Non sono abbastanza utili, richiedono troppe configurazioni, modifiche nel sistema e continuano a cambiarle. Per aggiungere semplicemente una funzionalità di registrazione si finisce come trascorrere 2 giorni per farlo bene.

Ci sono librerie là fuori che funzionano in 10 minuti come ci si aspetterebbe.

+1

Verissimo signore, +1 –

1

In realtà non ho utilizzato nessuno dei blocchi di applicazione, ma ho letto la documentazione e ho esaminato i campioni.A mio parere, potrebbero essere una buona risorsa quando qualcosa deve essere fatto molto rapidamente, ma in caso contrario, è un buon modo per tornare in un angolo quando Microsoft rilascia un aggiornamento che non funziona necessariamente nel modo in cui lo si desidera.

Ho sempre trovato la cosa migliore per scrivere le mie strutture di gestione delle eccezioni e di registrazione. In questo modo, decido cosa viene aggiunto e rimosso a seconda delle esigenze della mia applicazione. Per quanto riguarda il reinventare la ruota, questo non mi infastidisce così tanto. Preferirei costruire qualcosa secondo le mie specifiche, piuttosto che usare qualcosa di costruito secondo le specifiche della comunità di programmazione generale che dovevo ritagliare.

2

Non li ho usati molto, principalmente perché qualcos'altro più potente mi ha influenzato. Ad esempio, quando si tratta di eccezioni, sono andato con CodePlex.Diagnostics, un bel pacchetto che registra elementi su SQL Server. Molto semplice e utile per un'applicazione web. Per la registrazione, utilizzo log4net sotto il controllo di Log4PostSharp. Ovviamente, utilizzo PostSharp anziché PIAB, se non altro perché la precompilazione è, per definizione, più veloce dei proxy dinamici.

Una cosa interessante è il blocco dell'applicazione Unity: sembra aver preso a cuore alcune delle lezioni apprese da altri framework DI, ed è in realtà abbastanza semplice da usare (ovviamente, anche PostSharp4Unity).

1

I blocchi di accesso ai dati e di gestione delle eccezioni (solo 2 che ho utilizzato) sono eccellenti se non si sta cercando nulla oltre alle funzioni di base disponibili. Certo ci sono altri framework più potenti, ma con una configurazione minima e una curva di apprendimento molto superficiale, è possibile ottenere questi 2 blocchi operativi e operativi in ​​pochissimo tempo.

E poiché utilizzano il modello di fabbrica, sono facilmente estendibili se necessario. Abbiamo personalizzato il blocco Gestione eccezioni per mostrare tutti i tipi di dati di Active Directory insieme all'eccezione generata. Ha ridotto il nostro tempo di supporto di un buon pezzo.

1

Hai una domanda singola da mantenere? Controlla se un AB (o qualsiasi altro componente là fuori) può aiutarti, testarli e usarli se superano il raduno, altrimenti no.

Avete un gruppo di applicazioni grande e in crescita da mantenere? Poi costruirai lo stesso tipo di codice per gestire ad es. registrazione, autenticazione & autorizzazione, comunicazione remota e problemi ricorrenti simili (esattamente ciò che dipende dal vostro ambiente aziendale e IT); tira il tuo codice o i tuoi componenti per risolvere i problemi (e mantenerli!); o usare qualcosa dallo scaffale. Uno di questi approcci solitamente (se non sempre) tende a funzionare meglio con un gran numero di applicazioni e la rotazione del lavoro all'interno dell'azienda. Indovina quale! (In particolare, non sottovalutare mai il tempo necessario per addestrare un nuovo sviluppatore/manutentore ad essere produttivo in un'applicazione di 2 anni senza somiglianze o componenti condivisi con altre cose su cui hanno lavorato prima!)

Il mio uso di blocchi di applicazioni MS è stato diversi anni fa.A quel tempo, il blocco di gestione delle eccezioni e il blocco di accesso al database aiutavano parecchio; il logging AB era abbastanza buono (anche se preferivo log4net per il suo controllo a grana fine); e la maggior parte degli attuali AB non c'erano. La mia opinione è che le carenze dell'indirizzo di AB nell'attuale quadro. Se hanno successo (e affrontano davvero i punti dolenti esistenti), dovresti considerare probabile che saranno spostati nelle versioni future del framework, o che la lingua e/o il framework saranno estesi per affrontare direttamente i punti critici.

Il codice non è mai troppo o poco ingegnerizzato da solo, solo per uno scopo particolare. La grande sfida con la valutazione dei componenti standard è scoprire quale sia effettivamente lo scopo, al contrario dei manifesti del mercato-e-the-kitchen-sink-sink. MS P&P group sembra molto lontano dai team di sviluppo prodotto e occasionally address the wrong problems con informazioni insufficienti sulle versioni recenti del prodotto ...

0

Non li ho usati da .NET 1.1/.NET 2.0 in precedenza ed era molto limitato con il Blocchi di applicazioni per i dati. Ad essere onesti, non ho davvero pensato di usare qualcosa ultimamente e dovrei guardare e vedere cosa hanno attualmente.

In pratica per me è stato più facile scrivere la mia soluzione. In genere sto vedendo alcuni casi piuttosto specifici e ho dovuto fare qualche salto per far funzionare le cose nel modo che volevo. Poi di nuovo stavo facendo più cose su ASP.NET (che sembra che ci siano molti circuiti con lo sviluppo del web in generale) e attualmente sono principalmente Applicazioni Windows, che sembra un po 'più semplice.

Penso che sia davvero necessario valutare caso per caso. Se funziona per te e soddisfa i tuoi bisogni, usa quello che c'è. Non c'è bisogno di perdere tempo a ricreare qualcosa quando c'è una soluzione perfettamente fattibile. Inoltre, non vi è alcun motivo per cui è necessario aggiornare a meno che non si cambino le versioni del framework, ecc. Se rilasciano una nuova versione della DLL. Nella mia esperienza comunque.

1

Stiamo utilizzando Unity con un certo successo. Sono contrario ai contenitori DI in generale, ma se devi usarne uno, Unity funziona abbastanza bene.

Sono meno convinto della maggior parte degli altri. La biblioteca di registrazione, in particolare, mi sta facendo impazzire. Enormi e ingegnerizzati, eppure codificati per alcuni specifici (e semplificati) scenari, che richiedono di reimplementare quantità stupide di codice per estendere effettivamente la libreria con alcune funzionalità abbastanza ovvie. E la documentazione è approssimativa su come personalizzarla e configurarla, al di là delle basi assolute.

Non vedo molti vantaggi nel blocco di accesso ai dati.

Nel complesso, non sono un grande fan.

0

Stiamo utilizzando la registrazione, la gestione delle eccezioni e i blocchi di convalida.

La mia esperienza con il logging AB è stata simile alla tua: ti porta il 95% del tempo. La personalizzazione non è facile, e porta a tutti i tipi di overhead (aggiornamento, test su territorio sconosciuto, ..). Nel complesso però, non penso che sarebbe stato più veloce il mio, soprattutto dal momento che le opzioni di configurazione sono molto utili (non tanto durante lo sviluppo, ma quando è distribuito, mi piace davvero avere l'editor e accendere/spegnere filtri al runtime ecc.). Ho scritto un piccolo wrapper attorno a esso, poiché ho scoperto che offriva molte più opzioni di quelle necessarie (ad esempio, severità/priorità separate: qual è la differenza di nuovo? Ecc.).

Gestione delle eccezioni abbiamo usato per un breve periodo di tempo ma lo abbiamo buttato fuori. Alla fine abbiamo pensato che fosse troppa configurazione. La configurazione in app.config ha un grosso problema: non è modulare (ad esempio non è possibile unire facilmente la configurazione proveniente da origini diverse).

Validazione: non è un grande fan. Per nessuna ragione particolare, non era molto applicabile.

Quindi, alla fine, utilizziamo solo una registrazione personalizzata AB. Disegna la tua conclusione onw su quanto sia utile il tutto è;)

Così Sono d'accordo che l'AB del non sono realmente guida - offrono una vasta gamma di opzioni e avete bisogno di fare la vostra mente su come usalo

Abbiamo avuto brutte esperienze con CAB (Composite UI AB). Purtroppo siamo troppo lontani per cambiarlo ora, ma se dovessi ripetere lo stesso progetto, non userei affatto CAB. Semplicemente non sembra fare proprio quello di cui abbiamo bisogno, quindi è più nel modo di qualsiasi altra cosa e offusca molto di quello che sta succedendo.

Problemi correlati