Я пишу код для CPython и IronPython, но подсказка должна работать на Jython также.
В основном, я пишу всей платформе определенный код в отдельных модулях/пакетах и затем импортирую соответствующий на основе платформы, на которой я работаю. (см. комментарий cdleary выше)
Это особенно важно когда дело доходит до различий между реализациями SQLite и если Вы реализуете какой-либо код GUI.
Это действительно тот же кеш в конце, только HttpContext.Current
иногда может иметь значение NULL (когда не в веб-контексте или в веб-контексте, но еще не построен). Можно всегда использовать HttpRuntime.Cache
.
Когда вы находитесь на обычной веб-странице, вы можете безопасно использовать HttpContext.Cache
или только свойство Cache
страницы.
Если вы делаете что-то, чего нет на странице, вам часто нужно использовать HttpRuntime.Cache
для безопасного доступа к нему.
В некоторых случаях вы можете узнать, есть ли контекст http или нет, например, если вы запускаете отдельный поток с веб-страницы, этот поток не имеет контекста http. В других случаях у вас может быть контекст http, например, в методе Application_Start
в global.asax
, поскольку приложение может не всегда запускаться из-за запроса.
Я тоже считаю его вводящим в заблуждение, хотя мы все знаем он просто возвращает HttpRuntime.Cache
внутри. Кроме того, HttpRuntime - плохой выбор для раскрытия кэша, я думаю.
Все говорят, что Session
является кешем уровня сеанса, а кэш, о котором мы говорим, является кешем уровня приложения. Я бы предпочел иметь Application.Cache
в качестве кэша, который мы используем сегодня, и HttpContext.Cache
для обозначения того, что известно как HttpContext.Items
.
] Что касается ответа на ваш вопрос, я думаю, мы все должны придерживаться HttpRuntime.Cache, чтобы сделать наш код более понятным, даже если у нас есть разные способы доступа к нему.