فریم ورک ASP.NET Web API صرفا برای ساخت سرویسهای سادهای که میشناسیم، نیست و در واقع مدل جدیدی برای برنامه نویسی HTTP است. کارهای بسیار زیادی را میتوان توسط این فریم ورک انجام داد که در این مقاله به یکی از آنها میپردازم. فرض کنید میخواهیم یک فایل ویدیو را بصورت Asynchronous به کلاینت ارسال کنیم.
ابتدا پروژه جدیدی از نوع ASP.NET Web Application بسازید و قالب آن را MVC + Web API انتخاب کنید.
ابت ...
در پست قبلی نگاهی اجمالی به انتشار نسخه جدید Identity Framework داشتیم. نسخه جدید تغییرات چشمگیری را در فریم ورک بوجود آورده و قابلیتهای جدیدی نیز عرضه شدهاند. دو مورد از این قابلیتها که پیشتر بسیار درخواست شده بود، تایید حسابهای کاربری (Account Validation) و احراز هویت دو مرحله ای (Two-Factor Authorization) بود. در این پست راه اندازی این دو قابلیت را بررسی میکنیم.
تیم ASP.NET Identity پروژه نمونه ای را فراهم کرده است که ...
در دنیای دات نت گرایشی برای تجزیه (abstract) کردن EF پشت الگوی Repository وجود دارد. این تمایل اساسا بد است و در ادامه سعی میکنم چرای آن را توضیح دهم. پایه و اساس
عموما این باور وجود دارد که با استفاده از الگوی Repository میتوانید (در مجموع) دسترسی به دادهها را از لایه دامنه (Domain) تفکیک کنید و "دادهها را بصورت سازگار و استوار عرضه کنید".
اگر به هر کدام از پیاده سازیهای الگو ...
در تاریخ 20 مارچ 2014 تیم ASP.NET نسخه نهایی Identity 2.0 را منتشر کردند . نسخه جدید برخی از ویژگیهای درخواست شده پیشین را عرضه میکند و در کل قابلیتهای احراز هویت و تعیین سطح دسترسی ارزنده ای را پشتیبانی میکند. این فریم ورک در تمام اپلیکیشنهای ASP.NET میتواند بکار گرفته شود.
فریم ورک Identity در سال 2013 معرفی شد، که دنباله سیستم ASP.NET Membership بود. سیستم قبلی گرچه طی سالیان استفاده میشد اما مشکلات زیادی هم به ...
برخی از تنظیمات پروژه نباید به مخازن سورس کنترل ارسال شوند؛ حال یا نیازی به این کار نیست یا مقادیر تنظیمات محرمانه هستند. چند بار پیش آمدهاست که پروژه را از سورس کنترل دریافت و مجبور شده باشید رشتههای اتصال و دیگر تنظیمات را مجددا ویرایش کنید، چرا که توسعه دهندگان دیگری مثلا فایلهای Web/App.config خود را به اشتباه push کرده اند؟ حتی اگر تنظیمات پروژه محرمانه هم نباشند (مثلا پسورد دیتابیسها یا ایمیل ها) این موارد میتوانند دردسر ساز شون ...
ابزار NuGet بسیار کار آمد و مفید است. یکی از مشکلات رایج هنگامی پیش میآید که پروژه را بهمراه بستههای نصب شده به سورس کنترل push میکنید. با این کار حجم زیادی از فایلها را به مخزن سورس کنترل آپلود میکنید و هنگام clone کردن پروژه توسط هر شخصی، این اطلاعات باید دریافت شوند. بدتر از این هنگامی است که برخی از بستهها از سورس حذف میشوند و باید به اعضای تیم پروژه اطلاع دهید که چه بستههایی باید دریافت و نصب شوند.
برای رفع این موا ...
در قسمت قبلی مدیریت همزمانی در بروز رسانیها را بررسی کردیم. در این قسمت مرتب سازی (serialization) پراکسیها در سرویسهای WCF را بررسی خواهیم کرد. مرتب سازی پراکسیها در سرویسهای WCF فرض کنید یک پراکسی دینامیک (dynamic proxy) از یک کوئری دریافت کرده اید. حال میخواهید این پراکسی را در قالب یک آبجکت CLR سریال کنید. هنگامی که آبجکتهای موجودیت را بصورت POCO-based پیاده سازی میکنید، EF بصورت خودکار یک آبجکت دینامیک مشتق شده را در ...
در قسمت قبل رویکردهای مختلف برای حذف موجودیتهای منفصل را بررسی کردیم. در این قسمت مدیریت همزمانی یا Concurrency را بررسی خواهیم کرد.
فرض کنید میخواهیم مطمئن شویم که موجودیتی که توسط یک کلاینت WCF تغییر کرده است، تنها در صورتی بروز رسانی شود که شناسه (token) همزمانی آن تغییر نکرده باشد. به بیان دیگر شناسه ای که هنگام دریافت موجودیت بدست میآید، هنگام بروز رسانی باید مقداری یکسان داشته باشد.
مدل زیر را در ...
در قسمت قبل پیاده سازی change-tracking در سمت کلاینت توسط Web API را بررسی کردیم. در این قسمت نگاهی به حذف موجودیتهای منفصل یا disconnected خواهیم داشت. حذف موجودیتهای منفصل فرض کنید موجودیتی را از یک سرویس WCF دریافت کرده اید و میخواهید آن را برای حذف علامت گذاری کنید. مدل زیر را در نظر بگیرید. همانطور که میبینید مدل ما صورت حسابها و پرداختهای متناظر را ارائه میکند. در اپلیکیشن جاری یک سرویس WCF پیاده سازی کرده ا ...
در قسمت قبل تشخیص تغییرات توسط Web API را بررسی کردیم. در این قسمت نگاهی به پیاده سازی Change-tracking در سمت کلاینت خواهیم داشت. ردیابی تغییرات در سمت کلاینت توسط Web API فرض کنید میخواهیم از سرویسهای REST-based برای انجام عملیات CRUD روی یک Object graph استفاده کنیم. همچنین میخواهیم رویکردی در سمت کلاینت برای بروز رسانی کلاس موجودیتها پیاده سازی کنیم که قابل استفاده مجدد (reusable) باشد. علاوه بر این دسترسی دادهها توسط مد ...