Различия между SqlDependency и SqlCacheDependency

У меня есть вопрос: я работаю над приложением ASP.Net Web Forms и C# и использую gridView для отображения данных из таблицы, поэтому я решил кэшировать.

я сделал

aspnet_regsql -ed -E -d Store
aspnet_regsql -et -E -d Store-t Customers

и модификации в web.config:

<caching>
      <sqlCacheDependency pollTime="2000" enabled="true">
        <databases>
          <add name="Store" connectionStringName="StoreConnectionString"/>
        </databases>
      </sqlCacheDependency>
    </caching>

Но теперь я должен решить, использовать ли SqlDependency

<%@ OutputCache Duration=”600″ SqlDependency=”Store:Customers” VaryByParam=”none” %>

Или используйте SqlCacheDependency

private void BindData() { 
  if (Cache["Users"] == null) {            
        SqlCacheDependency dep = new SqlCacheDependency("Store", "Customers");
        string connectionString = ConfigurationManager.ConnectionStrings[
                                        "ConnectionString"].ConnectionString;
        SqlConnection myConnection = new SqlConnection(connectionString);
        SqlDataAdapter ad = new SqlDataAdapter("SELECT FirstName, LastName " +
                                               "FROM Users", myConnection);
        DataSet ds = new DataSet();
        ad.Fill(ds);
        Cache.Insert("Cust", ds, dep);
    }
    gvUsers.DataSource = Cache["Cust"] as DataSet;
    gvUsers.DataBind();
}

Не могли бы вы рассказать мне, в чем разница между SqlDependency и SqlCacheDependency и какой из них лучше для моего кода, пожалуйста?


person Pablo Tobar    schedule 04.11.2015    source источник


Ответы (1)


SqlDependency, скорее всего, будет использоваться в директиве страницы в качестве свойства для кэша вывода, наиболее важным аспектом является то, что вы должны указать свою строку подключения в Web.config (как вы, возможно, знаете, это угроза безопасности), а также использовать атрибут polltime в ярлык .

SqlCacheDependency — это класс, и вам нужно будет указать данные, которые вы хотите добавить в кеш, через cache.insert или cache.add, вам не нужно указывать строку подключения в Web.config, но, возможно, вместо этого вы, скорее всего, будете использовать SERVICE_BROKER. aspnet_regsql и , а также, если вы решили использовать SERVICE_BROKER, не забудьте добавить global.asax, чтобы указать:

Application_start(){
string connectionString = yourdatabaseconnection;
    System.Data.SqlClient.SqlDependency.Start(connectionString);
} 

и App_end()

Application_end(){
string connectionString = yourdatabaseconnection;
    System.Data.SqlClient.SqlDependency.Stop(connectionString);
} 

поскольку я уже использую команду aspnet_regsql, я, скорее всего, использовал бы страницу директивы outputchache и SqlDependency, но с большим временем опроса, но моей последней рекомендацией было бы использовать SqlCacheDependency и включить SERVICE_BROKER через

ALTER DATABASE testdb SET ENABLE_BROKER WITH ROLLBACK IMMEDIATE
person Pablo Tobar    schedule 04.11.2015