Это действительно зависит. Я приведу 2 примера, где один превосходит другой:
Отметка времени лучше, чем DATETIME, когда вы хотите сохранить сеанс пользователей в базе данных, а время создания сеанса (в формате отметки времени) используется для быстрого поиска строк (с указателем).
Например. Таблица может выглядеть так:
[session_create_time AS Timestamp][IP_address AS 32bit Int][etc...]
Наличие индекса по первым двум столбцам может действительно ускорить ваши запросы. Если у вас есть тип значения DATETIME для поля session_create_time
, то это может занять гораздо больше времени. Учтите, что запросы сеанса выполняются каждый раз, когда пользователь запрашивает страницу , поэтому эффективность имеет решающее значение.
DATETIME лучше, чем Timestamp, если вы хотите сохранить дату рождения пользователя или некоторые исторические события, для которых требуется гибкий диапазон времени.
Взгляните на это сообщение в блоге. Это должно помочь прояснить процесс, который вам необходимо выполнить для настройки ядра.
http://www.kevinrohrbaugh.com/blog/2009/8/7/using-ninject-2-with-aspnet-mvc. html
You still should paste the code you have so people can see where you might have gone wrong.
I think this code should be placed in your Application_Start:
ControllerBuilder.Current.SetControllerFactory(typeof(NinjectControllerFactory));
KernelContainer.Kernel = new StandardKernel(
new AutoControllerModule(Assembly.GetExecutingAssembly();
);
Поскольку вы уже расширяете другой класс, производный от HttpApplication, я думаю просто скопировать соответствующий исходный код из класса NinjectHttpApplication в ваш расширенный класс HttpApplication. Вместо того, чтобы вырезать и вставить его, просто посмотрите исходный код для NinjectHttpApplication в проекте расширения Ninject2 Ninject.Web.Mvc здесь .
Я бы специально скопировал материал из методов Application_Start () и Application_Stop () . Другие методы регистрации контроллеров хороши, но вы можете зарегистрировать свои контроллеры, как хотите. Вы заметите в Application_Start () , ядро создается путем вызова чистой виртуальной функции CreateKernel () - вы можете просто создать встроенное ядро прямо здесь. Кроме того, обратите внимание на наличие свойства Kernel в классе NinjectHttpApplication - я бы также скопировал его в ваш собственный класс. Казалось бы, намерение здесь состоит в том, чтобы производный от HttpApplication класс эффективно служил KernelContainer.
Заявление об ограничении ответственности: я не пробовал это, чтобы увидеть, работает ли это, хотя скоро буду. Я использовал Ninject 1.x в веб-проекте и собираюсь перейти на Ninject 2 в ближайшем будущем; однако я, вероятно, смогу получить непосредственно от NinjectHtppApplication. Удачи!
обратите внимание на наличие свойства Kernel в классе NinjectHttpApplication - я бы скопировал его и в ваш собственный класс. Казалось бы, намерение здесь состоит в том, чтобы производный от HttpApplication класс эффективно служил KernelContainer.Заявление об ограничении ответственности: я не пробовал это, чтобы увидеть, работает ли это, хотя скоро буду. Я использовал Ninject 1.x в веб-проекте и собираюсь перейти на Ninject 2 в ближайшем будущем; однако я, вероятно, смогу получить непосредственно от NinjectHtppApplication. Удачи!
обратите внимание на наличие свойства Kernel в классе NinjectHttpApplication - я бы скопировал его и в ваш собственный класс. Казалось бы, намерение здесь состоит в том, чтобы производный от HttpApplication класс эффективно служил KernelContainer.Заявление об ограничении ответственности: я не пробовал это, чтобы увидеть, работает ли это, хотя скоро буду. Я использовал Ninject 1.x в веб-проекте и собираюсь перейти на Ninject 2 в ближайшем будущем; однако я, вероятно, смогу получить непосредственно от NinjectHtppApplication. Удачи!
x в веб-проекте и в ближайшем будущем намерены перейти на Ninject 2; однако я, вероятно, смогу получить непосредственно от NinjectHtppApplication. Удачи! x в веб-проекте и в ближайшем будущем намерены перейти на Ninject 2; однако я, вероятно, смогу получить непосредственно от NinjectHtppApplication. Удачи!Невозможность наследования от NinjectHttpApplication не имеет большого значения. Не особо много делает, но очень удобно. Предложение Питера Мейера - верный путь. Просто ознакомьтесь с источником здесь . Однако вам придется унаследовать от IHaveKernel.