asp.net тұтынушылар туралы ақпарат класы

Мен asp.net веб-қосымшасын (framework 4) құрып, негізгі тұтынушы туралы ақпаратты (клиенттің идентификаторы, электрондық поштаны, телефонды, мекен-жай туралы ақпаратты, клиент шоттарын және т.б.) Веб-сайт беттерінен шығуға қол жетімді, сондықтан менің клиенттің идентификаторы жоқ жерде (сеанс және т.б.) және сол клиент туралы қандай да бір ақпарат қажет болғанда ЖБ-ға қоңырау шалуға болады. Пайдаланушылар порталға кіріп, негізгі ақпаратты алуға және оны сынып түрінде сақтаған кезде, тек бір рет қоңырау шалуды қаладым.

кез-келген фаунаның осы түрін қалай дамыту керектігін және оны барлық беттерге қол жетімді ету үшін қалай сақтау керектігін айтады?

0
ASP.NET беттері азаматтығы жоқ. Жаһандық ақпарат бір жерде сақталуы керек. Сеанс оны дұрыс пайдалансаңыз, оны пайдалану жаман емес. Сеанста болған нәрсені азайтуды қаласаңыз, пайдаланушы идентификаторын (немесе сізде бар бірегей идентификаторды) сақтаңыз және сол клиент туралы ақпарат қажет болғанда оны дерекқордан алыңыз.
қосылды автор Cᴏʀʏ, көзі
Мен Брайанмен толықтай келісемін, сіздің сұрағыңыздан объектілі-бағдарланған бағдарламалау жұмысыңыздың жоқтығы сияқты көрінеді.
қосылды автор gideon, көзі
Сабақтардың қалай жұмыс істеп жатқанын, әсіресе табандылықпен байланысты емес екенін түсінемін. Негізінен сыныптар - табандылық, немқұрайдылық. HTTP протоколы табиғаты бойынша азаматтығы жоқ, сондықтан сұрау аяқталғаннан кейін сынып данасы жойылады. Тұтынушы ақпаратын (тіпті егер ол сынып нысаны болса да) сақтау үшін Сессияның (немесе басқа да төзімділік механизмінің) бірнешеуін пайдалану қажет болады.
қосылды автор Brian Driscoll, көзі

1 жауаптар

Пайдаланушы сәтті кіргеннен кейін, ағымдағы Customer нысанын шығарып, оны Session деп сақтау үшін DB-ге жеке қоңырауды жасаңыз. Сервердің жадысын дұрыс пайдаланбау туралы ойланба. Нысан 500 байттан аз болады және 1000 тірі сеанс болса, ол сіздің серверіңіздің жадыңыздың 500 килограмнан азын құрайды.

Сондай-ақ Cache User ID деп теріліп, Customer нысанын шығарып алыңыз.

ViewState -ге Customer нысанын сақтауға болады және бұл серверде ешқандай жадты қабылдамайды.

Кез келген беттен Session \ Cache \ ViewState кіруге өте оңай.

For Session:

protected void Page_Load(object sender, EventArgs eventArgs)
{
    Customer customer = Session["customer"] as Customer;
}

private void LoginSuccess(int customerID) {
    Customer customer = _customerRepository.GetById(customerID);
    Session["customer"] = customer;
}

ViewState үшін Session - жай ғана Session дегенді ViewState дегенге ауыстырыңыз.

Оны Cache ішінде сақтағыңыз келсе, оны пайдаланыңыз

HttpContext.Current.Cache.Insert("customer" + customerId, customer, new CacheDependency("customer" + customerId), Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration);

Және Cache элементіне келесідей кіруге болады:

HttpContext.Current.Cache["customer" + customerID]

Бұл көмектеседі деп үміттенемін!

0
қосылды