[C#] - Aiuto su architettura del software.

martedì 16 marzo 2010 - 22.30

kataklisma Profilo | Senior Member

Salve a tutti,

Sono nuovo di dotnethell ma vi seguo da un po di tempo :)

Mi chiamo Ignazio ho 20 anni e sono alla mia prima esperienza lavorativa.

Lavoro per una azienda come sviluppatore di software verticalizzato alla piattaforma Passepartout Mexal (software gestionale per chi non lo conoscesse :) ).

Sono stato incaricato di sviluppare un progetto che permetta ad aziende "generiche" di effettuare "generiche" operazioni attraverso palmari windows mobile appoggiandosi alla base di dati degli archivi mexal trasferita in un'apposito database su sqlServer2005Express.

Il tempo a mia disposizione non è moltissimo quindi da un primo approccio di analisi-progettazione-sviluppo sono passato ad un'approccio analisi/sviluppo.

Ho pensato di sviluppare il software come segue:

Un server (attualmente in lavorazione) che permetta la gestione della Licenza del programma (upgrade, validazione ecc ecc) e blocchi le connessioni da parte dei client in caso di richieste di connessioni superiori a quelle stabilite per licenza, inoltre il server gestirà in toto i client dando la possibilità di disconnettere e prendere informazioni dai client, gestirà gli account divisi in ruoli (system, administration, client) ognuno dei quali con specifici permessi sulle operazioni effettuabili sul server.

Concettualmente parlando ho pensato ad una cosa del genere:

client ->invia richiesta di connessione ->Se server accetta: Server invia dati di connessione al database sqlServer2005 -> client si connette al db.

Ora, dato che uno dei problemi esistenti in questo progetto è la concorrenza sul database ho pensato di lasciare al server il compito delle varie "insert e update" ovvero, il client quando finisce una operazione, per esempio "Concludi nuovo ordine cliente" serializza l'oggetto "OrdineCliente" in un file "oc_TizioCaioSempronio_Data_Odierna" e lo manda al server accompagnato da una string via tcp esempio "Nuovo ordine cliente oc_TizioCaioSempronio_Data_Odierna". In questo modo il server deserializza l'oggetto e crea una specie di lista FIFO (First In Firts Out) che permette di eliminare la concorrenza sulle risorse del db.

P.S l'applicazione deve essere multithreading in quanto deve accettare n connessioni da n terminali o è possibile usufruire di qualche escamotage?

Per l'accesso ai dati dalla server application utilizzero linq per quanto riguarda i palmari non so, devo effettivamente vedere l'utilizabilità di linq e le eventuali limitazioni.

A livello progettuale per ora ho impostato il problema cosi:

Una dll "Security" che gestisce la licenza e il login al sistema.
una dll "Utilies" che gestisce la connessione agli archivi mexal (per convalidare la licenza) e vi è presente un gestore errori (niente di particolare un paio di form che mostrano le exception in modo personalizzato"
una dll "sqlServerConnection" che gestisce le connessioni al db tramite sqlClient , ma sarà scartata in quanto sto gia implementado Linq.

dovrei implementare una dll che gestisca il lato "server" ovvero listening dei palmari e in generale la comunicazione con essi (se qualcuno ha qualche idea architetturale ben venga!!!) ed aggiungere nelle utilies una classe per le impostazioni del software (che molto probabilmente serializzero e deserializzero all'aperturà del programma).


Mi sono accorto che non ho fatto una domanda ma un papiro :D scusate!

Spero di ricevere riscontri da esperti, appassionati e chiuque abbia letto il thread!!!!Buona serata!


Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5