Roslyn #3
بررسی Syntax tree زمانیکه صحبت از Syntax میشود، منظور نمایش متنی سورس کدها است. برای بررسی و آنالیز آن، نیاز است این نمایش متنی، به ساختار دادهای ویژهای به نام Syntax tree تبدیل شود و این Syntax...
View ArticleRoslyn #4
بررسی API کامپایل Roslyn Compilation API، یک abstraction سطح بالا از فعالیتهای کامپایل Roslyn است. برای مثال در اینجا میتوان یک اسمبلی را از Syntax tree موجود، تولید کرد و یا جایگزینهایی را برای...
View ArticleRoslyn #5
بررسی Semantic Models همانطور که از قسمت قبلبهخاطر دارید، برای دسترسی به اطلاعات semantics، نیاز به یک context مناسب که همان Compilation API است، میباشد. این context دارای اطلاعاتی مانند دسترسی به...
View ArticleRoslyn #6
معرفی Analyzers پیشنیاز این بحث نصب مواردی است که در مطلب «شروع به کار با Roslyn» در قسمت دوم عنوان شدند: الف) نصب SDK ویژوال استودیوی 2015 ب) نصب قالبهای ایجاد پروژههای مخصوص Roslyn البته این...
View ArticleRoslyn #7
معرفی Workspace API Workspace، در حقیقت نمایش اجزای یک Solution در ویژوال استودیو است و یک Solution متشکل است از تعدادی پروژه به همراه وابستگیهای بین آنها. هدف از وجود Workspace API در Roslyn، دسترسی...
View ArticleC# 6 - String Interpolation
تا پیش از C# 6 یکی از روشهای توصیه شدهی جهت اتصال رشتهها به هم، استفاده از متدهایی مانند string.Format و StringBuilder.AppendFormat بود:using System; namespace CS6NewFeatures { class Person {...
View ArticleC# 6 - Null-conditional operators
برنامه نویسهای سیشارپ پیشتر با null-coalescing operator یا ?? آشنا شده بودند. برای مثال string data = null; var result = data ?? "value"; در این حالت اگر data یا سمت چپ عملگر، نال باشد، مقدار value...
View ArticleC# 6 - Exception Filtering
سیشارپ نیز مانند بسیاری از زبانهای شیءگرای دیگر، امکان فیلتر کردن استثناءها را بر اساس نوع آنها، دارا است. برای مثال:try { // some code to check ... } catch (InvalidOperationException ex) {...
View Articleمعرفی JSON Web Token
دو روش کلی و پرکاربرد اعتبارسنجی سمت سرور، برای برنامههای سمت کاربر وب وجود دارند: الف) Cookie-Based Authenticationکه پرکاربردترین روش بوده و در این حالت به ازای هر درخواست، یک کوکی جهت اعتبارسنجی...
View Articleپردازش URLهایی با دامنههای یونیکد
این لینک را درنظر بگیرید: http://en.هشام.com/post/build-customizable-language-switcher-tag-helper-with-bootstrap در دامنهی آن، حروف یونیکد (فارسی/عربی) بکار رفتهاند. اگر صرفا با استفاده از قطعه کد...
View Articleپیاده سازی JSON Web Token با ASP.NET Web API 2.x
- پیشنیار بحث «معرفی JSON Web Token» پیاده سازیهای زیادی را در مورد JSON Web Token با ASP.NET Web API، با کمی جستجو میتوانید پیدا کنید. اما مشکلی که تمام آنها دارند، شامل این موارد هستند: - چون...
View Articleارتقاء به ASP.NET Core 1.0 - قسمت 1 - NET Core. چیست؟
NET Core. چیست؟ برای اغلب توسعه دهندههای دات نت (برنامههای وب و دسکتاپ) تنها یک دات نت فریم ورک شناخته شده وجود دارد: The `Full` .NET Framework که تنها بر روی ویندوز قابل اجرا است و آخرین نگارش...
View Articleارتقاء به ASP.NET Core 1.0 - قسمت 2 - بررسی ساختار جدید Solution
اگر یک پروژهی خالی ASP.NET Core Web Application را شروع کنید (با طی مراحل زیر جهت ایجاد یک پروژهی جدید): .NET Core -> ASP.NET Core Web Application (.NET Core) -> Select `Empty` Template تغییرات...
View Articleارتقاء به ASP.NET Core 1.0 - قسمت 3 - Middleware چیست؟
پیشنیازها - «با HttpHandler بیشتر آشنا شوید» - « کمی درباره httpmodule» - «چرخهی حیات یک درخواست در ASP.NET MVC» یکی از بزرگترین تغییرات ASP.NET Core نسبت به نگارشهای قبلی آن، مدیریت HTTP pipeline آن...
View Articleارتقاء به ASP.NET Core 1.0 - قسمت 4 - فعال سازی پردازش فایلهای استاتیک
همانطور که در قسمت قبل، با معرفی مقدماتی Middlewareها عنوان شد، تمام قابلیتهای یک برنامهی ASP.NET Core، به صورت پیش فرض غیرفعال هستند؛ مگر آنکه Middlewareهای مخصوص آنها را به صورت دستی و با آگاهی...
View Articleارتقاء به ASP.NET Core 1.0 - قسمت 5 - فعال سازی صفحات مخصوص توسعه دهندهها
اولین Middleware موجود در بستهی Microsoft.AspNetCore.Diagnostics را در مطلب «ارتقاء به ASP.NET Core 1.0 - قسمت 3 - Middleware چیست؟» با نمایش welcome page آن، بررسی کردیم. در این مطلب سایر صفحات مخصوص...
View Articleارتقاء به ASP.NET Core 1.0 - قسمت 6 - سرویسها و تزریق وابستگیها
پیشنیازها (الزامی) «بررسی مفاهیم معکوس سازی وابستگیها و ابزارهای مرتبط با آن» «اصول طراحی SOLID» «مطالعهی بیشتر» تزریق وابستگیها (یا Dependency injection = DI) به معنای ارسال نمونهای/وهلهای از...
View Articleارتقاء به ASP.NET Core 1.0 - قسمت 7 - کار با فایلهای config
یکی دیگر از تغییرات ASP.NET Core با نگارشهای قبلی آن، تغییرات اساسی در مورد نحوهی کار با تنظیمات برنامه و فایلهای مرتبط با آنها است. در ASP.NET Core میتوانید: - تنظیمات برنامه را از چندین منبع...
View Articleارتقاء به ASP.NET Core 1.0 - قسمت 8 - فعال سازی ASP.NET MVC
پیشنیازهای بحث (از قسمت 8 به بعد این سری) اگر پیشتر سابقهی کار کردن با ASP.NET MVC را ندارید، نیاز است «15 مورد» ابتدایی مطالب ASP.NET MVC سایت را پیش از ادامهی این سری مطالعه کنید؛ از این جهت که این...
View Articleارتقاء به ASP.NET Core 1.0 - قسمت 9 - بررسی تغییرات مسیریابی
فعال سازی تنظیمات مسیریابی یکی دیگر از تغییرات عمدهی ASP.NET Core با نگارشهای قبلی آن، نحوهی مدیریت مسیریابیهای سیستم است. در نگارشهای قبلی مبتنی بر HTTP Moduleها، مسیریابیها توسط یک HTTP Module...
View Article