Promuovendo la scalabilità nelle applicazioni di piccole imprese

2

Sono parte di una piccola azienda di software specializzata in applicazioni aziendali di piccole e medie dimensioni e la mia esperienza con architetture distribuite / SOA è limitata. Per favore fatemi sapere se sto sbagliando tutto questo.

Spesso iniziamo lo sviluppo su applicazioni di piccole imprese, in cui un'architettura distribuita sembra eccessiva e non verrà implementata come tale. Tuttavia, in alcuni casi, il progetto si espande ben oltre l'ambito originale e la soluzione preferita può successivamente essere distribuita.

Come ci assicuriamo fin dall'inizio che questa transizione diventi il più agevole possibile, con un costo minimo di prestazioni e (principalmente) tempo? In particolare, sto cercando consigli riguardo all'architettura della soluzione per raggiungere questo obiettivo.

Prendi questo semplice esempio:

  • All'inizio un'applicazione Windows è in esecuzione su diversi computer, invocando tutta la logica di business localmente in un assembly che viene distribuito insieme all'applicazione.
  • Successivamente, la logica aziendale viene spostata su un server centrale e l'applicazione Windows deve ora comunicare con il livello aziendale tramite un servizio WCF.

La risposta ovvia qui sarebbe semplicemente creare il servizio WCF sin dall'inizio e farlo girare localmente su ogni macchina, ma il mio pensiero iniziale era che ciò potesse causare un indesiderato consumo di tempo su progetti con scadenze rigide, a causa di un sovraccarico in fase di sviluppo (dovendo mantenere lo / gli strato / i intermedio / i ecc.).

Uno dei problemi concreti con l'architettura iniziale è che le istanze degli oggetti vengono passate dall'applicazione Windows al livello aziendale, creando così una dipendenza che potrebbe violare il codice quando si passa a una soluzione distribuita.

"Simulando" una soluzione distribuita, potremmo garantire che i nostri sviluppatori non introducano involontariamente questo tipo di problemi.

  • Qual è il modo migliore per raggiungere questa scalabilità?
  • Ho sbagliato le mie ipotesi riguardo il consumo di tempo e le prestazioni?
posta bernhof 23.08.2011 - 20:45
fonte

3 risposte

2

Dovresti pensare in anticipo quali parti saranno considerate "lato cliente" e quali sarebbero "lato server". Il livello server verrebbe esposto tramite un livello di servizio, non necessariamente utilizzando WCF o qualsiasi tecnologia. All'inizio, sarebbe solo un'interfaccia (IService). Nel livello client avresti un livello delegato che sa come raggiungere il livello di servizio. Inizialmente sarebbe solo one-liners a chiamare il livello di servizio. Quando decidi di modificare la tua architettura, puoi semplicemente cambiare il servizio in modo che sia un servizio WCF e il delegato per configurare endpoint e materiale per raggiungere il tuo servizio.

Spero che ti aiuti.

    
risposta data 23.08.2011 - 21:30
fonte
1

Non ti stai sbagliando riguardo al fattore tempo. Ci vorrà più tempo per progettare e sviluppare un'applicazione partizionata come quella che stai suggerendo. Tuttavia, date le esperienze passate, puoi vedere che il tempo sarà ben speso.

Mi sembra che se si partizionasse l'applicazione in modo molto simile a un'applicazione distribuita, come suggerito, si eliminerebbero dipendenecies e si definissero chiaramente le aree di responsabilità. Utilizzando interfacce e altri software, come un bus messaggi per disaccoppiare i componenti, è possibile creare rapidamente un'applicazione, ma consentirne la crescita se necessario.

    
risposta data 23.08.2011 - 21:03
fonte
1

Penso che la chiave sia usare i buoni principi OO e assicurarsi che i componenti siano coesi. Mantenere la logica aziendale nel livello della logica aziendale e della logica di presentazione nel livello di presentazione e assicurarsi che si trovino nella peggiore coppia liberamente accoppiata.

Quindi, se l'applicazione deve essere ridimensionata, puoi aggiungere i meccanismi per il servizio WCF, ma non stai riscrivendo la logica.

    
risposta data 23.08.2011 - 21:09
fonte

Leggi altre domande sui tag