Sto lavorando su un progetto personale che sarà progettato per aiutare a gestire la mia libreria multimediale, in particolare le registrazioni create da Windows Media Center.
Quindi avrò le seguenti parti per questa applicazione:
- Un servizio Windows che monitora la cartella di registrazione. Una volta completata una nuova registrazione che soddisfa criteri specifici, chiamerà diverse applicazioni CLI di terze parti per rimuovere gli spot pubblicitari e ricodificare il video in un formato più intuitivo.
- Una GUI del controller per poter modificare le impostazioni del servizio, in particolare aggiungere nuovi spettacoli da guardare e modificare i parametri per le applicazioni CLI
- Un'applicazione desktop autonoma (basata su GUI) in grado di eseguire molte delle stesse funzioni del servizio Windows, si aspetta manualmente su file specifici anziché automaticamente in base a criteri specifici.
(Va detto che ho un'esperienza limitata con un'applicazione di questa complessità e non ho assolutamente esperienza con i servizi di Windows)
Poiché il primo e il terzo proiettile condividono funzionalità simili, il mio piano di progettazione è quello di estrarre la funzionalità comune in una libreria separata condivisa da entrambe le parti dell'applicazione, ma questi 2 componenti non hanno bisogno di interagire diversamente.
Il secondo e il terzo proiettile sembrano condividere alcune funzionalità comuni, entrambi avranno una GUI, entrambi dovranno aiutare a definire parametri simili (uno da inviare al servizio e l'altro da inviare direttamente alle applicazioni CLI), quindi può vedere qualche vantaggio combinarli nella stessa applicazione.
D'altra parte, l'applicazione standalone (bullet # 3) non ha davvero bisogno di interagire con il servizio, tranne forse per condividere alcuni parametri predefiniti comuni che possono essere facilmente inseriti in un XML in una posizione comune, quindi sembra più sensato tenere tutto separato.
La GUI del controller (2 ° punto) è il punto in cui sono bloccato al momento.
- Eseguo il rollover di questa funzionalità (consenti all'utente l'interazione con il servizio per aggiornare impostazioni e criteri) nell'applicazione standalone? O sarebbe meglio prendere una decisione sul design per tenerli separati? Nello specifico, sono preoccupato di aggiungere la complessità della comunicazione con il servizio Windows all'applicazione standalone quando non ne ha bisogno.
- È
WCF
l'approccio giusto per consentire all'interfaccia grafica del controller di interagire con il servizio di Windows? O c'è un'alternativa migliore? Al momento, non immagino la necessità di una quantità significativa di interazione, magari aggiungendo un nuovo compito una volta ogni tanto e occasionalmente modificando un parametro, ma quando qualcosa viene cambiato, mi aspetto che il servizio Windows utilizzi immediatamente il nuove impostazioni.