چرا Docker طرفدار دارد ؟
در گذشته اگر می خواستید یک برنامه ی ASP با دیتابیس MSSQL در سرور لینوکس اجرا کنید باید یک ماشین مجازی می ساختید و روی آن ویندوز نصب می کردید و بعد تازه دات نت و SQL Server نصب می کردید. تازه می توانستید سایت را روی IIS اجرا کنید.
وقتی از Docker استفاده می کنید نیاز به ماشین مجازی ندارید. علاوه بر این نیاز به نصب نرم افزارهای جانبی مانند SQL Server هم ندارید. می توانید کل سایت و دیتابیس و حتی کل SQL Server را درون یک فایل که اصطلاحا Container خوانده میشود قرار دهید و آن را در لینکوس با یک خط فرمان اجرا کنید. با داکر یک برنامه همه جا یکسان کار میکند. در واقع با داکر عبارت معروف " روی سیستم من که اجرا میشه " دیگر از بین میرود.
هر چند ASP Core خودش در لینکوس و macOS قابل اجرا است اما استفاده از Docker عملیات انتشار سایت را بسیار ساده می کند. مخصوصا وقتی که برنامه ی شما قرار است روی چند سرور اجرا شود یا قصد جابجایی آن را به یک سرور جدید داشته باشید فقط باید یک فایل را کپی کنید.
خیلی از نرم افزارها نسخه ی Docker دارند که مانند Nuget از Docker Hub قابل دانلود و نصب است. مثلا SQL Server 2017 را می توانید با حجم 2 گیگ روی هر سیستمی اجرا کنید بدون اینکه نیاز به طی کردن مراحل طولانی نصب داشته باشد. IIS و Node و MySQL و Redis و حتی سیستم عامل Ubuntu هم از طریق Docker قابل نصب است.
برای نصب داکر باید تحریم ها را دور بزنید و آن را دانلود کنید. همچنین فقط از سیستم عامل های x64 پشتیبانی می کند. بعد از نصب به یک محیط Console دسترسی پیدا میکنید که دستورات داکر را اجرا می کند.
در حال حاضر Docker سر و صدای زیادی به پا کرده و مقالات و کتابهای زیادی در مورد آن منتشر می شود. بسیاری از شرکتها تمامی کارهای سرور را با Docker انجام می دهند و تخصص در این زمینه می تواند فرصت های شغلی زیادی ایجاد کند.
در گذشته اگر می خواستید یک برنامه ی ASP با دیتابیس MSSQL در سرور لینوکس اجرا کنید باید یک ماشین مجازی می ساختید و روی آن ویندوز نصب می کردید و بعد تازه دات نت و SQL Server نصب می کردید. تازه می توانستید سایت را روی IIS اجرا کنید.
وقتی از Docker استفاده می کنید نیاز به ماشین مجازی ندارید. علاوه بر این نیاز به نصب نرم افزارهای جانبی مانند SQL Server هم ندارید. می توانید کل سایت و دیتابیس و حتی کل SQL Server را درون یک فایل که اصطلاحا Container خوانده میشود قرار دهید و آن را در لینکوس با یک خط فرمان اجرا کنید. با داکر یک برنامه همه جا یکسان کار میکند. در واقع با داکر عبارت معروف " روی سیستم من که اجرا میشه " دیگر از بین میرود.
هر چند ASP Core خودش در لینکوس و macOS قابل اجرا است اما استفاده از Docker عملیات انتشار سایت را بسیار ساده می کند. مخصوصا وقتی که برنامه ی شما قرار است روی چند سرور اجرا شود یا قصد جابجایی آن را به یک سرور جدید داشته باشید فقط باید یک فایل را کپی کنید.
خیلی از نرم افزارها نسخه ی Docker دارند که مانند Nuget از Docker Hub قابل دانلود و نصب است. مثلا SQL Server 2017 را می توانید با حجم 2 گیگ روی هر سیستمی اجرا کنید بدون اینکه نیاز به طی کردن مراحل طولانی نصب داشته باشد. IIS و Node و MySQL و Redis و حتی سیستم عامل Ubuntu هم از طریق Docker قابل نصب است.
برای نصب داکر باید تحریم ها را دور بزنید و آن را دانلود کنید. همچنین فقط از سیستم عامل های x64 پشتیبانی می کند. بعد از نصب به یک محیط Console دسترسی پیدا میکنید که دستورات داکر را اجرا می کند.
در حال حاضر Docker سر و صدای زیادی به پا کرده و مقالات و کتابهای زیادی در مورد آن منتشر می شود. بسیاری از شرکتها تمامی کارهای سرور را با Docker انجام می دهند و تخصص در این زمینه می تواند فرصت های شغلی زیادی ایجاد کند.
کجا باید از RavenDB استفاده کنیم ؟
دیتابیس های Document نوع خاصی از دیتابیس های غیر SQL است که تمرکزش روی ذخیره ی اطلاعات به شکل سند است. هر سند دارای خصوصیات مدل است و "نشانی "دارد که مشخص می کند نوع اطلاعات ذخیره شده در سند چیست.
وقتی از دیتابیس های اسنادی استفاده می کنید لازم نیست سند شما همیشه یک قالب داشته باشد. در هر لحظه می تواند فیلد جدیدی به سند اضافه کنید بدون آنکه لازم باشد برگردید و اطلاعات گذشته را تغییر دهید. اضافه کردن انواع جدید سند به سادگی اجرای دستور ذخیره ی سند است. لازم نیست ساختار گذشته ی دیتابیس را تغییر دهید.
یکی از بهترین جاهایی که این نوع دیتابیس خودش را نشان میدهد سایتهای فروشگاهی مانند دیجی کالا است. تعداد زیادی محصول داریم که هر کدام خصوصیات خودش را دارد. اگر بخواهیم از SQL استفاده کنیم باید برای هر محصول یک جدول جدا درست کنیم یا مشخصات همه ی محصولات را در یک جدول به صورت کلید و مقدار ذخیره کنیم. هیچکدام از اینها گزینه ی خوبی نیست.
اما در RavenDB یا دیتابیس های مشابه مانند MongoDB و CouchDB کافی است یک کلاس برای محصول جدید ایجاد کنیم و اطلاعات را ذخیره کنیم. دیتابیس خودش با ترفندهایی که دارد اطلاعات مشابه را به Collection تبدیل می کند .
استفاده از RavenDb برای همه ی کارها مناسب نیست همانطور که SQL همیشه بهترین راه حل نیست. بهتر است برای هر کاری ابزار خودش را بشناسیم. ضمن اینکه تجربه ی کار با یک نوع متفاوت دیتابیس می تواند افق های جدیدی برای شما باز کند.
دیتابیس های Document نوع خاصی از دیتابیس های غیر SQL است که تمرکزش روی ذخیره ی اطلاعات به شکل سند است. هر سند دارای خصوصیات مدل است و "نشانی "دارد که مشخص می کند نوع اطلاعات ذخیره شده در سند چیست.
وقتی از دیتابیس های اسنادی استفاده می کنید لازم نیست سند شما همیشه یک قالب داشته باشد. در هر لحظه می تواند فیلد جدیدی به سند اضافه کنید بدون آنکه لازم باشد برگردید و اطلاعات گذشته را تغییر دهید. اضافه کردن انواع جدید سند به سادگی اجرای دستور ذخیره ی سند است. لازم نیست ساختار گذشته ی دیتابیس را تغییر دهید.
یکی از بهترین جاهایی که این نوع دیتابیس خودش را نشان میدهد سایتهای فروشگاهی مانند دیجی کالا است. تعداد زیادی محصول داریم که هر کدام خصوصیات خودش را دارد. اگر بخواهیم از SQL استفاده کنیم باید برای هر محصول یک جدول جدا درست کنیم یا مشخصات همه ی محصولات را در یک جدول به صورت کلید و مقدار ذخیره کنیم. هیچکدام از اینها گزینه ی خوبی نیست.
اما در RavenDB یا دیتابیس های مشابه مانند MongoDB و CouchDB کافی است یک کلاس برای محصول جدید ایجاد کنیم و اطلاعات را ذخیره کنیم. دیتابیس خودش با ترفندهایی که دارد اطلاعات مشابه را به Collection تبدیل می کند .
استفاده از RavenDb برای همه ی کارها مناسب نیست همانطور که SQL همیشه بهترین راه حل نیست. بهتر است برای هر کاری ابزار خودش را بشناسیم. ضمن اینکه تجربه ی کار با یک نوع متفاوت دیتابیس می تواند افق های جدیدی برای شما باز کند.
چرا Vue.js را دوست داریم ؟
1- یکی از بهترین داکیومنت ها را دارد و یاد گیری آن ساده است.
2- لازم نیست برای شروع کار با آن مراسم بپا کنید و چند جور نرم افزار نصب کنید.
3- نیازی به Node یا NPM ندارد. می توانید مانند jQuery فایل آن را به هر صفحه ی وب اضافه کنید.
4- شما را مجبور به استفاده از سبک خاصی نمی کند. می توانید هر قسمت از آن را که نمی پسندید با فریم ورک دیگر عوض کنید.
5- یک فریم ورک پیشرونده است و بر اساس نیازهای شما امکانات بیشتری در اختیارتان قرار میدهد.
6- هم امکانات Angular و React را دارد هم می تواند مانند Knockout شما را سریع به هدف برساند.
7- کار خودش را میکند و تصمیمات آن تحت تاثیر رقابت های کاذب بین غول های نرم افزاری نیست.
1- یکی از بهترین داکیومنت ها را دارد و یاد گیری آن ساده است.
2- لازم نیست برای شروع کار با آن مراسم بپا کنید و چند جور نرم افزار نصب کنید.
3- نیازی به Node یا NPM ندارد. می توانید مانند jQuery فایل آن را به هر صفحه ی وب اضافه کنید.
4- شما را مجبور به استفاده از سبک خاصی نمی کند. می توانید هر قسمت از آن را که نمی پسندید با فریم ورک دیگر عوض کنید.
5- یک فریم ورک پیشرونده است و بر اساس نیازهای شما امکانات بیشتری در اختیارتان قرار میدهد.
6- هم امکانات Angular و React را دارد هم می تواند مانند Knockout شما را سریع به هدف برساند.
7- کار خودش را میکند و تصمیمات آن تحت تاثیر رقابت های کاذب بین غول های نرم افزاری نیست.
پروژه ی دمو - پیاده سازی CRUD با RavenDB
در این پروژه با استفاده از دیتابیس RavenDB و فریم ورک ASP Core MVC 2.0 یک برنامه ی ساده ی مدیریت باگ پیاده می کنیم. برای ذخیره و بازیابی اطلاعات از Client API در RavenDB استفاده شده است.
نکته ی مهم در مورد RavenDB این است که ID ها را بر اساس الگوریتم hi/lo میسازد و در آنها از کاراکتر "/" استفاده می شود. این مسئله در Routing محیط ASP Core کمی دردسر ساز بود. اما با تغییر پیش فرضهای RavenDB حل شد.
سورس پروژه را می توانید از آدرس زیر دانلود کنید :
https://github.com/codehaks/BugRaven
در این پروژه با استفاده از دیتابیس RavenDB و فریم ورک ASP Core MVC 2.0 یک برنامه ی ساده ی مدیریت باگ پیاده می کنیم. برای ذخیره و بازیابی اطلاعات از Client API در RavenDB استفاده شده است.
نکته ی مهم در مورد RavenDB این است که ID ها را بر اساس الگوریتم hi/lo میسازد و در آنها از کاراکتر "/" استفاده می شود. این مسئله در Routing محیط ASP Core کمی دردسر ساز بود. اما با تغییر پیش فرضهای RavenDB حل شد.
سورس پروژه را می توانید از آدرس زیر دانلود کنید :
https://github.com/codehaks/BugRaven
GitHub
codehaks/BugRaven
BugRaven - A sample project using ASP Core 2.0 MVC and RavenDb - CRUD Operations
آشنایی با Elasticsearch
با استفاده از ElasticSearch می توانید اطلاعات با حجم بالا را با سرعت زیاد جستجو کنید.
این ابزار دارای یک دیتابیس اسنادی است که اطلاعات را طبقه بندی می کند و با الگوریتم های پیشرفته در سریعترین زمان ممکن جستجو می کند. لازم نیست عبارت ها دقیق باشند بلکه این ابزار می تواند جستجوهایی مانند گوگل را انجام دهد.
می توانید دیتابیس های جاری را به آن وصل کنید. در واقع معمولا از ES به عنوان دیتابیس کمکی جهت جستجو استفاده می شود. اگرچه قابلیت استفاده مستقیم هم دارد. همه چیز در ElasticSearch درون یک وب سرویس انجام می شود.
اگر اطلاعات زیادی دارید که نیاز به جستجو مداوم دارند ES می تواند راه گشا باشد. یکی از بهترین قسمتهایی که ES خودش را نشان می دهد در تجزیه و تحلیل اطلاعات لوگ است. لوگها معمولا اطلاعات وسیعی دارند و برای استخراج آمار در آنها نیاز به کوئری های سنگین داریم که ES به خوبی از عهده ی آن بر می آید.
این ابزار با Java پیاده شده و برای اجرای آن یا باید Docker داشته باشید یا از JVM استفاده کنید. از ES معمولا در کنار ابزاری مانند Kibana و Logstash استفاده می شود. این ابزار سورس باز است و رایگان عرضه می شود اما برای پشتبانی های بعدی هزینه دریافت می کند.
با استفاده از ElasticSearch می توانید اطلاعات با حجم بالا را با سرعت زیاد جستجو کنید.
این ابزار دارای یک دیتابیس اسنادی است که اطلاعات را طبقه بندی می کند و با الگوریتم های پیشرفته در سریعترین زمان ممکن جستجو می کند. لازم نیست عبارت ها دقیق باشند بلکه این ابزار می تواند جستجوهایی مانند گوگل را انجام دهد.
می توانید دیتابیس های جاری را به آن وصل کنید. در واقع معمولا از ES به عنوان دیتابیس کمکی جهت جستجو استفاده می شود. اگرچه قابلیت استفاده مستقیم هم دارد. همه چیز در ElasticSearch درون یک وب سرویس انجام می شود.
اگر اطلاعات زیادی دارید که نیاز به جستجو مداوم دارند ES می تواند راه گشا باشد. یکی از بهترین قسمتهایی که ES خودش را نشان می دهد در تجزیه و تحلیل اطلاعات لوگ است. لوگها معمولا اطلاعات وسیعی دارند و برای استخراج آمار در آنها نیاز به کوئری های سنگین داریم که ES به خوبی از عهده ی آن بر می آید.
این ابزار با Java پیاده شده و برای اجرای آن یا باید Docker داشته باشید یا از JVM استفاده کنید. از ES معمولا در کنار ابزاری مانند Kibana و Logstash استفاده می شود. این ابزار سورس باز است و رایگان عرضه می شود اما برای پشتبانی های بعدی هزینه دریافت می کند.
نسخه ی ASP Core 2.1 - Preview 2 منتشر شد.
مهمترین تغییر در Preview 2 نسبت Preview 1 جایگزین شدن Libuv با WebSockets است.
مایکروسافت مدتها تلاش می کرد وابستگی فریم ورک ASP Core به Libuv را از بین ببرد. اما با توجه به پرفورمنس بالای Libuv اینکار ممکن نبود.
این کار با سه هدف انجام شد :
1- هرجا WebSockets کار می کند Kestrel هم کار میکند و دیگر نیاز به بیلد کردن مجدد پروژه برای Libuv نیست.
2- امکان بیلد کردن خودکار پروژه ی Kestrel با Libuv وجود نداشت.
3- توسعه ی WebSockets و تبدیل آن به بخشی از محیط دات نت کور.
البته این اختیار به برنامه نویسان داده شده است که بجای WebSockets از Libuv استفاده کنند و برای اینکار کافی است پکیج مربوط به آن را نصب کنند.
نسخه ی بعدی RC1 است و تا یک ماه دیگر منتشر خواهد شد. نسخه ی نهایی 2.1 از ابتدای تابستان عرضه می شود و دارای پشتیبانی سه ساله خواهد بود.
مهمترین تغییر در Preview 2 نسبت Preview 1 جایگزین شدن Libuv با WebSockets است.
مایکروسافت مدتها تلاش می کرد وابستگی فریم ورک ASP Core به Libuv را از بین ببرد. اما با توجه به پرفورمنس بالای Libuv اینکار ممکن نبود.
این کار با سه هدف انجام شد :
1- هرجا WebSockets کار می کند Kestrel هم کار میکند و دیگر نیاز به بیلد کردن مجدد پروژه برای Libuv نیست.
2- امکان بیلد کردن خودکار پروژه ی Kestrel با Libuv وجود نداشت.
3- توسعه ی WebSockets و تبدیل آن به بخشی از محیط دات نت کور.
البته این اختیار به برنامه نویسان داده شده است که بجای WebSockets از Libuv استفاده کنند و برای اینکار کافی است پکیج مربوط به آن را نصب کنند.
نسخه ی بعدی RC1 است و تا یک ماه دیگر منتشر خواهد شد. نسخه ی نهایی 2.1 از ابتدای تابستان عرضه می شود و دارای پشتیبانی سه ساله خواهد بود.