Ninject, MVC и область сеанса: разумная практика?

Я создаю приложение MVC3 с Entity Framework, в котором почти все действия разрешены только авторизованным пользователям. Следовательно, мне часто нужно ссылаться на сущность Member. Я экспериментировал с разными способами кэширования участника и нашел довольно быстрый подход. Но я хотел бы получить совет / мнение о рисках / недостатках того, что я делаю.

Я определил фабричный класс для получения экземпляра Member, который «зарегистрирован» в Ninject, поэтому я могу использовать его везде, где я нужно это. Привязка Ninject "привязана к сеансу" (я объясню это чуть позже). Фабричный метод сначала проверяет Session, чтобы увидеть, содержит ли он ранее созданный экземпляр Member. Если сеанс не работает, подпрограмма создает экземпляр из базовой базы данных через EF, сохраняя значение в сеансе, а также возвращая его.

Поскольку некоторые из обращений к экземпляру члена являются вызовами EF, я должен был гарантировать, что объект EF контекст также находился в области сеанса (я на собственном опыте узнал, что вызов подпрограмм EF для экземпляра Member, который изначально был создан в другом контексте, не работает слишком хорошо). Поскольку фабрика и контекст объекта создаются через Ninject, мне пришлось определить область сеанса для Ninject.

Я нашел фрагмент кода для этого здесь , который я смог изменить в соответствии со своими потребностями. Но это такой простой фрагмент, что мне интересно, есть ли причина, по которой эта возможность не предоставляется «изначально» Ninject (или Ninject MVC). Это заставляет меня задуматься, не вызываю ли я проблем из-за того, что я делаю.

Я действительно понимаю, что есть ряд аспектов хранения вещей в сеансе, которые вы должны программировать, главным из которых является тот факт, что сохраненные объект может «исчезнуть» в любой момент (т.е. у вас всегда должна быть возможность воссоздать его, когда вы его получите). Но хотя это добавляет достаточно сложности, что я не хотел бы делать это для большого количества объектов, сделать это для одного объекта-члена не так уж и сложно.

В любом случае, советы и отзывы о масштабировании сеанса Приветствуется привязка Ninject и сохранение объектов EF в сеансе для приложения MVC.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page import="com.library.controller.*"%>
<%@ page import="com.library.dao.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.lang.*" %>
<%@ page import="java.util.Date" %>

Return Page




    

Eclipse IDE показывает красное подчеркивание, и когда я фокусируюсь на нем, тег выглядит следующим образом: не удается найти дескриптор библиотеки для http://java.sun.com/ jsp / jstl / core

90
задан BalusC 13 May 2011 в 12:24
поделиться
BookIDBookNameIssuedatereturndate
${element.getBookid}${element.getBookname()} ${element.getIssuedate()}${element.getReturndate()}