ASP.NET und Neo4jClient - wo soll die Verbindung gespeichert werden?
Der C # Neo4JClient hatGraphClient
wo du anrufen musst.Connect()
var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();
In allen Beispielen, die ich gesehen habe, ist es in einer Konsolen-App, also deklarieren sieGraphClient
imMain()
und wiederverwenden. Und die Dokumentation erwähnt, wie es Thread-sicher ist und nur eine Instanz pro Datenbank hat und nicht aufruft.Connect()
mehrmals.
Aber was ist mit ASP.NET-Anwendungen? Soll ich es in einer statischen Klasse speichern, auf die die Seiten zugreifen (oder im Anwendungsstatus speichern)? So was:
public class DbConnection
{
private static GraphClient _client;
public static GraphClient GraphClient
{
get
{
if (_client == null)
{
_client = new GraphClient(new Uri("http://localhost:7474/db/data"));
_client.Connect();
}
return _client;
}
}
}
Und dann in jeder ASPX-Seite könnte ich einfach:
protected void Page_Load(object sender, EventArgs e)
{
GraphClient client = DbConnection.GraphClient;
//do whatever I need to with client
}
Oder verstehe ich das nicht richtig und das würde alle möglichen Probleme verursachen? Muss ich anrufen?.Connect()
in jeder Methode (oder vielleicht einmal pro Seitenlebenszyklus) wie folgt:
private GraphClient _client;
private GraphClient PageGraphClient
{
get { //same as in previous, check if null and load _client with the connection }
}
protected void Page_Load(object sender, EventArgs e)
{
//do whatever I need to with PageGraphClient
}
protected void btnSave_Click(object sender, EventArgs e)
{
//do whatever I need to with PageGraphClient
}
Und so weiter? Ich glaube, ich bin gerade dabei, mich auf die gesamte Thread-Safe-Sache einzulassen und "zu viele Verbindungen zur Datenbank herzustellen" und möchte sicherstellen, dass mir keine einfache / richtige Möglichkeit entgeht, dies zu tun.
(Und ja, ich weiß, dass ich die Datenbankbefehle nicht direkt von den ASPX-Seiten aufrufen sollte. Ich vereinfache dies zu sehr, um zu verstehen, wie die GraphClient-Klasse funktioniert.)