اشتراکها
اشتراکها
سایت یکی از اعضای تیم EF
با تشکر از شما. روش دیگری برای حل مساله استفاده از AOP است:
استفاده از IL Code Weaving برای تولید ویژگیهای تکراری مورد نیاز در WCF
مسیرراهها
ویژگی های C# 7.1
پیش گفتارها:
#. ویژگیهای نسخه ۵ --> مبانی asyncویژگیهای نسخه ۷٫۱
#. ویژگیهای نسخه ۶
#. ویژگیهای نسخه ۷
#1. فعالسازی کامپایلر
#2. استفاده از async main
#3. مقادیر پیشفرض - default literals
#4. استنتاج نام چندتاییها - tuple name inference
- تمرین تغییر مداوم و تست واحد | (Afshar Mohebbi) | blog.afsharm.com
- چندین نکته هنگام استفاده از تابع AVG در SQL SERVER | محمد صاحب | www.dotnetdev.info
- کاهش مشکلات خروج افراد از تیم | (Afshar Mohebbi) | blog.afsharm.com
- کروم در آستانه پیش افتادن از فایرفاکس | علی پارسا | www.winbeta.net
- Silverlight Toolkit September 2011 منتشر شد | silverlight.codeplex.com
- جهت گیری اصلی نگارش بعدی ویندوز سرور، گزینهی Server Core و برنامههای بدون رابط کاربری هستند | www.infoq.com
- ماکروها از Visual Studio 11 حذف شدهاند | www.infoq.com
- مایکروسافت Start Menu رو حذف کرده چون کسی ازش استفاده نمیکنه! | rss.slashdot.org
- مروری بر امکانات نگارش جدید Silverlight Toolkit | blogs.msdn.com
مطالب
Fluent Linq to Sql
نگارش بعدی یا چهارم entity framework چیزی است شبیه به Fluent NHibernate . یعنی اگر مقالهای را در این زمینه مطالعه کنید و عنوان آن حذف شود، نمیتوان تشخیص داد که این مقاله مربوط به entity framework است یا Fluent NHibernate. هر چند entity framework حداقل دو نگارش دیگر لازم دارد تا NHibernate را کاملا پشت سر بگذارد.
از آن طرف محبوبیت Linq to SQL هم هنوز پابرجا است و برای مثال سایت پر ترافیکی مثل stack overflow از آن استفاده میکند و بسیار هم موفق بوده و کارش را به خوبی انجام میدهد.
پروژه مکملی به نام Fluent Linq to Sql با الهام گیری از Fluent NHibernate در سایت codeplex موجود است که این نوع نگاشتها را برای Linq to Sql نیز میسر میسازد. به این صورت دیگر نیازی به استفاده از attributes و یا فایلهای xml نگاشتهای Linq to Sql نخواهد بود. همچنین مدل کاری اول کد بعد دیتابیس نیز به این صورت محقق میشود.
مطالب
NOSQL قسمت دوم
در مطلب قبلی با تعاریف سیستمهای NoSQL آشنا شدیم و به طور کلی ویژگیهای یک سیستم NoSQL را بررسی کردیم.
در این مطلب دستهبندی کلی و نوع ساختار دادهای این سیستمها و بررسی سادهترین آنها را مرور میکنیم.
در حالت کلی پایگاهای داده NoSQL به ۴ دسته تقسیم میشوند که به ترتیب پیچیدگی ذخیرهسازی دادهها عبارتند از:
به دلیل موجود بودن این نوع ساختار دادهای در اکثر کتابخانههای زبانهای برنامهنویسی ( به عنوان مثال پیادهسازیهای مختلف اینترفیس Map شامل HashTable ، HashMap و موارد دیگر در کتابخانههای JDK ) این نوع ساختار برای اکثر برنامهنویسان آشنا بوده و فراگیری آن نیز ساده میباشد.
در این مطلب دستهبندی کلی و نوع ساختار دادهای این سیستمها و بررسی سادهترین آنها را مرور میکنیم.
در حالت کلی پایگاهای داده NoSQL به ۴ دسته تقسیم میشوند که به ترتیب پیچیدگی ذخیرهسازی دادهها عبارتند از:
- Key/Value Store Databases
- Document Databases
- Graph Databases
- Column Family Databases
به دلیل موجود بودن این نوع ساختار دادهای در اکثر کتابخانههای زبانهای برنامهنویسی ( به عنوان مثال پیادهسازیهای مختلف اینترفیس Map شامل HashTable ، HashMap و موارد دیگر در کتابخانههای JDK ) این نوع ساختار برای اکثر برنامهنویسان آشنا بوده و فراگیری آن نیز ساده میباشد.
بدیهی است که اعمال فرهنگ دادهای ( درج ، حذف ،
جستجو ) در این سیستم به دلیل اینکه دادهها به صورت کلید/مقدار ذخیره
میشوند دارای پیچیدگی زمانی (1)O میباشد که بهینهترین حالت ممکن به لحاظ
طراحی میباشد. همانگونه که مستحضرید در الگوریتمهایی که دارای پیچیدگی
زمانی با مقدار ثابت دارند کم یا زیاد بودن دادهها تاثیری در کارایی
الگوریتم نداشته و همواره با هر حجم دادهای زمان ثابتی جهت پردازش نیاز
میباشد.
Key/Value Store Databases:
Key/Value Store Databases:
این سیستم سادهترین حالت از دستهبندیهای NoSQL میباشد ، به طور کلی
جهت استفاده در سیستمهایی است که دادهها متمایز از یکدیگر هستند و اصولا
Availability و یا در دسترس بودن دادهها نسبت به سایر موارد نظیر پایائی
اهمیت بالاتری دارد.
از موارد استفاده این گونه سیستمها به موارد زیر میتوان اشاره کرد:
هر یک از پیادهسازیها دارای ویژگیهای مربوط به خود هستند به عنوان مثال Memcached دادهها را صرفا در DRAM ذخیره میکند که نتیجهی آن Volatile بودن دادهها میباشد و به هیچ وجه از این سیستم جهت نگهداری دائمی دادهها نباید استفاده شود. از طرف دیگر Redis دادهها را علاوه بر حافظه اصلی در حافظه جانبی نیز ذخیره میکند که نتیجهی آن سرعت بالا در کنار پایائی میباشد.
همانگونه که در تعریف کلی عنوان شد یکی از ویژگیهای این سیستمها متنباز بودن انها میباشد که نتیجهی آن وجود پیادهسازیهای متنوع از هر کدام میباشد ، لازم است قبل از انتخاب هر سیستم به خوبی با ویژگیهای اکثر سیستمهای محبوب و پراستفاده آشنا شویم و با توجه به نیاز سیستم را انتخاب کنیم.
در مطلب بعدی با نوع دوم یعنی Document Databases آشنا خواهیم شد.
از موارد استفاده این گونه سیستمها به موارد زیر میتوان اشاره کرد:
- در پلتفرمهای اشتراک گذاری دادهها . هدف کلی صرفا هندل کردن
آپلود محتوی (باینری) و به صورت همزمان بروز کردن در سمت دیگر میباشد.(
اپلیکیشنی مانند اینستاگرام را تصور کنید) در اینگونه نرمافزارها با
تعداد بسیار زیاد کاربر و تقاضا، استفاده از این نوع پایگاه داده به مراتب
کارایی و سرعت را بالاتر میبرد. و با توجه به عدم پیشبینی حجم دادهها
یکی از ویژگیهای این نوع پایگاه داده تحت عنوان Horizontal Scaling مطرح
میشود که در صورت Overflow شدن سرور، دادهها را به سمت سرور دیگری
میتوان هدایت کرد وبدون مشکل پردازش را ادامه داد ، این ویژگی یک وجه
تمایز کارایی این سیستم با سیستمهای RDBMS میباشد که جهت مقابله با چنین
وضعیتی تنها راه پیشرو بالا بردن امکانات سرور میباشد و به طور کلی
دادهها را در یک سرور میتوان نگهداری کرد ( البته راهحلهایی نظیر
پارتیشن کردن و غیره وجود دارد که به مراتب پیچیدگی و کارایی کمتری نسبت به
Horizontal Scaling در پایگاههای داده NoSQL دارد.)
- برای Cache کردن صقحات بسیار کارا میباشد ، به عنوان مثال میتوان
آدرس درخواست را به عنوان Key در نظر گرفت و مقدار آن را نیز معادل JSON
نتیجه که توسط کلاینت پردازش خواهد شد قرار داد.
- یک نسخه کپی شده از توئیتر که کاملا توسط این نوع پایگاه داده پیاده شده است نیز از این آدرس
قابل مشاهده است. این برنامه به زبانهای php , ruby و java نوشته شده
است و سورس نیز در مخارن github میجود میباشد. (یک نمونه پیاده سازی
ایدهآل جهت آشنایی با نحوهی مدیریت دادهها در این نوع پایگاه داده)
هر یک از پیادهسازیها دارای ویژگیهای مربوط به خود هستند به عنوان مثال Memcached دادهها را صرفا در DRAM ذخیره میکند که نتیجهی آن Volatile بودن دادهها میباشد و به هیچ وجه از این سیستم جهت نگهداری دائمی دادهها نباید استفاده شود. از طرف دیگر Redis دادهها را علاوه بر حافظه اصلی در حافظه جانبی نیز ذخیره میکند که نتیجهی آن سرعت بالا در کنار پایائی میباشد.
همانگونه که در تعریف کلی عنوان شد یکی از ویژگیهای این سیستمها متنباز بودن انها میباشد که نتیجهی آن وجود پیادهسازیهای متنوع از هر کدام میباشد ، لازم است قبل از انتخاب هر سیستم به خوبی با ویژگیهای اکثر سیستمهای محبوب و پراستفاده آشنا شویم و با توجه به نیاز سیستم را انتخاب کنیم.
در مطلب بعدی با نوع دوم یعنی Document Databases آشنا خواهیم شد.
اگر هنگام اجرای برنامه در نگارش ASP.Net Core 2.2 با مشکل HTTP Error 500.30 - ANCM In-Process Start Failure
(ASP.NET Core Module (ANCM ارائه شده در نگارش 2.2 در دسترس نیست .
مواجه شدید تنظیمات فایل csproj را به OutOfProcess تغییر دهید .
Change this section ... <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> </PropertyGroup> to the following ... <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel> <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName> </PropertyGroup>
(ASP.NET Core Module (ANCM ارائه شده در نگارش 2.2 در دسترس نیست .