Buongiorno a tutti, sto sviluppando un server in Linguaggio Visual Studio C# che riceve connessioni simultanee dal web e che metterà in collegamento contemporaneo centinaia di utenti i quali potranno chattare l'uno con l'altro in una unica chat principale e potranno altresì scambiarsi messaggi privati.
Il codice del programma è gia in buona parte scritto e ora mi trovo a dover implementare una feature molto importante: i log di sistema.
Ad ogni connessione ho l'esigenza di dover memorizzare IP e nickname dell'utente in modo tale da poter poi rileggere da console quali IP abbia avuto un nickname e, viceversa, quali nickname abbiano avuto il medesimo IP.
Esempio 1:
<console> nick_info PiPPo
***Informazione nickname: PiPPo***
IP di connessione: x.y.z.t in data 12/02/2004 ore 15.54
IP di connessione: x.y.r.e in data 14/02/2004 ore 16.04
IP di connessione: y.r.t.x in data 15/02/2004 ore 20.25
***Come memorizzo questi dati? Utilizzo una tecnologia database oppure alloco dinamicamente i dati in memoria (e preventivamente magari ne faccio una copia in un file di testo ".log")? Altre idee?Esempio 2:
<console> ip_info y.r.t.x
*** Informazione ip y.r.t.x***
L'indirizzo ip y.r.t.x è stato utilizzato dai seguenti utenti:
14/02/2004 ore 08.25 Paperino
15/02/2004 ore 19.20 Pluto
15/02/2004 ore 20.25 PiPPo
***
La prerogativa da dover rispettare è la massima efficenza e stabilità del server, nonchè evitare colli di bottiglia nell'esecuzione del programma stesso.
In particolare, una delle caratteristiche fondamentali è la velocità della chat (è già tutto studiato in multithreading): la chat non deve "laggarsi", e in ogni caso il lag deve necessariamente dipendere solo dalle risorse di banda disponibile e non, ad esempio, da un database troppo sovraccaricato a causa degli innumerevoli collegamenti contemporanei o da una memoria ram esaurita e quindi da un elevato paging su disco. Quindi la memorizzazione dei log di sistema deve essere una soluzione che sia un giusto compromesso tra la velocità e l'efficienza.
Quali sono i vostri consigli?
Per entrare nell'ordine di idee, le macchine che ospiteranno questi server saranno all'incirca così confezionati:
OS: Windows 2003 Server o Windows XP,
Ram: 256-512 MByte,
Processori: 1800-2600 MHz,
Connessioni internet di pochi MBit.
Grazie per l'attenzione.
FiFFiO