Bad Sector
7th February 2011, 10:31 PM
برنامه نویسی با دات نت چیست و توضیح دات نت فریم ورک :
شرکت مايکروسافت در جولای سال ۲۰۰۰ ميلادی در کنفرانس پياده کنندگان حرفه ای (PDC) ابتکار جديد خود يعنی دات نت NET. را معرفی نمود.
دات نت چيست ؟
در صورتيکه صفحه اختصاصی دات نت در سايت مايکروسافت را مشاهده کرده باشيد با تعريف زير مواجه می گرديد :
" پلات فورم (Plathform) مايکروسافت برای سرويس های وب XML " .
مايکروسافت همچنين دات نت را بعنوان روشی برای توزيع و عرضه سرويس های نرم افزاری مطرح نموده است . تعاريف فوق گرچه برخی از ابعاد مهم دات نت را تشريح می نمايند ولی نگرش فوق صرفا" از يک بعد ساده و از زاويه يک شرکت مورد توجه قرار گرفته است . برای پياده کنندگان نرم افزار دات نت يک الگوی جديد جهت طراحی و پياده سازی نرم افزار است . در اين مقاله به بررسی الگوی فوق پرداخته و از اين رهگذر جايگاه ASP.NET در اين پروژه نيز تبين خواهد شد.
نگاهی اجمالی به گذشته :
تاکنون از خود پرسيده ايد که برنامه های کامپيوتری چگونه کار می کنند ؟ چگونه کدهای نوشته شده به يکی از زبانهای سطح بالا نظير ويژوال بيسيک به يک برنامه اجرائی تبديل می شوند؟
در گذشته عمليات فوق از طريق بکارگيری کمپايلرها ( مترجم ها ) تحقق پيدا می کرد. کمپايلرها برنامه های خاصی هستند که کدهای نوشته شده به يکی از زبانهای سطح بالا را به زبان اختصاصی ماشين نظير اسمبلی ترجمه می نمايند ( اين کدها در ادامه به زبان ماشين ترجمه خواهند شد) .
کدهای اسمبلی و کدهای زبان ماشين کاملا" وابسته به يک پلات فورم خاص خواهند بود. مثلا" کدهای ماشين نوشته شده برای يک پردازنده اينتل قادر به اجراء بر روی هر نوع ماشين ديگر نظير مکينتاش نخواهند بود. ( در حقيقت کدهای ماشين قادر به اجراء بر روی ماشينی با مجموعه دستورات خاص خواهند بود و در اين راستا ماشين ديگر که از پردازنده ديگر و به تبع آن از مجموعه دستورات خاصی استفاده می کند، قابل اجراء نخواهند بود ) .
برنامه های نوشته شده برای ويندوز به زبان ماشين ترجمه شده بگونه ای که قادر به استفاده از مجموعه توابع کتابخانه ای موجود در Win32 باشند. کتابخانه فوق شامل مجموعه ای از صدها تابع مختص ويندوز است . توابع فوق مستقيما" با ويندوز ارتباط و مسئوليت ارتباط با سطوح سطح پايين سخت افزار را برعهده خواهند گرفت . زمانيکه يک برنامه ويژوال بيسيک قصد نمايش يک MessageBox را داشته باشد ، تمامی پردازش های مربوطه تا زمانيکه برنامه ترجمه نشده و به يک فايل اجرائی تبديل نگردد ، آغاز نخواهد شد. پس از ترجمه برنامه ، دارای يک فايل اجرائی با انشعاب .exe خواهيم بود. فايل فوق را می توان بر روی هر محيطی که سيستم عامل ويندوز بر روی آن نصب شده باشد، اجراء نمود.( در چنين شرايطی لزومی به حضور ويژوال بيسيک بر روی کامپيوتر مورد نظر نخواهد بود). در حقيقت کمپايلر ويژوال بيسيک کدهای سطح بالا را بگونه ای تبديل نموده که برای سيستم عامل قابل فهم باشند. در نهايت سيستم عامل کدهای فوق را بگونه ای که قادر به اجراء بر روی يک کامپيوتر خاص باشند، ترجمه و اجراء خواهد نمود.
بنظر عمليات فوق پيچيده بنظر می آيد . خوشبختانه تمامی مراحل ترجمه های فوق از ديدگاه استفاده کننده مخفی نگاهداشته شده و برنامه نويسان کافی است تمام تمرکز خود را بر روی نوشتن برنامه معطوف داشته و هيچگونه نگرانی در رابطه با ترجمه نداشته و تمامی عمليات در اين راستا را بر عهده کمپايلرها واگذار و در نهايت يک فايل اجرائی را تحويل گيرند.
در رابطه با رويکرد فوق برخی مسائل اساسی وجود دارد که در ادامه به آنها اشاره می گردد:
رويکرد فوق کاملا" وابسته به پلات فورم است . اين بدان معنی است که زمانيکه يک برنامه را مثلا" با ويژوال بيسيک می نويسيد ، برنامه فوق صرفا" بر روی کامپيوترهائی که از ويندوز استفاده می نمايند، قابل اجراء خواهد بود.
هيچگونه تضمينی وجود ندارد که دو برنامه اجرائی نوشته شده با زبانهای برنامه نويسی متفاوت دارای کدهای مشابه سطح پايين باشند. بنابراين اشتراک مجموعه ای از توابع برای زبانهای برنامه نويسی غيرممکن بنظر می رسد. ( مايکروسافت با ارائه تکنولوژی Com سعی در ارائه راهکاری جهت حل مشکل فوق را داشت ولی عملا در مراحل عملياتی با مشکل مواجه گرديد. مثلا" اگر قصد بکارگيری عناصر COM نوشته شده به زبان ويژوال بيسيک را بهمراه عناصر COM نوشته شده به زبان ويژوال C+ + را داشته باشيد در زمان پاس دادن پارامتر بين آنها به مشکلات خاصی برخورد خواهيد کرد. (
کتابخانه Win32 API چيزی بيش از مجموعه وسيعی از توابع نيست . توابع فوق هريک دارای تعاريف اختصاصی خود بهمراه پارامترهای مربوطه می باشند. در برنامه های ويژوال بيسيک و يا C++ به دفعات ممکن است اين نياز احساس گردد که مستقيما" يکی از توابع موجود در Win32 API فراخوانی گردد ، يافتن تابع مورد نظر جهت فراخوانی کار ساده ای بنظر نمی آيد!
بموازات رشد و توسعه نرم افزارها مسئله دوم يکی از اساسی ترين چالش های جدی در زمينه برنامه نويسی گرديد. در حالت ايده آل ما اين انتظار را داريم که هر مجموعه تابع و يا عناصری را که بکمک يک زبان برنامه نويسی نوشته شده اند را بتوان به اشتراک گذاشت و زمينه استفاده از آنان برای ساير زبانهای برنامه نويسی نيز فراهم گردد. مسئله فوق از اين زاويه نگران کننده تر بنظر خواهد آمد که توجه داشته باشيم هر زبان برنامه نويسی ممکن است نوع های داده ئی اوليه مربوط به خود را دارا باشد. مثلا" در ويژوال بيسيک می توان برداری را داشت که که ايندکس باند پايين آن از هر محدوده ای شروع گردد در صورتيکه در C++ اين تاکيد وجود دارد که حتما" می بايست باند پايين با ايندکس صفر آغاز گردد.
شرکت مايکروسافت در جولای سال ۲۰۰۰ ميلادی در کنفرانس پياده کنندگان حرفه ای (PDC) ابتکار جديد خود يعنی دات نت NET. را معرفی نمود.
دات نت چيست ؟
در صورتيکه صفحه اختصاصی دات نت در سايت مايکروسافت را مشاهده کرده باشيد با تعريف زير مواجه می گرديد :
" پلات فورم (Plathform) مايکروسافت برای سرويس های وب XML " .
مايکروسافت همچنين دات نت را بعنوان روشی برای توزيع و عرضه سرويس های نرم افزاری مطرح نموده است . تعاريف فوق گرچه برخی از ابعاد مهم دات نت را تشريح می نمايند ولی نگرش فوق صرفا" از يک بعد ساده و از زاويه يک شرکت مورد توجه قرار گرفته است . برای پياده کنندگان نرم افزار دات نت يک الگوی جديد جهت طراحی و پياده سازی نرم افزار است . در اين مقاله به بررسی الگوی فوق پرداخته و از اين رهگذر جايگاه ASP.NET در اين پروژه نيز تبين خواهد شد.
نگاهی اجمالی به گذشته :
تاکنون از خود پرسيده ايد که برنامه های کامپيوتری چگونه کار می کنند ؟ چگونه کدهای نوشته شده به يکی از زبانهای سطح بالا نظير ويژوال بيسيک به يک برنامه اجرائی تبديل می شوند؟
در گذشته عمليات فوق از طريق بکارگيری کمپايلرها ( مترجم ها ) تحقق پيدا می کرد. کمپايلرها برنامه های خاصی هستند که کدهای نوشته شده به يکی از زبانهای سطح بالا را به زبان اختصاصی ماشين نظير اسمبلی ترجمه می نمايند ( اين کدها در ادامه به زبان ماشين ترجمه خواهند شد) .
کدهای اسمبلی و کدهای زبان ماشين کاملا" وابسته به يک پلات فورم خاص خواهند بود. مثلا" کدهای ماشين نوشته شده برای يک پردازنده اينتل قادر به اجراء بر روی هر نوع ماشين ديگر نظير مکينتاش نخواهند بود. ( در حقيقت کدهای ماشين قادر به اجراء بر روی ماشينی با مجموعه دستورات خاص خواهند بود و در اين راستا ماشين ديگر که از پردازنده ديگر و به تبع آن از مجموعه دستورات خاصی استفاده می کند، قابل اجراء نخواهند بود ) .
برنامه های نوشته شده برای ويندوز به زبان ماشين ترجمه شده بگونه ای که قادر به استفاده از مجموعه توابع کتابخانه ای موجود در Win32 باشند. کتابخانه فوق شامل مجموعه ای از صدها تابع مختص ويندوز است . توابع فوق مستقيما" با ويندوز ارتباط و مسئوليت ارتباط با سطوح سطح پايين سخت افزار را برعهده خواهند گرفت . زمانيکه يک برنامه ويژوال بيسيک قصد نمايش يک MessageBox را داشته باشد ، تمامی پردازش های مربوطه تا زمانيکه برنامه ترجمه نشده و به يک فايل اجرائی تبديل نگردد ، آغاز نخواهد شد. پس از ترجمه برنامه ، دارای يک فايل اجرائی با انشعاب .exe خواهيم بود. فايل فوق را می توان بر روی هر محيطی که سيستم عامل ويندوز بر روی آن نصب شده باشد، اجراء نمود.( در چنين شرايطی لزومی به حضور ويژوال بيسيک بر روی کامپيوتر مورد نظر نخواهد بود). در حقيقت کمپايلر ويژوال بيسيک کدهای سطح بالا را بگونه ای تبديل نموده که برای سيستم عامل قابل فهم باشند. در نهايت سيستم عامل کدهای فوق را بگونه ای که قادر به اجراء بر روی يک کامپيوتر خاص باشند، ترجمه و اجراء خواهد نمود.
بنظر عمليات فوق پيچيده بنظر می آيد . خوشبختانه تمامی مراحل ترجمه های فوق از ديدگاه استفاده کننده مخفی نگاهداشته شده و برنامه نويسان کافی است تمام تمرکز خود را بر روی نوشتن برنامه معطوف داشته و هيچگونه نگرانی در رابطه با ترجمه نداشته و تمامی عمليات در اين راستا را بر عهده کمپايلرها واگذار و در نهايت يک فايل اجرائی را تحويل گيرند.
در رابطه با رويکرد فوق برخی مسائل اساسی وجود دارد که در ادامه به آنها اشاره می گردد:
رويکرد فوق کاملا" وابسته به پلات فورم است . اين بدان معنی است که زمانيکه يک برنامه را مثلا" با ويژوال بيسيک می نويسيد ، برنامه فوق صرفا" بر روی کامپيوترهائی که از ويندوز استفاده می نمايند، قابل اجراء خواهد بود.
هيچگونه تضمينی وجود ندارد که دو برنامه اجرائی نوشته شده با زبانهای برنامه نويسی متفاوت دارای کدهای مشابه سطح پايين باشند. بنابراين اشتراک مجموعه ای از توابع برای زبانهای برنامه نويسی غيرممکن بنظر می رسد. ( مايکروسافت با ارائه تکنولوژی Com سعی در ارائه راهکاری جهت حل مشکل فوق را داشت ولی عملا در مراحل عملياتی با مشکل مواجه گرديد. مثلا" اگر قصد بکارگيری عناصر COM نوشته شده به زبان ويژوال بيسيک را بهمراه عناصر COM نوشته شده به زبان ويژوال C+ + را داشته باشيد در زمان پاس دادن پارامتر بين آنها به مشکلات خاصی برخورد خواهيد کرد. (
کتابخانه Win32 API چيزی بيش از مجموعه وسيعی از توابع نيست . توابع فوق هريک دارای تعاريف اختصاصی خود بهمراه پارامترهای مربوطه می باشند. در برنامه های ويژوال بيسيک و يا C++ به دفعات ممکن است اين نياز احساس گردد که مستقيما" يکی از توابع موجود در Win32 API فراخوانی گردد ، يافتن تابع مورد نظر جهت فراخوانی کار ساده ای بنظر نمی آيد!
بموازات رشد و توسعه نرم افزارها مسئله دوم يکی از اساسی ترين چالش های جدی در زمينه برنامه نويسی گرديد. در حالت ايده آل ما اين انتظار را داريم که هر مجموعه تابع و يا عناصری را که بکمک يک زبان برنامه نويسی نوشته شده اند را بتوان به اشتراک گذاشت و زمينه استفاده از آنان برای ساير زبانهای برنامه نويسی نيز فراهم گردد. مسئله فوق از اين زاويه نگران کننده تر بنظر خواهد آمد که توجه داشته باشيم هر زبان برنامه نويسی ممکن است نوع های داده ئی اوليه مربوط به خود را دارا باشد. مثلا" در ويژوال بيسيک می توان برداری را داشت که که ايندکس باند پايين آن از هر محدوده ای شروع گردد در صورتيکه در C++ اين تاکيد وجود دارد که حتما" می بايست باند پايين با ايندکس صفر آغاز گردد.