PDA

View Full Version : Microsoft .NET از گذشته تا آینده



Abbas Arizi
سه شنبه 25 فروردین 1383, 21:29 عصر
آنچه که در ذیل می‌آید ممکن است برای خیلی از دوستان آشنا بوده و گفتن اون تکرار مکررات. ولی چون خط سیری که منجر به ظهور دات نت شده در اون به صورت خیلی چکیده و خلاصه گفته شده بد ندیدم که اون رو در اینجا قرار بدم.
هدف اصلی از بازگو کردن این مطالب ارایه یک دید سریع نسبت به علت ظهور دات نت و آماده شدن اذهان برای حرکت به سوی فلسفه لانگهورن میباشد!!

از سالها پیش تاکنون سیستم عاملهای مختلفی در دنیا ظهور کرده‌اند که هر کدام از آنها دارای معایب و مزایای خاص خود بوده‌اند. به طور کلی اکثر آنها مشابه نمونه‌های پیشین خود بوده و دارای درجه تکامل مشابهی بوده‌اند.
مایکروسافت با نوشتن یک کاربرد ویندوز که برنامه‌نویسی با Microsoft Win32 (در حقیقت آن زمان Win16) را ممکن میساخت، آغازگر یک تحول بزرگ در سیر تکامل سیستم عاملها بوده است.
Win32 API به صورت یک واسط برنامه نویسی کاربرد (API) رویه‌ای و مسطح طراحی شد که امکان فراخوانی آن از طریق برنامه‌های C وجود داشت.
با استفاده از Win32 API انجام هر کاری در محیط ویندوز انجام پذیر است. شما ابتدا یک منفذ به صف پیغامهای ویندوز به دست می‌آورید و می‌توانید با دادن پاسخ مناسب و مقتضی به این پیامها اعمال مختلفی را به انجام برسانید. میتوانید حافظه را دستکاری کنید (حافظه مربوط به پروسه‌های برنامه خود یا پروسه‌های دیگر)، میتوانید یک پنجره را به شکلی که مایل هستید ترسیم کنید و ...
طراحی ویندوز ذاتا شیی گراست.اشیاء پنجره‌ها، قلمهای گرافیکی و ... اشیایی هستند که در ویندوز مورد استفاده قرار می‌گیرند.
از زمان طراحی ویندوز تا سالها بعد توسعه‌گران نرم‌افزار برنامه‌های یکپارچه و ایزوله‌ای روی آن نوشتند. آنها هیچ گونه‌ مولفه‌ای که بتواند با برنامه‌های دیگر ترکیب شود و هیچ مکانیسیمی که چنین ترکیبی را پشتیبانی کند، در اختیار نداشتند.
در سال 1993 مایکروسافت (COM (Component Object Model را طراحی نمود که یک استاندارد باینری را برای ترکیب برنامه‌ها معرفی می‌کرد. بنابراین کامپوننتها از طریق کامپایلرهای زبانی مختلف ساخته میشدند و میتوانستند از طریق یک سری واسطهای ثابت با یکدیگر تعامل کنند.
(Distributed COM (DCOM پروتکل شبکه‌ای بود که اجازه میداد این مولفه‌ها با پروسه‌های آن سوی مرزهای یک ماشین واکنش انجام دهند.
بسیاری از API هایی که مایکروسافت بعد از سال 1993 معرفی کرد، بر پایه COM بودند. دو مثال بارز در این خصوص عبارتند از: DirectX و Shell Extensions. امروزه ویندوز بیش از ده هزار API دارد که که توسط توسعه‌گران مختلف در تیمهای مختلف و با اهداف مختلف طراحی شده‌اند.
تکنولوژیهای OLE و ActiveX هم بر پایه COM به وجود آمدند.
نتیجتا در حال حاضر ما با انواع مختلفی از API روبرو هستیم. یک سری نقطه‌ورودی (Entry Point) درون Dll ها و همچنین یک مجموعه پیچیده‌تر که در واکنش با واسطهای COM هستند. علاوه بر اینها API های دیگری نیز وجود دارند که میتوان از طریق تکنولوژیهای دیگری به آنها دسترسی پیدا کرد.
در عمل توسعه‌گران به محیطی نیاز دارند که آنها را از بند این پیچیدگیها برهاند. از این رو تیمهای مختلفی در داخل و خارج مایکروسافت کتابخانه‌های چهارچوبی مختلفی را برای تسهیل تولید برنامه‌ها ساختند. بعضی از این کتابخانه‌های معروف عبارتند از: (Microsoft Foundation Classes (MFC و (Microsoft ActiveX Template Library (ATL و کتابخانه داخلی Microsoft Visual Basic و (Borland's Object Windows Library (OWL و ...
به عنوان مثال MFC ویژگیهای گوناگون Win32 API را در مجموعه‌ای از کلاسهای ++‍C کپسوله میکند. هنگامی که ++C و MFC به عنوان محیط برنامه‌نویسی انتخاب شود، هر آنچه که بدان نیاز داریم به طور مستقیم پشتیبانی میشود و کار تا حد زیادی آسان میشود. با این حال زمانی که شما بخواهید چیزهایی را به کار ببرید که در MFC پشتیبانی نمیشوند، بازهم باید به خودتان اتکا کنید و کار حتی از قبل هم سخت تر میشود. زیرا از یک طرف باید بدانید که چگونه Win32 API را به کار ببرید و از طرفی هم باید بدانید که چگونه بین آنها و MFC ارتباط برقرار کنید.
تیم طراحی ویژوال بیسیک اما راه متفاوتی را در پیش گرفت. آنها دسترسی به Win32 API را در یک زبان و کتابخانه که یادگیری و کاربرد بسیار ساده‌ای داشت، پوشش دادند اما به قیمت حذف کارایی و اختیارات. گاهی برنامه نویسان ویژوال بیسیک نمیتوانند به راحتی یک کار را به انجام برسانند به علت محدودیتی که محیط توسعه انتخاب شده به آنان تحمیل میکند.
در نیمه نخست دهه 90 با ظهور اینترنت و ارتباطات بیشتری که بین سیستمهای کامپیوتری به وجود آمد، روش برنامه‌نویسی خاصی بر مبنای HTML و زبانهای اسکریپتی که در صفحات وب به اجرا درمی‌آمدند، به وجود آمد. این روش اگرچه مزایایی داشت، ولی اشکالاتی مثل عدم پشتیانی زبانهای برنامه‌نویسی گوناگون، مشکل اشکال زدایی، محدودیت دسترسی به کنترلهای مختلف و ... باعث شد که این مدل نتواند جایگزین مناسبی برای روشهای قبلی به شمار بیاید.
در PDC 2000 مایکروسافت برای اولین بار دات نت را به توسعه‌گران خود معرفی کرد. دات نت یک سکوی نرم‌افزاری مدرن است که قادر است برنامه‌ها را در یک محیط امن و مدیریت شده به اجرا درآورد. در حالی که همچنان اجازه استفاده از کدهای قبلی را میدهد.
به طور خلاصه برخی مزایایی که برای دات نت میتوان بر شمرد اینها هستند:

یک مدل شیی محور است که زبانهای مختلفی میتوانند از آن استفاده کنند و یک چهار چوب واحد برای زبانهای برنامه‌نویسی مختلف ایجاد مکیند. چنین امکانی به عنوان مثال در MFC وجود ندارد. چرا که تنها برنامه‌های مبتنی بر ++C میتوانند از آن استفاده کنند. در مورد بقیه محیطها هم کم و بیش وضع به همین گونه است. در حال حاضر زبانهایی مثل C++.NET، C#، Visual Basic.NET، Delphi.NET و ... میتوانند کدهای مبتنی بر دات نت تولید کنند.
دارای ایمنی انواع است. انواع دات نت در مقابل مقادیر نامعتبر حفاظت میشوند.
تعدادباگها و حفره‌های امنیتی ناشی از اشتباهات برنامه‌نویسی را کاهش میدهد. به عنوان مثال هیچ گاه با از حد خارج شدن بافرها (Buffer overrun) یا مشکلات مدیریت حافظه مثل نشت حافظه روبرو نخواهیم بود. برنامه‌ای که در دات نت اجرا میشود از حیث مدیریت حافظه، Threading و ایمنی تحت مدیریت کامل CLR خواهد بود.
کتابخانه‌های کلاس دات نت فریم ورک بسیاری از توابع پر کاربرد Win32 را کپسوله میکنند. متاسفانه در حال حاضر دات نت به طور کامل Win32 را تحت پوشش قرار نمیدهد. لیکن ابزارهایی برای به کارگیری کدهای بدون مدیریت قبلی ارایه شدند. این ابزارها عبارتند از P-Invoke (برای احضار توابع)، COM-Interop (برای بکارگیری مولفه‌های COM) و ++C (قویترین تکنولوژی که تنها قابل استفاده در ++Managed C است.) همچنین دات نت ابزارهایی ارائه میکند که معادلی در Win32 ندارند. مثل آنچه که مربوط به ASP.NET، Web Service ها و به کارگیری XML میباشد.
تجرید در دات نت بسیار بیشتر از مدلهای دیگر است به طوری که درگیری برنامه‌نویس با جزئیات و پیچیدگیها به حداقل کاهش می‌یابد.
...

برگرفته از کتاب: Introducing Longhorn for developers با تصرف و تلخیص.
این کتاب به صورت HTML در سایت http://www.microsoft.com موجود هست که باید یک جستجوی ساده میتونید پیداش کنید. :wink: :cry:

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

Inprise
چهارشنبه 26 فروردین 1383, 00:27 صبح
احسنتم :تشویق: :flower:



---

مطمئنی این تیکه " همچنین دات نت ابزارهایی ارائه میکند که معادلی در Win32 ندارند. مثل آنچه که مربوط به Web Service " رو درست ترجمه کردی ؟ منطقا" که صحیح نیست . مگر اینکه مؤلف سوتی داده باشه که نسبتا" بعیده

Abbas Arizi
چهارشنبه 26 فروردین 1383, 00:36 صبح
فکر کنم اون یه کم تصرف رو هم نباید میکردم. راستش این مطلب رو طبق ذهنیتی که خودم داشتم، اضافه کردم. به هر حال آدمیزاد جایز السوتیه :oops:
ممنون :flower: :kiss:

Inprise
چهارشنبه 26 فروردین 1383, 00:49 صبح
بیخیال رفیق . مطلبت عالی بود . حقیر هم از این باب که ملت تازه وارد دچار شبهه نشن اون تکه آخر رو عرض کردم ، از این رو که وب سرویس ، یک روش Distributed Computing و متشکل از تعدادی قرارداد و پروتکل است که ارتباط خاصی با دات نت نداره . دات نت هم مانند سایر محیطها ( شاید گاهی بهتر ) اون رو حمایت میکنه . اولین محیط Win32 ای که از تولید سرویسهای وب حمایت کرد Delphi 6 بود ( قبل از تولد دات نت ) که جایزهء MSDN Magazine رو هم دریافت کرد :)

موفق باشی

مهدی کرامتی
چهارشنبه 26 فروردین 1383, 01:11 صبح
اتفاقا ابزارهایی که برای پشتبانی وب سرویس ها در دلفی وجود دارد بسیار قویتر از معادل خود در دات نت هستند.

در حال حاضر وب سرویس ها در دات نت به گفته بسیاری از کسانی که در عمل با آن سر و کار داشته‌اند (و البته خودم هم تست کردم) بسیار ضعیف و ابتدایی هستند. مایکروسافت قول داده است در نسخه بعدی دات نت، وب سرویس‌ها بهتر شوند، اما هنوز در Road Map ارائه شده برای نسخه بعدی چیزی در مورد این موضوع ارائه نداده است.

Abbas Arizi
چهارشنبه 26 فروردین 1383, 01:44 صبح
حالا ما یه سوتی دادیم چرا میزنید؟ :cry:
خب وب سرویسها بر مبنای SOAP عمل میکنند و البته من با SOAP آشنایی زیادی ندارم. ولی فکر میکنم در هر محیطی بشه از اونها استفاده کرد.
دات نت یک لایه انتزاعی ارائه میکنه که برنامه نویس بدون این که هیچ چیزی از SOAP بدونه از اون استفاده میکنه. به این دلیل من یه مقدار دچار سو، تفاهم شدم.
ضمن این که من نمیدونم چه چیزی باعث شده که اینپرایز مطلبش رو به این صورت بنویسه. باور کن همین قدر که شما وقت بذاری و مطلبی که من نوشتم رو بخونی باعث افتخار منه. اینو از ته دل میگم.
به هر حال اینجا یه محیط نوشتاریه و ممکنه بعضی وقتها آدم نتونه مقصودش رو به خوبی بیان کن. حقیقتا هدف من از اون مطلبی که نوشتم تشکر از تذکر شما بود و بس. خودممم احساس کردم که زیاد جالب ننوشتم. حتی خواستم ادیتش کنم ولی دیگه دیر شده بود.
به هر حال شرمنده :oops:

Anti_Evil
چهارشنبه 26 فروردین 1383, 02:59 صبح
آفرین عباس ! خوب بید ! (:
-;{@

مهدی کرامتی
چهارشنبه 26 فروردین 1383, 03:27 صبح
ببین عباس جان، شما یک کم حساسی (مثل چند سال پیش من) و هر چیزی رو بخودت میگیری.

منظور ما نه ایراد گرفتن از کار شما، بلکه روشن کردن برخی مفاهیم بود.

کار شما ضمن اینکه قابل تقدیره، یک حرکت مثبت به حساب میاد که بقیه هم میتونن ازش سرمشق بگیرن. امیدوارم همه از این کارها بکنن.