تبیان، دستیار زندگی
بخواهید یا نخواهید شما در عصر رنسانس دنیای الكترونیك و IT قرار دارید و بلا شك باید نظاره گر تغییراتی باشید كه بزرگان درهء سیلیكون و لژ نشینان ردموند منشاء آن هستند . لانگهورن دقیقا" چیست ؟ آیا باید به عنوان یك برنامه نویس در...
بازدید :
زمان تقریبی مطالعه :

معماری لانگهورن

بخواهید یا نخواهید شما در عصر رنسانس دنیای الكترونیك و IT قرار دارید و بلا شك باید نظاره گر تغییراتی باشید كه بزرگان درهء سیلیكون و لژ نشینان ردموند منشاء آن هستند .



لانگهورن دقیقا" چیست ؟ آیا باید به عنوان یك برنامه نویس در مورد لانگهورن و فلسفهء آن نگران باشم ؟ آیا لانگهورن فناوری جدید مایكروسافت است یا به عقیدهء متعصبان دنیای سورس آزاد " یك تقلید دیگر" است ؟ و دست آخر آیا لانگهورن تغییر و تحول اساسی در ادبیات توسعهء نرم افزار خواهد گذاشت ؟

سعی میكنم در این نوشتار ضمن پاسخ به این سوالات فناوریهای دیگری كه به آیندهء توسعهء نرم افزار مربوط اند را معرفی كنم و امیدوارم این نوشته برایتان مفید باشد .

1.تولید یك سیستم عامل جدید كار بزرگ و هزینه بری است كه هنوز برای مایكروسافت توجیه اقتصادی ندارد



از شواهد و قوائن چنین پیداست كه لانگهورن ، مانند ویندوزهای اكس پی و 2003 سرور همچنان بر فراز هسته و SubSystem های اصلی NT كار خواهد كرد . همچنان HAL ( یا Hardware Abstraction Layer ) مسئول تراكنش های سطح پائین با سخت افزار است ( ویندوز روی خانوادهء پردازنده های اینتل و آلفا و DEC ، كار میكند اما تمام ویندوز برای این معماری های متفاوت بازنویسی نشده است ، بلكه یك سطح بسیار شفاف بنام HAL آنچه برای ارتباط با سخت افزار لازم است را محصور مینماید و ویندوز با HAL ارتباط برقرار میكند ) كرنل و Device Driver های سطح كرنل ( Kernel Mode ) كه همگی از كدهای ویندوز NT بازسازی شده اند برفراز HAL قرار دارند و سرویسهای اصلی سیستم ، یعنی سیستم فایل ( NTFS ) ، لایه های برقراری ارتباطات شبكه ای ( مانند TCP/IP Stack ) ، ابزارهای نمایش بصری اجزاء ( مانند GDI و GDI+ ) و ... همگی همچنان سرجای خود هستند ولی بعد از این هر چه برای معماری لانگهورن در نظر گرفته شده است ، برای سیستم عامل ویندوز، جدید است و البته مفهوم این عبارت این نیست كه تمام این افزونه ها جدیدا" خلق شده اند . لانگهورن بصورت درونی دارای dot NET Framework است و بسیاری از اجزاء سطح بالای لانگهورن نیز مبتنی بر كتابخانه های كلاس دات نت هستند . به عنوان مثال اگر پیش از "رابط كاربری" ویندوز مبتنی بر user32.dll یا gdi.dll بود ، بعد از این "رابط كاربری" ویندوز مبتنی بر كتابخانهء كلاس مدیریت شدهء دات نت خواهد بود و اصطلاحا" به آن Avalon میگویند ، دسترسی به سیستم فایل نیز مبتنی بر دات نت خواهد بود كه اصطلاحا" به آن WinFS میگویند و تمام Win32 API ها یك محصور كنندهء شیء گرا بنام WinFX خواهند داشت .

2.مدل برنامه نویسی در لانگهورن با آنچه تا كنون دیده ام متفاوت خواهد بود



مایكروسافت به پنهان سازی سطوح پائین پیاده سازی و ارتباط با سیستم عامل و قرار دادن رابطهائی سهل و ساده برای توسعهء نرم افزار علاقه مند شده است كه بروز و ظهور آن را در لانگهورن خواهیم دید . Win32 API و subsystem هائی مثل سرویسهای شبكه ای همچنان در دسترس هستند . دات نت هم هست و همگی آن را میشناسیم اما قرار نیست روند استاندارد توصیه شده توسط مایكروسافت با آنچه تا كنون متداول بوده است سازگار باشد بلكه مایكروسافت به شما پیشنهاد میكند از WinFX برای ارتباط و سرویس گیری از سیستم عامل استفاده كنید ، آنجا كه مستقیما" به قابلیتهای مخصوص ویندوز نیاز دارید ، و از Avalon و Areo برای توسعهء رابطهای كاربری استفاده كنید ، از WinFS برای ارتباط با سیستم فایل و از Indigo برای ارتباطات شبكه ای و میان پردازه ای ( همان IPC سابق ) . برخی از این كتابخانه های كلاس مبتنی بر دات نت هستند و برخی ( مانند بخشی از WinFS ) مبتنی بر دات نت نیستند ! یعنی كسانیكه بصورت جدی به لانگهورن مهاجرت میكنند یا برنامه نویسانی كه كار خود را با لانگهورن آغار میكنند احتمالا" حتی نیازی به دات نت نخواهند داشت ! آنها بدون اینكه بدانند در اغلب موارد از دات نت استفاده میكنند . مثلا" وقتی كه در حال ساخت یك رابط كاربری ساده برای تقویم یا دفتر تلفن خود هستند . آنها از Visual Studio 2006 و كتابخانهء Avalon استفاده میكنند كه این دو ، خود ، بر فراز دات نت ساخته شده اند یا وقتی قرار است اطلاعاتی را در یك فایل ذخیره كنند از WinFS استفاده میكنند ، كه بخش قابل توجهی از ان مبتنی بر دات نت است و هر گاه بخواهند برنامه ای برای ارتباطات شبكه ای بنویسند از كتابخانهء Indigo استفاده میكنند كه مبتنی بر دات نت است و ... یعنی اگر بخواهیم از همان ادبیات قدیمی برای توصیف لانگهورن استفاده كنیم ، Lognhorn SDK تشكیل شده است از : WinFX ، WinFS ، Avalon ، Indigo و چند كتابخانهء كوچك دیگر . بخشی از Lognhorn SDK مبتنی بر دات نت است و بخشی نیست . بعد از توزیع ویندوز لانگهورن ، استفاده از Longhorn SDK مورد حمایت مایكروسافت است و توسط او توصیه میشود ، ضمن اینكه برنامه های Win32 یا مبتنی بر دات نت ( كه همین حالا مینویسید ) روی آن كار خواهند كرد .






3.ویژگی های لانگهورن نشان میدهد در طراحی آن خلاقیت و نوآوری قابل ذكری وجود ندارد .



با نگاهی اجمالی بر معماری و ویژگی های لانگهورن ( چه به عنوان یك سیستم عامل چه به عنوان یك فرهنگ جدید برای توسعهء نرم افزار ) به وضوح مشخص میشود كه مایكروسافت باز هم با تقلید و گرته برداری از سایر تكنولوژی های نسبتا" موفق و باز چینی مهره های فراهم آمده از تلاش (!) برای ایجاد یك بستر توسعه نرم افزار ، سعی میكند به حیات نرم افزاری خود پویائی ببخشد . برای اینكه عمق تلاشهای مایكروسافت در توسعهء لانگهورن مشخص شود بهتر است با هم نگاهی به جبههء مقابل ، یعنی مبارزان دنیای سورس آزاد بیندازیم و ببینیم آن سوی خط چه خبر است ؟

4.موزیلا ، بادبان كشتی توسعهء نرم افزارهای Open Source



اگر در یك جمع عمومی سوال كنید موزیلا چیست احتمالا" چند نفری پیدا خواهند شد كه به شما توصیه كنند سری به لینوكس بزنید و یكی از مرورگرهای محبوب لینوكس دوستان را ببینید ، اما اینجا یك جمع عمومی نیست . موزیلا یك بستر توسعه ء نرم افزار مستقل از سكو است . به عبارت عامیانه تر ، موزیلا ، برادر كوچكتر جاوا و برادر بزرگتر دات نت است . یك كتابخانهء غنی و قدرتمند برای توسعهء نرم افزار كه در اقتدا به برادر بزرگتر به سكو و سیستم عامل خاصی محدود نیست . توسط موزیلا میتوانید برنامه های مبتنی بر بانك اطلاعاتی ، برنامه های گرافیكی ، برنامه های ارتباطی- شبكه ای ، برنامه های مبتنی بر وب ، سیستم های كلاینت – سرور و ... بسازید و براحتی برای هر سكوی سخت افزاری مورد حمایت موزیلا و تمامی سیستم عاملهای موجود آن را توسعه دهید . اما موزیلا با دو برادر خود تفاوتهای فاحشی دارد . جاوا و دات نت ( اگر مسامحتا" آنها را قابل قیاس بدانیم ) هر دو دارای یك استخوان بندی مشابه هستند كه از همان ادبیات قدیمی و همچنان متداول استفاده میكنند اما موزیلا واقعا" متفاوت است و این تفاوت چشمگیر باعث گسترش روز افزون محبوبیت موزیلا میان ساكنان سرزمین سورس آزاد شده است و خواهیم دید ، Longhorn SDK كه فرزند نا خلف دات نت است ، بجای تبعیت از روش دات نت ، به موزیلا رجوع كرده است و آیندهء برنامه نویسان سپاه مایكروسافت را فناوری امروز دنیای سورس آزاد رقم میزند .

5.موزیلا ، برای توسعهء نرم افزار



موزیلا تقریبا" از 3000 كامپوننت مختلف تشكیل شده است كه از رابط كاربری گرفته تا سرویسهای وب و از بانك اطلاعاتی گرفته تا ارتباطات شبكه ای را حمایت میكنند . در موزیلا كتابخانهء Gecko مسئول نمایش و جلوه های بصری است ( كه Avalon همین وظیفه را در لانگهورن انجام میدهد ) و برای توسعهء رابط كاربری از یك زبان شبه XML بنام XUL استفاده میكند ( كه این وظیفه را در معماری لانگهورن ، زبان XAML انجام خواهد داد ) . برای ارتباطات شبكه ای كتابخانهء Necko توسعه داده شده است ( كه در معماری لانگ هورن Indigo همین وظیفه را دارد ) . كتابخانه های XPCOM برای توزیع شدگی و شیء گرائی در سطح كاربرد طراحی شده اند ( همانطور كه در معماری لانگهورن این وظیفه هنوز بر عهدهء كتابخانه های اصلی دات نت ، مانند ریموتینگ است ) و ...

موزیلا بر این اصل تاكید دارد كه بستر توسعهء نرم افزار ، منطق نرم افزار ، رابط كاربری نرم افزار ، ارتباط نرم افزار با سایر عناصر ( كامپوننتهای دیگر ) و ارتباطات شبكه ای ، باید بصورت كاملا" از هم جدا و مستقل توسعه داده شوند و كلید ارتباطی این موجودیت های مستقل چیزی نخواهد بود بجز : XML . به دیگر بیان برنامه نویسی با موزیلا ، تركیب و تلفیق كتابخانه های مناسب و ایجاد ارتباط بین آنها با XML است . در این معماری ، نرم افزارهای كوچك توسط هر كسی كه قدری با ادبیات نرم افزار آشنا باشد قابل تهیه هستند و نرم افزارهای بزرگ فرصت می یابند در سطح تیم توزیع شوند و اعضای تیم توسعه بدون اطلاع از جزئیات سایر بخشها ، اجزاء لازم را با هم تلفیق میكنند و نهایتا" توسط XML نرم افزار اصلی متولد میگردد و هر زمان لازم بود اجزاء نرم افزار تغییر مكان یا موضع دهند ، براحتی و بدون درگیر شدن با خروارها كد ، میتوان با تغییر چند خط XML مرتبط كنندهء دو عنصر ، روند كاربرد نرم افزار را تغییر داد .
از دیدی دیگر موزیلا میخواهد برنامه نویسی برای وب ، با برنامه نویسی Desktop تفاوتی نداشته باشد . وقتی قرار است آیندهء سیستم های رایانه ای مبتنی بر وب باشد و ماهیت از هم جدای نرم افزارها و رایانه ها تبدیل به یك اتصال همیشه در دسترس و جهانی شود ، باید برنامه نویسان براحتی همراه با توسعهء Desktop برای وب هم نرم افزارهایشان را توسعه دهند .
این خط مشی و الگو ، قطعه به قطعه توسط مایكروسافت در لانگهورن توسعه داده میشود . مایكروسافت هم در توصیف علت ایجاد یك مدل جدید برنامه نویسی ( یعنی لانگهورن) میگوید :

Why Another Programming Model?

Longhorn programming model is designed to fill the gap between Windows client applications and Web applications. In today's programming model, if you write a new application, first you have to decide whether the target is Windows or Web. If you target both users, then you have to develop two seperate applications.


منبع

:http://www.c-sharpcorner.com/Longhorn/Longhorn/LonghornFAQ.asp

بزودی همانطور كه Win32 به پشت صحنه رفت تا دات نت خودنمائی كند ، دات نت هم از جلوی صحنه حذف خواهد شد تا لانگهورن فرصت خودنمائی پیدا نماید . توسعه گران معتقد به راهكارهای مایكروسافت ، دیروز به Win32 افتخار میكردند ، امروز خواب و خیالهای تعبیر نشدهء خود را با دات نت تعبیر میكنند و فردا لانگهورن "بهترین" فناوری توسعهء نرم افزار است كه آزمایشگاههای چند میلیاردی مایكروسافت با كوشش و تلاش و تحقیق مداوم و اهتمام به در نظر گرفتن نیازهای كاربران و توسعه گران آن را تولید نموده است !!

6.پس مایكروسافت دقیقا" چه كرده است ؟



به غیر از استفاده از ایدهء دیگران ، اتفاقات مهم دیگری هم در جبههء مایكروسافت افتاده است . مثلا" شاید دوست داشته باشید بدانید كه Gecko ( كه مسئول ترسیم عناصر بصری در معماری موزیلا است ) یك تكنیك Raster- Based است . هر چند عناصر گرافیكی دلخواه خود را میتوانید براحتی تولید كنید اما توسعه گران تابع مایكروسافت از داشتن یك Avalon متمدن تر كه Vector-Based است خوشحال تر خواهند بود و براحتی میتوان قابلیتهائی كه همینك در SVG ادوبی یا Flash SWF مكرومدیا موجود است را توسط برنامه های معمولی لانگهورن ایجاد نمود . در سایر بخشها هم چنین ویژگیهائی مشاهده میشود . در واقع مایكروسافت تا توزیع نهائی لانگهورن ، به تقویت موزیلا ، ببخشید ، به تقویت لانگهورن برای حمایت از " هر آنچه ممكن است یك توسعه گر نرم افزار نیاز داشته باشد" خواهد پرداخت تا برنامه نویسان ، تا حد ممكن از هیچ تكنیك ، قطعهء نرم افزاری یا ابزاری كه محصول مایكروسافت نباشد استفاده نكنند . اما برای شما ، به عنوان یك توسعه گر نرم افزار آنچه بیشترین نمود را خواهد داشت XAML است . زبانی كه بخش قابل توجهی از توسعه گران برای ساخت برنامه های جدید خود از آن استفاده خواهند نمود . در آینده توسعهء نرم افزار های ویندوزی ، بسیار شبیه طراحی نرم افزارهای مبتنی بر وب ، خواهد بود .

بخواهید یا نخواهید شما در عصر رنسانس دنیای الكترونیك و IT قرار دارید و بلا شك باید نظاره گر تغییراتی باشید كه بزرگان درهء سیلیكون و لژ نشینان ردموند منشاء آن هستند . عصر ارتباطات جهانی كه كلید تمامی ارتباطات تجاری ، اقتصادی ، سیاسی ، فرهنگی و اجتماعی آن ، شبكه های با سیم یا بی سیم تحت فرمان نرم افزارهای پیام رسان هستند ، در اختیار چه كسانی خواهد بود ؟ آیا آینده اجازه میدهد همانند امروز تا حدی برای انتخاب راه و مسیر زندگی انعطاف داشته باشیم ؟

به نقل از سایت برنامه نویس