Dove devo archiviare il file SQLite quando è condiviso tra un'applicazione web e una desktop?

2

Sto sviluppando un'applicazione che può essere semplificata come segue:

L'applicazione è fondamentalmente una mailing list.

Gli utenti navigano fino a http://mysite/subscribe . Si trova sulla intranet e il sito utilizza l'autenticazione di Windows, quindi posso recuperare il loro indirizzo email da Active Directory. Questo indirizzo email è memorizzato in un DB SQLLite, sul server web.

Ogni ora, sullo stesso server, un'attività pianificata esegue un'app di console .exe . Legge gli indirizzi e-mail dal DB e invia un rapporto per posta.

La mia domanda è:

Dove devo salvare il file DB, in un modo facilmente configurabile in entrambe le app?

Nella cartella wwwroot/mysite ? Nella cartella App della console? In qualche altra cartella dedicata per questo non so?

    
posta Maxime 09.01.2018 - 11:42
fonte

2 risposte

2

Hai menzionato l'applicazione esterna e il sito web esiste sullo stesso server, quindi per alcuni aspetti, non importa in che dove è memorizzato. L'unica cosa che conta è quali autorizzazioni hanno le applicazioni sul file.

Nella maggior parte dei casi, il sito Web sarà l'applicazione con i maggiori vincoli per le autorizzazioni. Dipende da come / se il tuo server delle app sandbox il tuo accesso al file system. Ti consigliamo di assicurarti che la tua applicazione web abbia accesso in lettura / scrittura e di limitare la tua app esterna ad avere un accesso di sola lettura. Ciò minimizza il rischio di danneggiamento del database a causa di più processi che accedono al file. Assicurati che la tua applicazione web stia aprendo il database in un modo che non blocchi esclusivamente il file.

Quindi riassumendo:

  • La posizione del file è importante solo se la tua app è in modalità sandbox in qualsiasi modo
  • Rendi la posizione configurabile nella tua app per console
  • L'app Web deve aprire il database con nolock = 1 (cioè può essere aperto da più processi)
  • L'app della console deve aprire il database in modalità di sola lettura

Qualsiasi procedura da seguire per ridurre al minimo il tempo in cui l'app della console ha un handle per il file di database sarà di aiuto. Puoi aprire un database di memoria e importare i dati dal file, oppure puoi fare una copia del file su disco e aprire un riferimento a questo.

    
risposta data 09.01.2018 - 20:50
fonte
-3

Users browse to mysite/subscribe. It's on the intranet ... This email adress is stored in an SQLLite DB.

I tuoi utenti non richiedono nessun accesso al database.
Effettivamente, mettere una copia di questi dati personali sul computer locale dell'utente potrebbe portarti in acqua calda con la tua legislatura locale sulla protezione dei dati.

La tua applicazione è "sulla Intranet" - questa è una applicazione web in esecuzione su un server web. Che richiederà l'accesso al database.

Il tuo programma "rapporto" orario può o non può richiedere l'accesso al database stesso; potresti preferire rendere i dati disponibili tramite un'API [REST] Web che invece il programma legge. YMMV.

    
risposta data 09.01.2018 - 12:28
fonte

Leggi altre domande sui tag