پست‌ها

نمایش پست‌ها از نوامبر, ۲۰۱۱

الگوهای ابتدایی برای برنامه نویسی دات نت

در این پست چند الگوی شاید معمولی ولی بسیار مهم لیست شده.مطلب جالبیه تنها مشکلش اینه که مثال های اون به هر زبانی هست جز #C. تو این پست معادل های دات نت ی اون لیست شده. 1-ارزیابی موجود بودن یک شی (null نبودن) قبل از فراخوانی متدها و خواص های اون تکنیکی به نام “andand” وجود داره که طی اون هنگام فراخوانی مثلا یک متد یک شی نام اون شی رو با فراخوانی متدش AND منطقی میکنیم و این باعث میشه تنها در صورتی که شی ما موجود باشه (null نباشه) متد مربوطه فراخوانی شه. به این مثال تو زبان JavaScript توجه کنید var parsed_content = window.JSON && window.JSON.parse("{}"); تا جایی که من میدونم و سرچ هم کردم چنین ویژگی تو #C موجو نیست. و اما این کار رو به روش های دیگه ی میشه انجام داد مثلا با یه IF قبلش چک کنیم شی ما null نباشه تنها مشکلش اینه که در صورتی که شی ما تو در تو باشه تعداد IF های ما زیاد میشه. const string xmlDoc = @" <opml version=""1.0""> <head> ...

مقدمه ای بر RavenDB – قسمت سوم

تصویر
در دو قسمت اول و دوم “مقدمه ای به RavenDB” به آشنایی با مقدمات RavenDB پرداختیم تو این قسمت میخواهیم با یک مثال در عمل با RavenDB آشنا بشیم. برای شروع یک پروژه ASP.NET MVC 3 رو ایجاد میکنیم. اگه از قسمت اول یادتون باشه گفتم یکی از 4 روش راه اندازی (هاست کردن) RavenDB به صورت مدفون شده یا Embed هست برای استفاده از این روش کافیه پکیج RavenDB-Embedded رو با NuGet نصب کنیم. همونطور که قبلا گفتم RavenDB به صورت schema-less هست ازاینرو برای کار با بانک نیاز نیست شما بانک و جدولی رو از قبل بسازید (کاری که با بانک های Embedded دیگه مثله SQL Server Compact انجام میدیم) تنها پس از اولین فراخوانی متد initialize شی DocumentStore ما فایل های مربوطه (همان بانک RavenDB) ساخته میشه. برای ذخیره بانک ما از پوشه استاندارد App_Data استفاده میکنیم. در طول چرخه حیاط یک برنامه بایستی یکه وهله از بانک در دسترس باشه ازاینرو از الگوی Singleton استفاده میکنیم. public class DataDocumentStore { private static IDocumentStore _instance; public static IDocumentStore Instance { get ...

مقدمه ای بر RavenDB – قسمت دوم

تصویر
در پست قبلی با استفاده از Management Studio دیتای تستی ساختیم. حالا یه شرح مختصری از سند و مجموعه سند ( document ) چیست؟ سند در واقع یک شی JSON هست و معادل یک ردیف (رکورد) تو بانک های رابطه ای RDBMS محسوب میشه برای آشنایی بیشتر با ساختار سند روی یکی از سند های ایجاد شده کلیک و دکمه Edit رو بزنید. همونطور که تو شکل میبینید یکه سند شامل یک کلید , دیتا و متا دیتا هست. کلید (تو این شکل albums/20) رو میشه با PK یا کلید اصلی تو بانک های رابطه ای RDBMS قیاس کرد. دیتا در واقع کل شی(در اینجا آلبوم) شما در فرمت JSON هستش. متا دیتا هم بصورت اتومات ایجاد میشه مثلا در این شکل Raven-Clr-Type یکه شی دات نت ی هست که به سند ما مپ شده. Raven برای اختصاص کلید به هر سند از روش guid ترتیبی (sequential guid) استفاده میکنه که هم بصورت جهانی یکتا هست و هم با توجه به ترتیبی بودن به خوبی ایندکس میشه البته توجه کنید برای اختصاص کلید به یک سند میشه کلید رو به صورت صریح مشخص کرد و هم کلید رو به صورت Identity key اختصاص داد.خود Raven بصورت داخلی از Identity key پشتیبانی میکنه(تو پست های بع...

مقدمه ای بر RavenDB – قسمت اول

تصویر
بانک اطلاعاتی RavenDB یک بانک اطلاعاتی سندگرا ی متن باز برای پلتفرم دات نت / ویندوز هست که هر سند رو تو فرمت JSON ذخیره میکنه.تو بانک اطلاعاتی سندگرا هر موجودیت (Entity) میتونه بعنوان یک سند ذخیره بشه. این بانک ها اصطلاحا schema-less هستن یعنی نیازی نیست شما برای ذخیره کردن موجودیت مورد نظرت (مثلا کالا) بری اسکیمای اونو تو بانکت تعریف کنی کاری که ما تو RDBMS ها انجام میدیم و برای مثلا کالا جدولی شامل شماره کالا , نام کالا ,نوع کالا و… تعریف میکنیم. RavenDB جزء بانک های NoSQL است. NoSQL چیست؟ برای تعریف NoSQL، من فکر می کنم بهتره از این حیث بررسی کنیم که NoSQL چه چیزی نیست؟ یعنی یه جورایی از فرض خلف به مفهومش برسیم. این تکنولوژی، SQL نیست و بصورت رابطه ای هم نیست. همانطور که از نامش پیداست جایگزینی برای مدیریت بانک های اطلاعاتی رابطه ای (RDBMS)  هم نیست، اما آنرا پیاده سازی می کند! NoSQL برای ذخیره سازی داده ها بصورت توزیع شده، جایی که حجم داده های ما در مقیاس بالا باشد، وارد میدان می شود … استفاده از بانک اطلاعاتی RavenDB چه منفعتی برای ما داره؟ کارایی به...