در حین جستجوی مطلبی در فورومهای ASP.NET، مطلبی رو از یکی از اعضای تیم ASP.NET دیدم که خلاصهاش به این شرح است:
اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و حداقل یکی از آنها به صورت سشنی خواندنی+نوشتنی علامت گذاری شده باشد، اینگونه درخواستها serialized میشود. به این معنا که این نوع درخواستها در صف قرار داده شده و به ترتیب رسیدن، اجرا میشوند. این کار هم از این جهت لازم است که چندین درخواست یا به عبارتی چندین ترد همزمان، سبب انجام تغییرات ناخواستهای در مقادیر سشن مورد استفاده نشوند.
و اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و تمام آنها سشن «فقط خواندنی» باشند یا در آنها سشن «غیرفعال» شده باشد، این درخواستها به صورت موازی پردازش خواهند شد.
بنابراین اگر در برنامه خود از سشن استفاده نمیکنید، سطر زیر را به وب کانفیگ برنامه اضافه نمائید تا حداکثر استفاده را از پردازش موازی خودکار کرده باشید:
و یا در ASP.NET MVC میتوان کنترل ریزتری را به نحو زیر نیز اعمال کرد:
در اینجا تنها حالت سشن مرتبط با اکشن متدی (و یا تمام اکشن متدهای یک کنترلر) که برای درخواستهای Ajax طراحی شده، خاموش گردیده است تا درخواستهای غیرهمزمان Ajaxایی بتوانند حداکثر استفاده را از پردازش موازی خودکار کنند.
نکته دیگر اینکه اگر نیاز به استفاده از سشن در یک اکشن متد وجود داشته باشد میتوان از فیلتر سشنهای فقط خواندنی استفاده کرد تا باز هم به همان پردازش موازی پشت صحنه برسیم:
اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و حداقل یکی از آنها به صورت سشنی خواندنی+نوشتنی علامت گذاری شده باشد، اینگونه درخواستها serialized میشود. به این معنا که این نوع درخواستها در صف قرار داده شده و به ترتیب رسیدن، اجرا میشوند. این کار هم از این جهت لازم است که چندین درخواست یا به عبارتی چندین ترد همزمان، سبب انجام تغییرات ناخواستهای در مقادیر سشن مورد استفاده نشوند.
و اگر چندین درخواست با یک Session ID به موتور پردازشی ASP.NET وارد شوند و تمام آنها سشن «فقط خواندنی» باشند یا در آنها سشن «غیرفعال» شده باشد، این درخواستها به صورت موازی پردازش خواهند شد.
بنابراین اگر در برنامه خود از سشن استفاده نمیکنید، سطر زیر را به وب کانفیگ برنامه اضافه نمائید تا حداکثر استفاده را از پردازش موازی خودکار کرده باشید:
<httpModules> <remove name="Session"/> </httpModules>
<sessionState mode="Off" />
و یا در ASP.NET MVC میتوان کنترل ریزتری را به نحو زیر نیز اعمال کرد:
[SessionState(SessionStateBehavior.Disabled)] public class AjaxTestController : Controller { //... }
نکته دیگر اینکه اگر نیاز به استفاده از سشن در یک اکشن متد وجود داشته باشد میتوان از فیلتر سشنهای فقط خواندنی استفاده کرد تا باز هم به همان پردازش موازی پشت صحنه برسیم:
[SessionState(SessionStateBehavior.ReadOnly)]