Ich habe eine Server-Anwendung in Erlang gemacht. Darin habe ich eine Minnesattabelle , die einige Informationen auf Fotos speichern. Im Sinne von „alles ist ein Prozess“ Ich beschloss, in einem gen_server
Modul die Tabelle zu wickeln, so dass das gen_server
Modul die einzige ist, die direkt auf die Tabelle zugreift. Das Abfragen von und das Hinzufügen von Informationen zu dieser Tabelle erfolgt durch Senden von Nachrichten an diesen Prozess (der einen registrierten Namen hat). Die Idee ist, dass es mehrere Client Prozesse geben wird, die Informationen von dieser Tabelle abfragen.Verwenden von gen_server zum Kapseln einer Mnesiatabelle?
Das funktioniert ganz gut, aber das gen_server
Modul hat keinen Zustand. Alles, was es erfordert, ist in der MNS-Tabelle gespeichert. Also, ich frage mich, ob ein gen_server
ist vielleicht nicht das beste Modell für die Kapselung dieser Tabelle?
Sollte ich es einfach nicht zu einem Prozess machen, und stattdessen nur die Tabelle durch die Funktionen in diesem Modul kapseln? Im Falle eines Fehlers in diesem Modul würde das den aufrufenden Prozess zum Absturz bringen, was ich denke, könnte besser sein, weil es nur einen einzelnen Client betrifft, im Gegensatz zu jetzt, wenn es den gen_server
Prozess verursachen würde abstürzen und alle ohne Zugriff auf die Tabelle verlassen (bis der Supervisor es neu startet).
Jede Eingabe wird sehr geschätzt.