پول ویندوز را بدهیم یا ندهیم؟

مدت‌هاست که می‌خواهم تکلیف خودم را با مجموعه محصولات مایکروسافت و دات‌نت مشخص کنم. یا باید اخلاق را بدون داشتن هیچ دلیل محکمی زیر پا بگذارم و بی‌خیال همه چیز از تمام محصولات مایکروسافت استفاده کنم. یا باید به لینوکس و ابزارهای توسعه‌ای مثل مونو سویچ کنم. یا هزینه‌های احتمالاً خیلی سنگین خرید ویندوز، ویژوال استودیو و غیره را پرداخت کرده و در دنیای ویندوز باقی بمانم.

قبل از ادامه باید به دو نکته توجه کرد. یکی این که موضوع انتخاب بین ویندوز و لینوکس یا بحث‌های open source و غیره نیست. من ویندوز را دوست دارم و می‌خواهم روی آن ادامه دهم. مشکل در اینجا فقط گران بودن و مشکلات تحریم است. نکته دوم این که همه این بحث‌ها وقتی که شما انفرادی کار می‌کنید خیلی اهمیتی ندارد. چون اکثر laptopها شامل یک ویندوز اصلی هم هستند و اگر صاحب آن برنامه‌نویس ویژوال استودیو نباشد، بدون نیاز به هزینه زیادی، Copyright را رعایت کرده است. بحث بر شرکت‌های کوچک و متوسطی است که می‌خواهند به نوعی این مشکل را حل کنند.

راه اول: کنار گذاشتن اخلاق و استفاده غیر قانونی از محصولات مایکروسافت

تا زمانی که دلیل محکمی برای عدم رعایت کپی‌رایت وجود نداشته باشد نباید این کار را کرد. به قول معروف آنچه برای خود نمی‌پسندی برای دیگران هم نپسند. اگر دوست ندارید محصولات نرم‌افزاری شرکت شما حاصل سرمایه‌گذاری و تلاش فراوانی است بدون پرداخت هزینه استفاده شود پس خود شما هم نباید این کار را با محصولات دیگران انجام دهید.

راه دوم: سویچ به لینوکس و ابزارهای توسعه‌ای مثل مونو:
اگر کمی عقلانی فکر کنیم هزینه‌های این راه خیلی خیلی زیاد است. باید سال‌ها تجربه و آشنایی با محصولات مایکروسافت و ویژوال استودیو را کنار گذاشت. علاوه بر این مشتری‌های ما ویندوزی هستند. توسعه نرم‌افزارهایی تحت ویندوز داخل محیط لینوکس کار خیلی سختی است. ضمناً فراموش نکنید که شما یک شرکت هستید که چندین برنامه‌نویس در آن مشغول به کارند. اگر به لینوکس مهاجرت کنید هم باید برنامه‌نویس‌های فعلی را متقاعد کنید که به لینوکس سویچ کنند و هم  این که در استخدام‌های بعدی باید به دنبال معدود برنامه‌نویسانی باشید که بتوانند در محیط شما کار کنند. مثلاً مونو کار باشند.

راه سوم: پرداخت کامل هزینه لایسنس ویندوز و بقیه محصولات:
اول باید ببینیم هزینه استفاده از محصولات قانونی چقدر است و آیا از عهده ما بر می‌آید یا نه. از آنجا که خیلی از شرکت‌ها و برنامه‌نویس‌ها از تمام امکانات محصولات مایکروسافت استفاده نمی‌کنند و از آنجا که فعلاً می‌خواهیم با کمی صرفه جویی کارمان را شروع کنیم، از هزینه خرید ویندوز سرور چشم پوشی کرده و به جای آن از ویندوز ۷ استفاده می‌کنیم. در مورد Visual Studio و MS SQL هم سعی می‌کنیم کارمان را با نسخه‌های express یا محصولات رایگان دیگر مثل MySql یا SharpDevelop راه بیندازیم. پس تنها چیزی که ما می‌خواهیم خرید چند نسخه ویندوز است. فرض کنید شرکتی ۱۰ کارمند دارد و ۱۲ تا کامپیوتر. اگر قیمت هر نسخه از ویندوز (یک ویرایش متوسط) را ۱۵۰ هزار تومان فرض کنیم، پول لایسنس‌هایمان یک میلیون و هشت صد هزار تومان می‌شود. اگر این هزینه را با دیگر هزینه‌های شرکت‌داری مثل اجاره دفتر که ممکن است تا چند میلیون تومان در ماه برسد مقایسه کنیم، خواهیم دید که پرداخت این مبلغ آنقدر سخت نیست که بخواهیم به خاطر آن به لینوکس مهاجرت کرده یا از زیر آن در برویم. البته طرح‌های رایگانی مثل BizSpark هم هستند ولی نمی‌شود در ایران از آنها استفاده کرد.

به این نکته توجه کنید که بعضی از دوستان اظهار می‌دارند که آنها می‌توانند و دوست دارند هزینه ویندوز را پرداخت نمایند اما مایکروسافت اسم ایران را از لیست کشورهایش حذف کرده. علاوه بر این حتی اگر این پول را به نحوی پرداخت کنیم ممکن است به خاطر تحت تحریم بودن نتوانیم از هیچ کدام از حمایت‌ها و امکانات حاصله از خرید قانونی استفاده کنیم. نمی‌دانم صحت و سقم این صحبت‌ها چقدر است. ولی اگر درست باشد متاسفانه می‌تواند دلیل محکمی برای ادامه راه حل غیر اخلاقی شماره یک و بی‌خیال CopyRight شدن باشد.

ترس و گیجی تکنولوژیک

کنفرانس BUILD مایکروسافت در کنار همه اخبار داغ و هیجان انگیزی که راجع به ویندوز ۸ داشت، مثل هر خبر تکنولوژیک (کامپیوتر/نرم‌افزار) دیگری همراه بود با یک ترس قدیمی از رو آمدن چیزهای جدیدی که مجبوریم برای ماندن در دنیای برنامه‌نویسی دیر یا زود آنها را یاد گرفته و با آنها کار کنیم. البته منظور از ترس نه این که از یاد گرفتن چیزهای جدید متنفر و فراری باشیم. بلکه نگرانی از وقتی است که باید مجدداً گذاشته شده و تجربیات قبلی (نه کل آنها) است که باید فراموش شوند. همیشه با تغییر عمده تکنولوژی‌های نرم‌افزاری این نگرانی وجود دارد که این بار نتوانیم خودمان را به موقع برسانیم و عنان کار را از دست دهیم.

در کنار این ترس یک گیجی بدی هم وجود دارد. این گیجی ناشی از آن است که نمی‌دانیم آن چیزهای جدید چه هستند. ناشی از آن است که مدام اخبار ضد و نقیضی راجع به آنها می‌شنویم. مثلاً این که هنوز نمی‌دانیم Windows Phone 7 چه نقش و سهمی در دنیای موبایل‌ها دارند که به یک باره سر و کله ویندوز ۸ هم پیدا شده و او هم ادعا می‌کند قرار است دنیای موبایل‌ها و تبلت‌ها را کن فیکون کند. حال ما نمی‌دانیم قرار است ویندوز ۸ جایگزین WP7 باشد یا دو چیز جدا هستند و اگر قرار باشد ویندوز ۸ جایگزین WP7 باشد پس چرا فاصله انتشار این دو این قدر کم است؟

‫دسترسی قانونی و تقریباً رایگان به MSDN با استفاده از BizSpark

آقای نصیری مطلب مفیدی تحت عنوان «هزينه استفاده از دات نت فريم ورك چقدر است؟» نوشته بود که اتفاقاً خیلی هم کامنت دار شد و کامنت‌های مفیدی هم داشت. در یکی از کامنت‌های آخر، آقای نصیری اشاره کرده بود به طرحی از طرف مایکروسافت به اسم BizSpark مبنی بر این که شرکت‌های تازه کار (startup) می‌توانند با استفاده از این طرح به مدت سه سال مشترک MSDN (شامل ویژوال استودیو و ویندوز و…) شده و در آخر دوره سه ساله فقط ۱۰۰ دلار بپردازند. خیلی کنجکاو شدم و سری به سایت طرح زدم.

خبر را واقعاً درست خوانده بودم. مایکروسافت سری محصولات MSDN خود را تقریباً به طور رایگان به شرکت‌هایی که در سه سال اول تاسیس باشند، درآمدی کمتر از یک میلیون دلار در سال داشته باشند و به صورت خصوصی اداره شوند ارائه می‌دهد (+). البته مایکروسافت چند شرط کوچک دیگر هم دارد از جمله این که شما از این محصولات فقط برای برنامه‌نویسی استفاده کنی و مثلاً برای راه اندازی یک شرکت web hosting از آنها استفاده نکنی. چرا مایکروسافت چنین تخفیف بزرگی می‌دهد؟ چون مایکروسافت معتقد است همین شرکت‌های کوچک بعداً به مشتریانی بزرگ برای او تبدیل خواهند شد (+). ظاهراً مایکروسافت این امکان را برای شرکت‌های عضو این طرح فراهم می‌کند که بتوانند به نوعی از بازار کار مایکروسافت کار بگیرند. نکته جالب ولی همیشگی در مورد این طرح این است که اسم کشور ایران در فهرست کشورها در صفحه ثبت نام وجود ندارد. به عکس زیر توجه کنید:


جهت کسب اطلاعات بیشتر به این لینک هم نگاهی بیندازید.

‫ALT.NET و MSDN Way‫

از زمانی که با NHibernate آشنا شدم متوجه یک جبهه جالب در دنیای دات‌نت شدم. جبهه کسانی که علاقه زیادی به port کردن پروژه‌های معروف جاوا به دات‌نت، استفاده از design patternهای شی‌گرایی و دنیای Open Source داشتند. نمونه بارز این جبهه خود NHibernate است. پروژه‌ای کاملاً open source برای تزریق OOP به کدهای دسترسی به دیتابیس بر اساس پروژه جاوایی Hibernate.

چند وقت پیش حین خواندن کتاب Foundation of Programming متوجه شدم که اسم این جبهه ALT.NET است. علایق این جبهه علاوه بر موارد بالا شامل unit test و CI و دیگر موارد مشابه هم می‌شود. طرفداران ALT.NET در عین حالی که روی سکوی دات‌نت متمرکز هستند از مایکروسافت و روش‌های مایکروسافتی گریزان هستند. آنها سعی می‌کنند برای هر تکنولوژی و ابزار مایکروسافتی، یک جایگزین open source ارائه دهند.

در مقابل ALT.NET روش MSDN Way قرار دارد. در روش MSDN Way عمده تمرکز افراد بر استفاده از APIهای تکنولوژی‌های مختلف دات‌نت است. کدهای برنامه‌نویسان MSDN Way شباهت زیادی به نمونه‌های معرفی شده توسط مایکروسافت در MSDN دارد. اصلاً اسم MSDN از همین جا آمده. یکی از نشانه‌های گروه MSDN استفاده از DataSet به جای ORMهاست.

برای کسب اطلاعات بیشتر به فصل اول کتاب Foundation of Programming مراجعه نمایید.

شما خودتان را بیشتر از پیروان ALT.NET می‌دانید یا MSDN Way؟

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

Novell Mono رسماً تعطیل شد. Attachmate هیچ ابراز علاقه‌ای به نگهداری مونو نکرده است. اما مطابق رسم Open Source، یک انشعاب (fork) جدید در راه است. Miguel de Icaza بنیان گذار مونو یک شرکت جدید به نام زامارین (Xamarin) تاسیس کرده است.

زامارین هم مثل مونوی ناول تمرکزش روی پیشنهادات تجاری ‎.NET برای iOS و Android است. آنها قاعدتاً در runtimeهای open source مونو شراکت خواهند داشت، چیزی که پایه تکنولوژیک سرمایه‌گذاری‌های آنها خواهد بود.

زامارین به کامپوننت‌های غیر open sourceی MonoTouch و Mono for Android دسترسی ندارد. در حالی که به نظر می‌رسد سرعت تیم به اندازه کافی زیاد نباشد، ولی میگوئل مدعی‌ست تیم آنها نخستین نسخه iPhone را در سه ماه و Android را در چهار ماه آینده منتشر خواهند کرد.

مسائل قانونی در زامارین

میگوئل اظهار داشته است محصولات جدید آنها از لحاظ سورس با کدهای Mono و MonoTouch برای Android سازگار خواهد بود. به همین خاطر Attachmate ممکن است از لحاظ قانونی با آنها مشکل پیدا کند. همیشه به نظر می‌رسید مونو مورد ادعای قانونی مایکروسافت قرار بگیرد، اما چون حق اختراع CLR/C#‎ غیر الزام آور است و با توجه به تعهدات موجود نسبت به ECMA، این کار امکان‌پذیر نخواهد بود.

داستان در مورد Attachmate کاملاً متفاوت است. آنها حتی اگر حمایتی هم انجام ندهند باز هم صاحب محصولی هستند که مستقیماً با محصولات زامارین در رقابت است. اگر هیچ توافق قانونی بین Attachmate و زامارین انجام نشود، احتمالا دعوای آنها بر سر این که آیا کدهای جدید از تکنولوژی‌های قدیمی مونو استفاده کرده یا نه وجود دارد. با توجه به این که کل موضوع یک wrapper برای یک API مادرزاد (native) است، اثبات این که شما همه چیز را از نو پیاده‌سازی کرده‌اید، حتی با وجود تیمی که با کدهای Attachmate آشنایی قبلی ندارد کار سختی است.

در نتیجه مثل اوایل پیدایش هر محصول جدیدی، بعضی برنامه‌نویسان در انجمن‌های mono-android اعلام کرده‌اند فعلاً به جاوا بازخواهند گشت. تعدادی هم معتقدند هزینه تبدیل برنامه‌ها به جاوا و نگهداری هم زمان دو مجموعه کد برای آنها غیر ممکن است.

تاسیس شرکت جدید

تاسیس شرکتی که به طور اختصاصی روی محصولات وابسته به مونو کار کند ایده چندان جدیدی نیست. بر اساس صحبت‌های میگوئل، آنها سال گذشته هم سعی داشتند ناول را متقاعد کنند که شرکت مستقلی برای این کار تاسیس کنند. در حالی که این قضیه هیچ وقت به نتیجه نرسید، اما نشان می‌دهد که آنها به دنبال سرمایه گذاران ریسک پذیر و قراردادهای مهندسی بوده‌اند تا شرکت را تا رسیدن به سوددهی همراهی کنند.

گفته می‌شود زامارین هنوز هم دنبال سرمایه‌گذارهای بیشتری است تا بتواند کارهایی از قبیل کارهای زیر را انجام دهد:
* راهنما برای طیف وسیع برنامه‌نویس‌ها
* مستند سازی APIهای خاص مونو
* نرم‌افزار اختصاصی پشتیبانی از مشتری
* به روز رسانی سیستم باگ فعلی
* آموزش
* مشاوره و پشتیبانی
* بازاریابی: سکوی توسعه‌ی خیلی خوبی موجود است. اما نیاز هست که دنیا این را بداند. بودجه بازاریابی قبلی نزدیک به صفر بوده.

مسائل قانونی Attachmate

سوالات زیادی در مورد این که Attachmate چطور دست از مونو خواهد کشید وجود دارد. مونوی ناول قراردادهای پشتیبانی زیادی دارد که نیاز به رسیدگی دارند. این موضوع فقط در مورد قراردادهای قدیمی نیست بلکه ناول هنوز هم در حال فروش قراردادهای پشتیبانی یک ساله هم برای MonoTouch و هم برای مونوی Android است در حالی که هیچ developerی برای آن محصولات ندارد. اگر این وضعیت ادامه پیدا کند حالت بدی به وجود خواهد آمد.

توجه:
این متن ترجمه مطلب مربوطه در InfoQ است.

بی‌اطمینانی به مایکروسافت

سال‌های سال است که با محصولات مایکروسافت کار می‌کنم. دقیقاً از داس ۵ به این طرف. البته هیچ وقت هم با این موضوع مشکل خاصی نداشتم. هر وقت مایکروسافت داس را کنار می‌گذاشت و ویندوز را رو می‌کرد ما هم سراغ ویندوز می‌رفتیم، هر وقت ASP Classic را دور می‌انداخت ما هم همین کار را می‌کردیم و سراغ ASP.NET می‌رفتیم. خلاصه این که هر وقت مایکروسافت یکی از فناوری‌هایش را با فناوری جدیدتری جایگزین می‌کرد ما هم بدون هیچ اعتراضی همین کار را می‌کردیم. این تند تند عوض شدن فناوری را هم می‌گذاشتیم به حساب این که در دنیای کامپیوتر همه چیز تند تند عوض می‌شود و این ماییم که باید خودمان را با این موضوع تطبیق دهیم.

اما از وقتی که با NHibernate آشنا شدم و روال کار آن را با LINQ-to-SQL و Entity Framework مقایسه کردم دیدم که یک جای کار می‌لنگد. NHibernate با احستاب سوابق جاوایی‌اش چندین سال است که به خوبی کار کرده و خیلی کم دچار تغییرات شدید شده است. کلیاتی که از NHibernate یاد گرفته‌ام هنوز همان است و مجبور نشده‌ام به جز LINQ-to-NHibernate که یک افزونه جدید حساب می‌شود نه یک تغییر، چیز اساسی یاد بگیرم. اما کسانی که ORM را با مایکروسافت شروع کرده‌اند مثل من راحت نبوده‌اند. چون اول وقت زیادی روی LINQ-to-SQL گذاشتند ولی بعد از مدت کوتاهی به آنها اعلام شد که LINQ-to-SQL دیگر توسعه داده نخواهد شد و به جای آن باید از Entity Framework استفاده کنند. این یعنی چیزی را که یاد گرفته و به آن عادت کرده‌اید را باید به طور کامل دور ریخته و فناوری جدیدتری را با صرف کلی وقت یاد بگیرید.

مشابه این مسئله را در SourceSafe و جایگزینی آن با TFS هم دیده‌ام. کسانی که با SourceSafe کار می‌کردند مجبور شدند آن را با TFS عوض کنند. اما کسانی که از همان اول با SVN کار می‌کردند هیچ وقت دچار همچین اجباری نشدند. حدس می‌زنم همین مسئله را در مورد Web Serviceها از یک سو و ‎.Net Remoting و WCF از دیگر سو داشته باشیم.

مجموع این قضایا باعث شده که اطمینان‌ام را به مایکروسافت از دست بدهم و سعی کنم همیشه جایگزین‌های غیر مایکروسافتی را انتخاب کنم. این طوری دیگر مجبور نیستم تند تند چیزهای جدید یاد بگیرم. به بقیه همکارانم هم توصیه می‌کنم به این مسئله خوب فکر کنند. توجه شود همه این صحبت‌ها بدون توجه به مسائل اخلاقی و Copyright هستند که خود بحث جداگانه‌ای را می‌طلبد.

پادکست‌های اسکات هنزلمن

یکی از راه‌های به روز ماندن در دنیای تکنولوژی دنبال کردن وبلاگ‌ها و آدم‌های مطرح در حوزه مورد علاقه است. یکی از این آدم‌ها در حوزه برنامه‌نویسی و توسعه نرم‌افزار «اسکات هنزلمن» است. اسکات هنزلمن یکی از کارمندان مایکروسافت است که تقریباً به عنوان روابط عمومی، سخنگو و کارمند رسانه‌ای مایکروسافت در بخش توسعه نرم‌افزار، دات‌نت و ویژوال استودیو عمل می‌کند. بخش عمده‌ای از مطالب وبلاگ اسکات اختصاص دارد به مصاحبه‌ها و دید و بازدیدهایش با افراد و تیم‌های معروف دنیای توسعه نرم‌افزار. درست از همین مصاحبه‌هاست که می‌توان گرایشات روز نرم‌افزار، تکنولوژی‌ها و اخبار جدید را دریافت. البته نه همه آنها را. اسکات بیشتر مطالبش را به صورت پادکست و بعضی از آنها را به صورت ویدیو منتشر می‌کند. با این که مطالب پادکست به زبان انگلیسی بوده و تند تند حرف زدن اسکات باعث شده فهم آنها برای مخاطب فارسی‌زبان سخت‌تر شده باشد، اما خوشبختانه با هر پادکست جدید یک فایل PDF حاوی متن پیاده شده پادکست هم وجود دارد. البته این PDF معمولاً یک هفته بعد از انتشار پادکست منتشر می‌شود.

تعدادی از پادکست‌های جالب اسکات:
۱- Learning about NHibernate 3 with Jason Dentler : فایل صوتی پادکست، فایل PDF

۲- Geek Relationship Tips with Scott’s Wife : فایل صوتی پادکست، فایل PDF

۳- Aspect Oriented Programming (AOP) and LinFu with Philip Laureano : فایل صوتی پادکست، فایل PDF

۴- Jeff Atwood on the Future of Stack Overflow : فایل صوتی پادکست، فایل PDF

۵- John Lam and the Science of Fitness : فایل صوتی پادکست، فایل PDF

۶- Women in Technology in the Muslim World : فایل صوتی پادکست، فایل PDF

۷- Jon Skeet – World’s Greatest Living Programmer, or just a nice English guy?‎ : فایل صوتی پادکست، فایل PDF

۸- Hello World: Computer Programming for Kids and Other Beginners : فایل صوتی پادکست، فایل PDF

۹- Spolsky, Atwood, Blyth, Hanselman = Crazy-Delicious || Content-Free?‎ : فایل صوتی پادکست، فایل PDF

۱۰- The Art of Unit Testing with Roy Osherove : فایل صوتی پادکست، فایل PDF

وبلاگ «اسکات هنزلمن»
بایگانی پادکست‌های «اسکات هنزلمن»

‫سوء تفاهم با WF

WF یا همان Window Workflow Foundation فناوری جدیدی است که مایکروسافت از نسخه 3.0 به دات‌نت اضافه کرده و در نسخه 4.0 حسابی به آن رسیده است. ظاهراً این فناوری برای مایکروسافت خیلی با ارزش است چون سعی دارد این فناوری را مدام توسعه داده و از آن در جاهای مختلف استفاده کند. مثلاً مایکروسافت در TFS 2010 در کنار MSBuild از یک لایه اضافی برای راحت‌تر کردن و توسعه امکانات Team Build استفاده کرده که در این لایه از WF 4.0 استفاده شده.

از اولین باری که اسم Windows Workflow را شنیدم فکر می‌کردم قرار است از این تکنولوژی برای راحت‌تر کردن پیاده‌سازی Workflowهای معمول سازمان‌ها استفاده شود. حتی در شرکت قبلی این نقشه را داشتم که از WF برای پیاده‌سازی Workflow در شرکت مشتری استفاده کنم. اما زهی خیال باطل. چون به تازگی به خاطر نیازی که در Team Build 2010 به Workflow پیدا کردم متوجه شدم WF برای آن کار مناسب نبوده است. برای درک بهتر موضوع می‌توان Workflowها را به دو نوع اداری و برنامه‌ای تقسیم کرد:

Workflow اداری: منظور روش انجام کار در ادارات و سازمان‌هاست. وقتی که شما به یک اداره رفته و درخواستی را به کارمند «الف» ارائه می‌دهید یک Workflow را شروع کرده‌اید. این درخواست مثلاً می‌تواند به کارمند «ب» رفته و همین طور در آن اداره در اثر شرایط و ترتیب معین بین افراد مختلف گردش کرده تا نهایتاً به یک حالت خاص برسد. خیلی از نرم‌افزارهای معمول اداری چنین امکانی را پیاده‌سازی کرده و به کاربر اجازه می‌دهند Workflow دلخواه خودش را تعریف و در سیستم استفاده کند. این نرم‌افزارها معمولاً از هیچ فناوری خیلی خاصی به جز امکانات معمول platform توسعه نرم‌افزار استفاده نمی‌کنند.

WorkFlow برنامه‌ای: Workflow را در سطح یک نرم‌افزار تشریح می‌کند. به عنوان یک مثال خیلی ساده، فرض کنید بخشی از یک نرم‌افزار شامل استخراج رکورد خاصی از اطلاعات، تصمیم گیری بر اساس اطلاعات موجود در آن رکورد، ارسال ایمیل، نمایش پیغام و بعضی کارهای دیگر بر اساس آن تصمیم‌گیری باشد. روال توضیح داده شده در اینجا را می‌توان به صورت یک Workflow چند بخشی بیان کرد.

Windows Workflow Foundation یا WF برای پشتیبانی از Workflow برنامه‌ای ایجاد شده است. WF کمک می‌کند که هر کدام از تکه‌های خیلی بزرگ نرم‌افزار به یک Activity تبدیل شود. این تکه‌ها بعداً در قالب یک Workflow با هم ارتباط پیدا می‌کنند. نهایتاً این Workflow در جایی host شده و توسط WF Runtime شروع به اجرا می‌کند. WF مدعیست به برنامه‌نویسان امکان می‌دهد تا بخش‌ها مختلف Workflow به طور موازی و در کامپیوترهای مختلف به اجرا درآورند. در واقع شعار WF نوشتن برنامه‌های بزرگی است که به راحتی برنامه‌های کوچک قابل توسعه و نگهداری هستند.

اما چرا نمی‌توان یک Workflow اداری را با کمک WF پیاده سازی کرد؟ چون به نظز من یک Workflow اداری اولاً تشکیل شده از قطعاتی از اطلاعات نه قطعاتی از نرم‌افزار، ثانیاً نباید از کاربر اداری توقع داشت برای تعریف Workflow از ویژوال استودیو و XAML استفاده کند، ثالثاً استفاده از WF نیاز به Build مجدد نرم‌افزار دارد که این امکان در محیط کاربر اداری فراهم نیست، رابعاً WF ابزار بیش از حد بزرگی برای انجام این کار است. انجام این کار با WF مثل این است که برای بلند کردن یک دوچرخه معمولی از یک جرثقیل چند ده تنی استفاده شود.

‫امتحان ‭۷۰-۵۳۶‬

مایکروسافت مجموعه‌ای از مدارک حرفه‌ای را برای توسعه دهندگان (برنامه‌نویسان) تدارک دیده است. این مجموعه شامل سه مدرک MCPD، شش مدرک MCTS و چندین Exam است. برای دریافت هر TS نیاز به گذراندن یک یا چند «امتحان» و برای دریافت هر PD نیاز به داشتن تعداد معینی TS است. به عبارت دیگر هر TS یا PD به این معنی است که شما امتحان‌های معینی را با حد نصاب قبولی گذرانده‌اید.
در این بین یک امتحان اصلی وجود دارد که گذراندن آن برای دریافت هر یک از TSها و در نتیجه هر یک از PDها اجباری است. این امتحان که «امتحان ‭۷۰-۵۳۶‬» یا Exam 70-536 نام دارد به مثابه دروس دانشگاهیی پیش نیاز همه مدارک برنامه‌نویسی مایکروسافت است. امتحان ‭۷۰-۵۳۶‬ یا همان «چارچوب دات‌نت مایکروسافت: اصول پایه توسعه برنامه‌ها» (TS: Microsoft .NET Framework Application Development Foundation)، همان طور که از اسمش پیداست به بررسی مهارت‌های شخص در اصول برنامه‌نویسی دات‌نت می‌پردازد. دانستن این اصول و مهارت‌ها برای کلیه برنامه‌نویس‌های دات‌نت در هر سطح و هر سکویی مورد نیاز است، خواه برنامه‌نویس مذکور صرفاً ASP.NET کار کند یا ADO.NET یا هر چیز دیگر. هر چند که بسیاری از برنامه‌نویسان شاغل در شرکت‌های ایرانی فاقد بخش قابل توجهی از مهارت‌های ذکر شده در این امتحان هستند اما به هر حال گذراندن این امتحان برای همه برنامه‌نویسان دات‌نت امری ضروری و مفید است. در پایان خلاصه‌ای از مهارت‌های مد نظر این امتحان را با هم مرور می‌کنیم:
۱- مهارت در استفاده از: کلاس‌ها – Collection – Generic – Exception – Interface – Event – Delegate (معادل ۱۵ درصد حجم سوالات)۲- Threading – Service – Application Domain (معادل ۱۱ درصد حجم سوالات)
۳- کار با فایل‌های config و APIهای مربوطه – مسائل مربوط به deployment و ساختن برنامه Install – logging (معادل ۱۴ درصد حجم سوالات)
۴- serialization/deserialization – کار با فایل و stream (معادل ۱۸ درصد حجم سوالات)
۵- مسائل امنیت در برنامه‌های دات‌نتی، کلاس SecurityManager – FileSystemSecurity – SemaphoreSecurity – DES – SHA1 (معادل ۲۰ درصد حجم سوالات)
۶- استغاده از COM – ساخت COM در دات‌نت – Reflection – Mailing – استفاده از dllهای غیر دات‌نتی و غیر COM (معادل ۱۱ درصد حجم سوالات)
۷- Globalization – Culture – Drawing – کار با Text و Regex (معادل ۱۱ درصد حجم مطالب)

مطالب مرتبط:
امتحان ‭۷۰-۵۳۶‬ در سایت Microsoft Learning
وبلاگ حاجلو: راهنمای جامع دوره‌های برنامه‌نویسی Framework 3.5 مایکروسافت