È raro, ma ci sono situazioni in cui non è possibile installare librerie di terze parti o anche se sarebbe comodo / efficace. Penso che sia un buon problema di design per isolare la parte del progetto, in cui le librerie non possono essere utilizzate.
Stiamo sviluppando un aut home. sistema, dove il back-end è in esecuzione su piccole macchine Linux. In questo ambiente non possiamo usare le solite cose Linux, come Apache, MySQL, PHP o librerie intelligenti. La nostra casa aut. il server utilizza solo stdlib, pthreads e opzionalmente Alsa. Dobbiamo compilare ARM, PPC, AVR, MIPS e altri sistemi non X86, che a volte sono estremamente limitati.
Pertanto, abbiamo preso le seguenti decisioni sul design:
- La funzionalità del server dovrebbe essere minima. La funzione più complessa è un semplice server web, che può fornire file e 2 tipo di richiesta AJAX. Il server è modulare, i componenti sono molto piccoli. Utilizziamo architettura del flusso di dati , che lo rende possibile.
- L'ambiente di sviluppo per il server è complesso. Abbiamo 2 livelli extra, uno di configurazione e uno di flusso di dati, prima della toolchain GNU. Usando le parole d'ordine, dovrei dire che abbiamo spostato la complessità dal tempo di esecuzione al tempo di compilazione . Non abbiamo limiti quando prepariamo e compiliamo materiale, ad es. il nostro compilatore di flussi di dati è scritto in PHP - non è ottimale, ma non ci interessa, produce il risultato appropriato. Inoltre, gli strumenti di configurazione sono scritti in JS-AJAX / PHP, in precedenza abbiamo usato Excel (!) Per configurare rapidamente una configurazione.
- L'interfaccia utente è una WebApp basata su AJAX, in cui non abbiamo più limiti. L'interfaccia utente invia solo richieste atomiche al server, tutto il materiale pesante viene eseguito da JavaScript. Inoltre, utilizziamo un framework JS (DomAssistant).
Quindi, dal sottosistema 3 (server, toolchain, UI) solo il server è dove non possiamo godere della ricchezza di librerie e piattaforme.