Quale architettura dovrei usare per creare un'applicazione "eventi" in .NET?

1

Sono abbastanza nuovo per C # e .NET nel suo complesso e voglio creare un'applicazione, ho una strong esperienza in Java, Hibernate e utilizzo di framework MVC come Spring.

Voglio creare un'applicazione che abbia il seguente scopo:

  1. Essere accessibile da persone che possono accedere ad esso (directory attiva)
  2. Memorizza i dati rilevanti per l'utente che ha effettuato l'accesso ed è in grado di creare eventi
  3. Gli eventi vengono mantenuti in un database centrale per tutti gli utenti e gli elementi di back-end possono essere fatti come i calcoli e il controllo
  4. Essere in grado di vedere eventi, richiedere eventi e anche alcuni utenti avranno un permesso di gestione per poter vedere gli eventi degli altri

L'applicazione lato client dovrà essere in C # in esecuzione su Windows e probabilmente utilizzerà un'applicazione WPF per poter accedere / inserire dati. Userò anche SQL Server per la persistenza, ma dove sono buttato fuori è dove dovrebbe esistere il livello di servizio.

Il tipo di framework che sto cercando ha introdotto un Architettura N-Tier , dove ho un livello di presentazione (client), livello di servizio (? 1 ) e un livello di persistenza (? 2 ).

? 1 - Voglio raccogliere qualche suggerimento su cosa posso usare per creare un livello di servizio. Varrebbe la pena per me utilizzare ASP.NET per creare un'API Web a cui posso accedere dal mio client? Quindi posso comunicare con la Web-API per accedere e aggiungere dati, che a loro volta permarranno?

Qualcosa di questo tipo:

Questoèilmodocorrettodipensareaquesto?

?2-Suppongochedipendadallivellodiservizioperdeterminaredovedeveesistereillivellodipersistenza.Hodatoun'occhiataa Entity Manager e sembra un buon modo per gestire database, oggetti e entità. Se il mio livello di servizio esiste su un API web di qualche tipo, credo che potrei legare il livello di persistenza dietro quello che mi darebbe la possibilità di gestire i dati e sarebbe buono dal punto di vista della sicurezza (?)

Spero che ci siano abbastanza informazioni qui, non sono interessato al codice o ai programmi. Lo apprezzerei molto se potessi ricevere una sorta di puntatore a quale architettura dovrei usare per un'applicazione come questa e quale semantica sarebbe utile.

    
posta Toby 20.09.2016 - 13:44
fonte

1 risposta

2

Sono d'accordo con il commento, il tuo diagramma sembra ragionevole. Il link ti guiderà attraverso l'uso di ASP.NET Core e Entity Framework per creare un semplice web API che probabilmente funzionerebbe perfettamente per i tuoi scopi. Quando lo costruisci, finirai con un'architettura a 3 livelli simile. L'altra bella parte è con Entity Framework e ASP.NET man mano che il tuo database cresce, avrai il controllo su cosa è visibile attraverso l'API e cosa non lo è.

1 - Programmi client - I tuoi programmi client siederanno sui dispositivi mobili come desideri e saranno felici di parlare con la tua web API.

2 - Web API / Service Layer - Questo ragazzo si trova esattamente dove vuoi, su hte web che parla con un database di back-end. ASP.NET ti dà un sacco di controllo su come appare la tua API (I prever userid / object / objectidentifier ma puoi fare quello che vuoi dopo un po 'di giocherellare) e quali sono le tue regole. Assicurati di cercare dove ASP.NET intercetta le richieste HTTP nel suo processo. Non lo ricordo a portata di mano, ma hai la possibilità di fare l'autenticazione per le chiavi se lo scegli (penso sia letteralmente sul filtro azione?).

3 - Database: si raffredda nella parte posteriore con tutti i calcoli e l'ordine che si desidera eseguire. Il mio consiglio con le API in generale è che i database sono sorprendenti nell'ordinare, ordinare e cercare dati. Inoltre, sono generalmente molto più veloci di C # nel fare queste cose, quindi se riesci a scaricare il maggior numero possibile di queste attività dal capo.

Altrimenti, dal momento che sembra che si stiano programmando eventi, suggerirei di consultare le librerie RabbitMQ e Quartz per gestire l'attivazione e l'elaborazione degli eventi. Abbiamo utilizzato questo stack con molto successo al lavoro per creare elenchi di e-mail e avvisi, quindi potresti trovarli utili. Anche Quartz e RabbitMQ sono subito utilizzabili insieme, il che è fantastico. La mia arma preferita per gestire le API RESTful è RestSharp, ma potresti scoprire che preferisci qualcos'altro.

    
risposta data 21.09.2016 - 15:34
fonte

Leggi altre domande sui tag