Prima di tutto lasciami esporre ciò che vorrei fare: dispongo già di una webapp di vecchia data sviluppata in ASP.NET (C #) 2.0. In questa app, gli utenti possono caricare file PDF standard (testo + foto). L'app è in esecuzione in produzione su Windows Server 2003 e ha un server database dedicato (SQL server 2008) che esegue anche Windows Server 2003. Io stesso sono uno sviluppatore web abbastanza esperto, ma non ho mai programmato qualcosa di non-web (o almeno niente grave).
Ho intenzione di aggiungere una funzionalità alla webapp per cui avrei bisogno di un'istantanea jpg di ogni pagina del PDF. Creare queste "miniature" non è un grosso problema in quanto tale, lo faccio già all'interno della mia webapp usando ghostscript. Per ora l'ho fatto solo su documenti di 1 pagina, e la nuova funzionalità dovrà elaborare documenti più grandi. Affinché questo processo sia trasparente anche per gli amministratori come utenti finali, vorrei implementare un qualche tipo di coda per ritardare l'elaborazione delle miniature. Ancora una volta, nessun problema per creare la coda, sarà costituito da record in una tabella, con informazioni sufficienti per trovare il documento pdf indietro.
Quindi avrò bisogno di elaborare questa coda, e questo è stato il mio interrogatorio iniziare. Ovviamente la migliore soluzione per elaborarlo non è uno script ASP o così, quindi dovrò uscire dal mio ambiente conosciuto. Nessun problema, ma non ho idea di quale direzione andare. Pertanto, alcune domande:
-
Che cosa dovrei sviluppare? Probabilmente ho bisogno di qualcosa che è "standby" sul server, viene eseguito quando necessario, quindi ritorna in stato di attesa fino a nuovo avviso. Dovrei controllare il servizio di Windows? Esiste un altro tipo di progetto più appropriato?
-
A seconda della prima risposta, quale sarà l'approccio? Dovrei avere in qualche modo SQL server "dire" al programma / servizio / ... per elaborare la coda, o dovrei avere quel programma / servizio / ... controllare periodicamente lo stato della coda e trattare nuovi elementi. In entrambi i casi, quale funzionalità posso usare?
-
non stiamo parlando di centinaia di PDF al giorno (max 50 forse), posso totalmente permettermi di trattare la coda 1 alla volta. Puoi confermare che non devo guardare molto oltre i thread e così? (Ho trovato molte risposte parlando di thread nel trattamento in coda, ma sembra abbastanza esagerato per le mie esigenze)
-
Forse collegato alla domanda precedente: che dire della chiamata simultanea al programma, qualunque essa sia? Supponiamo che sia attualmente in esecuzione e che un nuovo record arrivi in coda, quale dovrebbe essere il comportamento?
Non ho bisogno di risposte molto dettagliate e sarei già soddisfatto di risposte come "È possibile eseguire l'elaborazione con un servizio, e sì è possibile avere sqlserver sulla macchina Un trigger di avvio di un servizio sulla macchina B" o "Tu Devo sviluppare xxx e quindi utilizzare lo scheduler per eseguirlo ogni xxx minuti ". Non mi interessa leggere articoli e così, ma non posso permettermi di passare troppo tempo ad imparare cose per rendermi finalmente conto che sono andato nel modo sbagliato per questo progetto, quindi in pratica sto cercando di restringere la portata delle cose che devo indagare.
Grazie per avermi letto, spero di trovare un po 'di aiuto qui: -)