PDA

View Full Version : حرفه ای: owin چیست ؟



Maryam_1368
جمعه 04 تیر 1395, 15:34 عصر
سلام دوستان.
بنده تازه دارم asp.net mvc یاد میگیرم و یک سری سوالات برام بوجود اومده
این owin چیه دقیقا؟ یه سری چیزا خوندم ولی درکش نکردم
مزیت استفادش چیه؟
برای بحث اعتبار سنجی کاربران باید از identity استفاده بشه ..
حالا این owin چی کارس این وسط؟
ممنون میشم اگه در قالب مثال عملی توضیح بدین یا اگه لینکی هست معرفی کنید
پیشاپیش تشکر

micro_bhk
جمعه 04 تیر 1395, 16:05 عصر
http://www.dotnettips.info/post/1720 (http://www.dotnettips.info/post/1720/owin-%DA%86%DB%8C%D8%B3%D8%AA-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84)

Maryam_1368
جمعه 04 تیر 1395, 16:40 عصر
http://www.dotnettips.info/post/1720 (http://www.dotnettips.info/post/1720/owin-%DA%86%DB%8C%D8%B3%D8%AA-%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84)

ممنون ..مقاله بالا رو خوندم یه سری سوال پیش اومد


نکته ای که در خطوط فوق به وضوح دیده می‌شود، وابستگی شدید ASP.NET به IIS است



این وابستگی شدید یعنی چی؟


بدیهتا کدی که بر روی بستر ASP.NET نوشته می‌شود نیز وابستگی فوق العاده ای به IIS دارد، که یکی از بدترین نوع این وابستگی‌ها در ASP.NET Web Forms دیده می‌شود.



بدترین مدلش توی وب فرم چه شکلی بوده؟ میشه مثال بزنید؟

hakim22
جمعه 04 تیر 1395, 20:59 عصر
به طور کلی وقتی ASP در 15 سال پیش پیاده سازی شد. برای مدیریت داده هایی که از وب و مرورگر دریافت و به آن برگشت میکرد یک کد بسیار کاملی پیاده شد و در فایلی به نام system.web.dll قرار گرفت.
این فایل کنترل همه چیز را در دست خودش داشت. یعنی تمامی عملیات مربوط به Request و Response ، کوکی ها ، سشن ها ، تمامی اطلاعات مربوط به دامنه ، شبکه ، آی پی و تمامی عملیات های مربوط به آنها در این فایل جمع شده بود.

با این شیوه برای هر نوع تغییری در ASP باید منتظر یک نسخه جدید می بودید. یعنی نمیشد فقط بخشی از یک سیستم را به صورت مجزا از کد سیستم توسعه داد.

مشکل دیگر سنگین شدن اطلاعات دریافتی و ارسالی بود. ممکن بود شما نیاز به استفاده از کوکی یا سشن نداشته باشید ولی system.web.dll کاری با این موضوع نداشت و در هر ارسال و دریافت اطلاعات مربوطه را هم درج میکرد . فقط کافی است در کنترلر MVC نگاهی به فیلدها و داده های شی Context بیاندازید.

وقتی که تکنولوژی node.js وارد بازار شد سبکی و سرعت آن همه را جذب خود کرد. دلیل اصلی آن هم حذف بار ناشی از اطلاعات اضافی دریافتی و ارسالی بود. به این معنی که جمع آوری اطلاعات از شبکه و مرورگر بر اساس چند لایه بود. یعنی شما می توانید در node.js انتخاب کنید که داده های دریافتی و ارسالی شامل چه چیزهایی باشد.

به این موضوع مثل یک رودخانه نگاه کنید. system.web.dll مانند یک توری بزرگ سرتاسر رودخانه را می پوشاند و میخواهد عبور و مرور همه چیز را تحت کنترل داشته باشد. در حالی که وقتی به صورت چند لایه ای و با ابزاری مثل OWIN کار می کنید هر کدام از این Middle-ware ها یا میانه ها فقط اطلاعات مطلوب خود را از رودخانه ی اطلاعات جمع آوری میکند و کاری با چیزهای دیگر ندارد. در واقع هر middle-war قلاب خودش را به آب می اندازد و داده های مورد نیاز خودش را شکار میکند.

OWIN یک استاندارد و یک تعریف است. بعدها مایکروسافت با استفاده از پروژه ی Katana ( که معنی یک ضربه خاص با شمشیر سامورایی است ) سعی کرد که اطلاعات دریافتی را در قالب چند لایه در اختیار Middle-ware ها قرار دهد.

حالا شما میتوانید Middle-ware یا میانه طراحی کنید. این میانه ها می توانند در مسیر داده های دریافتی و ارسالی قرار بگیرند و آنها را بخوانند یا روی آنها تغییرات اعمال کنند. مثلا میانه ی مربوط به Identity اطلاعات رمز نگاری شده ی کاربر را از کوکی دریافت و آنها را رمز گشایی میکند و در اختیار کنترلر ها قرار میدهد. بدون اینکه نیاز باشد در کنترلر ها شما عملیات خاصی را پیاده کنید.

هر میانه اطلاعات را دریافت می کند و بعد از انجام عملیان مورد نظرش آن را به میانه ی بعدی پاس میدهد. این میانه های میتوانند هم در زمان request و هم در زمان response وارد عمل شوند. و در واقع در هر دو مرحله فراخوانی می شوند. در ASP CORE میانه ها ابزار اصلی کار است و تمامی عملیات ها از طریق آنها مدیریت میشود. در MVC5 و نسخه های دات نت 4.6 به پایین همه چیز با system.web.dll انجام میشود. کار Katana تنها این است که اطلاعات دریافتی را بشکند تا میانه ها بتوانند در آنها دست ببرند.

عملا نیاز نیست با میانه ها کار کنید. پیاده سازی میانه ها نسبتا ساده است اما جایی که استفاده از آنها را توجیه کند کم است. در 90 درصد موارد فیلترهای MVC کار مورد نظر را انجام میدهند.