У меня есть веб-приложение, это приложение, как вы уже знаете, будет иметь много запросов, и каждый запрос будет выполняться в другом потоке, а это означает, что если я использую синглтон для доступа к моей библиотеке DAL, это не будет проблемой.
Однако я не уверен, что это лучший подход, потому что я читал, что в одном запросе я иногда использую разные потоки, и я также читал, что блокирующие потоки могут иногда приводить к потере производительности при использовании отдельных экземпляров.
Просто чтобы вы меня лучше поняли, вот что я планирую сделать:
DAL ‹- SingleInstance‹ - BAL ‹- SingleInstance‹ - Контроллеры ‹- Просмотры
Это хороший подход?
Это синглтон, который я планирую использовать:
public static Products Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{
}
internal static readonly Products instance = new Products();
Примечание. My Dal будет обращаться к базе данных с помощью ADO.NET (у меня есть причины использовать ado), а BAL будет использовать этот метод только для выполнения операций select или CRUD.
Мой код Ado.NET:
public static readonly string ConnectionString = @"Server=localhost;Database=test;Uid=root;Pwd=test;";
public bool IsProduct(string name)
{
var conn = new SqlConnection(ConnectionString);
bool result;
try
{
conn.Open();
var command = new SqlCommand();
SqlParameter[] parameters = new SqlParameter[1];
parameters[0] = new SqlParameter("@Product", name);
command.Connection = conn;
command.CommandText = "SPC_GET_PRODUCT";
command.CommandType = System.Data.CommandType.StoredProcedure;
result = Convert.ToBoolean(command.ExecuteScalar());
}
finally
{
conn.Close();
conn.Dispose();
}
return result;
}
Спасибо.