ASP.NET и Neo4jClient - где хранить соединение?
Клиент C # Neo4J имеетGraphClient
куда ты должен позвонить.Connect()
var client = new GraphClient(new Uri("http://localhost:7474/db/data"));
client.Connect();
Во всех примерах, которые я видел, он находится в консольном приложении, поэтому они объявляютGraphClient
вMain()
и снова использовать его. И документация упоминает, как его Thread Safe и иметь только один экземпляр на базу данных и не вызывать.Connect()
многократно.
Но как насчет приложений ASP.NET? Должен ли я вставить его в некоторый статический класс, к которому обращаются страницы (или сохранить его в состоянии приложения)? Как это:
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;
}
}
}
И тогда на любой странице ASPX я мог бы просто:
protected void Page_Load(object sender, EventArgs e)
{
GraphClient client = DbConnection.GraphClient;
//do whatever I need to with client
}
Или я не правильно понимаю, и это вызовет всевозможные проблемы? Мне нужно позвонить.Connect()
в каждом методе (или, возможно, один раз на жизненный цикл страницы), например, так:
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
}
И так далее? Я полагаю, что я просто зацикливался на поточной безопасности и "делал слишком много подключений к БД" и хотел убедиться, что я не пропускаю простой / правильный способ сделать это.
(и да, я знаю, что не должен вызывать команды базы данных напрямую со страниц ASPX, я слишком упрощаю для понимания того, как работает класс GraphClient;)