Состояние SQL Server для большого приложения asp.net и любые преимущества написания собственного провайдера пользовательских хранилищ - PullRequest
0 голосов
/ 26 октября 2011

Фон

У нас есть большое приложение asp.net, и мы используем много сеансов, таких как наборы данных, таблицы данных и т. Д. Мы хотим поддерживать веб-фермы для этого приложения, поэтому мы хотим сохранить состояние сеанса в sql.сервер.Я успешно храню все необходимые данные в сервер SQL и получаю все данные в порядке.Наша поддерживаемая база данных - SQL Server 2005-Sql Server 2008. Мы должны хранить таблицы данных и наборы данных в сеансах, даже если мы знаем, что это будет немного дороже.

Вопрос

  1. IХотите узнать от других разработчиков, есть ли преимущество использования Custom Store Provider для хранения данных.(любая помощь в отладке или поиске ошибок или проверке на будущее и т. д.)
  2. Или я просто изменяю веб-конфигурацию и делаю все классы сериализуемыми, чтобы она работала.
  3. Любой пользовательский способ сделать все связанные классы сериализуемыми, используя код c #.
  4. Любой лучший способ вмешаться в процесс, используемый .net для хранения данных на сервере SQL (процесс по умолчанию при изменении веб-конфигурации) и сделать его лучше, изменив один или несколько классов.

Спасибо,

Ответы [ 2 ]

0 голосов
/ 26 октября 2011

Я думаю, что вы можете пойти на свою точку 2.

не существует волшебного / автоматического способа изменить все ваши классы на сериализуемые, либо вы используете путь атрибутов или интерфейс, но в некоторых классах вам могут потребоваться некоторые исправления или изменения в зависимости от типов свойств.

Кроме того, все должно работать гладко, как только все будет Сериализуемо, и да, вы касаетесь web.config и все должно работать.

если некоторые из этих объектов не относятся к конкретному пользователю, но могут быть общими для пользователей, возможной альтернативой может быть appFabric, если вы конфигурируете кластер кэша (который может состоять из нескольких компьютеров), вы можете затем сохранить объекты в этом кэше, но, как я уже говорил, это зависит от вашего приложения, являются ли эти объекты абсолютно специфичными для пользователя, поэтому ДОЛЖНЫ быть в сеансе, а не в общем кеше? взгляните на этот ответ: AppFabric против System.Runtime.Caching

0 голосов
/ 26 октября 2011

Я бы пометил ваши бизнес-объекты как [Serializable].Я думаю, что это должно быть намного проще, чем хранить datatables/datasets.

Лучший способ сделать сериализуемые ваши классы - просто украсить их [Serializable] Не думаю, что вам нужно что-то еще, кроме этого.

Если вы используете балансировщик нагрузки с липкими сессиями, я бы на самом деле пошел с LocalStateServer, так как он должен работать быстрее, чем SqlServer

...