در طراحی برنامههای Angular توصیه شدهاست تا هرگونه منطقی که مستقیما به View یک کامپوننت مرتبط نیست، به یک کلاس سرویس منتقل شود. در این بین ممکن است نیاز به صدور رخدادی از یک سرویس به خارج از آن باشد؛ چیزی مانند EventEmitter. اما EventEmitter برای سرویسها طراحی نشدهاست و کاربرد صحیح آن صرفا محدود به کامپوننتها است. برای حل این مساله، API سرویس ما باید یک Observable را در معرض دید استفاده کننده قرار دهد تا توسط آن بتوان رخدادهایی را ...
زیبایی متدهای کوچک، در قابل درک بودن آنها نهفته است. هدف نهایی بیشتر روشهای بازسازی کد، تغییر تکه کدی بزرگ و در هم تنیده، به تکههای کوچک قابل درکتر است. مهمترین مانع در شکستن تکه کدهای طولانی، وجود متغیرهای موقتی در آن است. چند روش بازسازی کد مطرح شده به طور خاص به این موضوع توجه دارند. زمانیکه متد طولانی ای در کد وجود داشته باشد که نتوان (به راحتی) آن را به چند متد کوچکتر تقسیم کرد، معمولا از این روش بازسازی کد استفاده میشود. د ...
در قسمت قبلی با Volume آشنا شدیم و نحوهی اجرا کردن یک Source Code را درون Container یاد گرفتیم. در این قسمت میخواهیم یک Image شخصی ساخته، آنرا اجرا و درون Docker hub ارسال نماییم. Dockerfile چیست؟ Dockerfile عملا چیزی بیشتر از یک دستور العمل از نوع متنی برای build و ساخت یک docker image از آن نمیباشد. ضمن اینکه مراحل build شدن، cache شده و buildهای بعدی با سرعت خیلی بیشتری اجرا خواهند شد. بعد از نوشتن چند dockerfile متوجه ...
پیشتر در مورد HTTP Client جدید Angular، مطلب « ارتقاء به HTTP Client در Angular 4.3 » را بررسی کردیم. یکی دیگر از قابلیتهای HttpClient که روش اصلی دسترسی به اطلاعات از راه دور در Angular 5 نیز میباشد، امکان تعریف Interceptors سفارشی برای آن است. به کمک Interceptors میتوان به تمامی درخواستهای HTTP ارسالی و پاسخهای دریافتی از سرور گوش فرا داد و در این بین منطق ویژهای را پیاده سازی کرد؛ مانندcaching ،logging و غیره. در مطلب جاری قصد دار ...
در قسمت قبل نحوه انتقال اطلاعات از کامپونت پدر به فرزند را از طریق متادیتای Input@ برسی کردیم. در اینجا نکات تکمیلی را مورد بحث قرار خواهیم داد. همانطور که قبلا مشاهده کردید، نام متغیر تعریف شده در کامپوننت فرزند (FormIsReadOnly) به عنوان یک خصوصیت در هنگام استفاده از کامپوننت ظاهر شده و عمل انقیاد از طریق این خصوصیت FormIsReadOnly صورت میگیرد. در صورتیکه قصد دارید نام خصوصیت ظاهر شده در کامپوننت، با نام متغیر تعریف شده در کامپوننت ف ...
همواره در تکنولوژی EF CodeFirst، چه در ASP.NET MVC و چه در ASP.NET Core، استفاده از امکانات بومی پایگاههای داده با محدودیتهایی مواجه بودهاست. یکی از این اشکالات، عدم توانایی این تکنولوژی در گرفتن لیستی از اطلاعات که منطبق بر بیشتر از یک مدل میباشد، هست. در این مقاله تمرکز بر روی رفع این اشکال، بدون نیاز به اضافه کردن مدخل جدیدی به پروژه میباشد. بنابراین پیشنیاز ضروری این مبحث، مطالعه « شروع به کار با EF Core 1.0 » ، مخصوصا « استفاده ...
در برنامههای تحت وب، در بعضی موارد نیاز داریم تا برای کاربر، امکان ثبت دادههایش را با آپلود فایلهای Excel فراهم کنیم. برای مثال در مطلب خواندن اطلاعات از فایل اکسل با استفاده از LinqToExcel ، امکان خواندن از Excel توضیح داده شده، اما نقطه ضعف این روشها، وابستگی به Provider های مایکروسافت است که در صورت عدم نصب آن ها: Microsoft.Jet.OLEDB.4.0 provider --> Excel 97-2003 format (.xls)
Microsoft.ACE.OLEDB.12.0 provider --& ...
یکی از مواردی که در پیاده سازی برنامههای «تا حدودی پیچیده» به آن برخورد میکنیم، نحوه تعامل و نقل و انتقال اطلاعات مشترک بین کامپوننتها و سرویسها میباشد. به عنوان مثال صفحهای را در نظر بگیرید که قرار است اطلاعات یک مشتری را نمایش دهد. این اطلاعات شامل اطلاعات شخص و اطلاعات آدرس او میباشد. برای داشتن کامپوننتهایی با قابلیت استفادهی مجدد، اطلاعات شخص و اطلاعات آدرس را به عنوان دو کامپوننت مستقل در نظر گرفته و پیاده سازی میکنیم. تا ...
در مطلب « فرمهای مبتنی بر قالبها در Angular - قسمت چهارم - اعتبارسنجی ورودیها » با نحوهی تنظیمات اعتبارسنجی سمت کلاینت برنامههای Angular آشنا شدیم. اما اگر مدل سمت سرور ما یک چنین شکلی را داشته باشد که به همراه خطاهای اعتبارسنجی سفارشی نیز هست: using System;
using System.ComponentModel.DataAnnotations;
namespace AngularTemplateDrivenFormsLab.Models
{
public class Movie
{
public int Id { get; set; }
...
در حالتهایی که متغیر موقتیای در متد وجود دارد که چندین بار مقدار دهی میشود، احتمالا به چنین بازسازی کدی نیاز است. قبل از ادامه بحث در این باره نیاز است یک نوع از متغیرهای محلی را بررسی کرد. متغیر محلی تجمعی (Collecting temporary variable): متغیری ای که در بدنه متد یا عبارتهای loop مقدار آن به مرور تکامل مییابد یا اضافه میشود. نمونهای از چنین متغیرهایی شمارندههای loop و یا رشتههایی هستند که بسته به شرایط خاص در متد تولید و م ...