جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
دات نت و جايگاه ASP.NET
-(1 Body) 
دات نت و جايگاه ASP.NET
Visitor 254
Category: دنياي فن آوري
شرکت مايکروسافت در جولاي سال 2000 ميلادي در کنفرانس پياده کنندگان حرفه اي (PDC) ابتکار جديد خود يعني دات نت را معرفي نمود. دات نت چيست ؟ در صورتيکه صفحه اختصاصي دات نت در سايت مايکروسافت را مشاهده کرده باشيد با تعريف زير مواجه مي گرديد : " پلات فورم (Plathform) مايکروسافت براي سرويس هاي وب XML " . مايکروسافت همچنين دات نت را بعنوان روشي براي توزيع و عرضه سرويس هاي نرم افزاري مطرح نموده است . تعاريف فوق گرچه برخي از ابعاد مهم دات نت را تشريح مي نمايند ولي نگرش فوق صرفا" از يک بعد ساده و از زاويه يک شرکت مورد توجه قرار گرفته است . براي پياده کنندگان نرم افزار دات نت يک الگوي جديد جهت طراحي و پياده سازي نرم افزار است . در اين مقاله به بررسي الگوي فوق پرداخته و از اين رهگذر جايگاه ASP.NET در اين پروژه نيز تبين خواهد شد.

نگاهي اجمالي به گذشته

تاکنون از خود پرسيده ايد که برنامه هاي کامپيوتري چگونه کار مي کنند ؟ چگونه کدهاي نوشته شده به يکي از زبانهاي سطح بالا نظير ويژوال بيسيک به يک برنامه اجرائي تبديل مي شوند؟ در گذشته عمليات فوق از طريق بکارگيري کمپايلرها ( مترجم ها ) تحقق پيدا مي کرد. کمپايلرها برنامه هاي خاصي هستند که کدهاي نوشته شده به يکي از زبانهاي سطح بالا را به زبان اختصاصي ماشين نظير اسمبلي ترجمه مي نمايند ( اين کدها در ادامه به زبان ماشين ترجمه خواهند شد) . کدهاي اسمبلي و کدهاي زبان ماشين کاملا" وابسته به يک پلات فورم خاص خواهند بود. مثلا" کدهاي ماشين نوشته شده براي يک پردازنده اينتل قادر به اجراء بر روي هر نوع ماشين ديگر نظير مکينتاش نخواهند بود. ( در حقيقت کدهاي ماشين قادر به اجراء بر روي ماشيني با مجموعه دستورات خاص خواهند بود و در اين راستا ماشين ديگر که از پردازنده ديگر و به تبع آن از مجموعه دستورات خاصي استفاده مي کند، قابل اجراء نخواهند بود). برنامه هاي نوشته شده براي ويندوز به زبان ماشين ترجمه شده بگونه اي که قادر به استفاده از مجموعه توابع کتابخانه اي موجود در Win32 باشند. کتابخانه فوق شامل مجموعه اي از صدها تابع مختص ويندوز است . توابع فوق مستقيما" با ويندوز ارتباط و مسئوليت ارتباط با سطوح سطح پايين سخت افزار را برعهده خواهند گرفت . زمانيکه يک برنامه ويژوال بيسيک قصد نمايش يک MessageBox را داشته باشد ،تمامي پردازش هاي مربوطه تا زمانيکه برنامه ترجمه نشده و به يک فايل اجرائي تبديل نگردد ،آغاز نخواهد شد. پس از ترجمه برنامه ، داراي يک فايل اجرائي با انشعاب .exe خواهيم بود. فايل فوق را مي توان بر روي هر محيطي که سيستم عامل ويندوز بر روي آن نصب شده باشد، اجراء نمود.( در چنين شرايطي لزومي به حضور ويژوال بيسيک بر روي کامپيوتر مورد نظر نخواهد بود). در حقيقت کمپايلر ويژوال بيسيک کدهاي سطح بالا را بگونه اي تبديل نموده که براي سيستم عامل قابل فهم باشند. در نهايت سيستم عامل کدهاي فوق را بگونه اي که قادر به اجراء بر روي يک کامپيوتر خاص باشند، ترجمه و اجراء خواهد نمود. بنظر عمليات فوق پيچيده بنظر مي آيد . خوشبختانه تمامي مراحل ترجمه هاي فوق از ديدگاه استفاده کننده مخفي نگاهداشته شده و برنامه نويسان کافي است تمام تمرکز خود را بر روي نوشتن برنامه معطوف داشته و هيچگونه نگراني در رابطه با ترجمه نداشته و تمامي عمليات در اين راستا را بر عهده کمپايلرها واگذار و در نهايت يک فايل اجرائي را تحويل گيرند.
در رابطه با رويکرد فوق برخي مسائل اساسي وجود دارد که در ادامه به آنها اشاره مي گردد:
• رويکرد فوق کاملا" وابسته به پلات فورم است . اين بدان معني است که زمانيکه يک برنامه را مثلا" با ويژوال بيسيک مي نويسيد ،برنامه فوق صرفا" بر روي کامپيوترهائي که از ويندوز استفاده مي نمايند، قابل اجراء خواهد بود.
• هيچگونه تضميني وجود ندارد که دو برنامه اجرائي نوشته شده با زبانهاي برنامه نويسي متفاوت داراي کدهاي مشابه سطح پايين باشند. بنابراين اشتراک مجموعه اي از توابع براي زبانهاي برنامه نويسي غيرممکن بنظر مي رسد. ( مايکروسافت با ارائه تکنولوژي Com سعي در ارائه راهکاري جهت حل مشکل فوق را داشت ولي عملا در مراحل عملياتي با مشکل مواجه گرديد. مثلا" اگر قصد بکارگيري عناصر COM نوشته شده به زبان ويژوال بيسيک را بهمراه عناصر COM نوشته شده به زبان ويژوال C+ + را داشته باشيد در زمان پاس دادن پارامتر بين آنها به مشکلات خاصي برخورد خواهيد کرد.
• کتابخانه Win32 API چيزي بيش از مجموعه وسيعي از توابع نيست . توابع فوق هريک داراي تعاريف اختصاصي خود بهمراه پارامترهاي مربوطه مي باشند. در برنامه هاي ويژوال بيسيک و يا C++ به دفعات ممکن است اين نياز احساس گردد که مستقيما" يکي از توابع موجود در Win32 API فراخواني گردد ، يافتن تابع مورد نظر جهت فراخواني کار ساده اي بنظر نمي آيد!
بموازات رشد و توسعه نرم افزارها مسئله دوم يکي از اساسي ترين چالش هاي جدي در زمينه برنامه نويسي گرديد.در حالت ايده آل ما اين انتظار را داريم که هر مجموعه تابع و يا عناصري را که بکمک يک زبان برنامه نويسي نوشته شده اند را بتوان به اشتراک گذاشت و زمينه استفاده از آنان براي ساير زبانهاي برنامه نويسي نيز فراهم گردد. مسئله فوق از اين زاويه نگران کننده تر بنظر خواهد آمد که توجه داشته باشيم هر زبان برنامه نويسي ممکن است نوع هاي داده ئي اوليه مربوط به خود را دارا باشد. مثلا" در ويژوال بيسيک مي توان برداري را داشت که که ايندکس باند پايين آن از هر محدوده اي شروع گردد در صورتيکه در C++ اين تاکيد وجود دارد که حتما" مي بايست باند پايين با ايندکس صفر آغاز گردد.

دات نت

مايکروسافت با ارائه دات نت عملا" پاسخ هاي شايسته اي را نيز براي هر يک از مسائل گفته شده ارائه نموده است. از ديدگاه يک پياده کننده نرم افزار ،دات نت داراي دو بخش اساسي است : CLR(Common Language Runtime) و کلاس هاي فريمورک دات نت (.NET framework Classes) . بخش هاي فوق بگونه اي به مسائل اشاره شده پاسخ هاي مناسبي را ارائه داده اند.

(Common Language Runtime(CLR

در ابتداي مقاله به نحوه عملکرد کمپايلرهاي کلاسيک در رابطه با ترجمه کدهاي نوشته شده توسط يکي از زبانهاي سطح بالا به دستورات قابل فهم براي کامپيوتر اشاره گرديد . در دات نت فرآيند ترجمه يک برنامه سطح بالا به زبان ماشين بصورت کاملا" محسوس تغيير يافته است . کمپايلرهاي سازگار با دات نت کدهاي نوشته شده توسط يکي از زبانهاي برنامه نويسي را به Win32 API Call ترجمه نخواهند کرد.کمپايلرهاي فوق کدهاي نوشته شده را به يک زبان ميانه خاص با نام MSIL(Microsoft Intermediate Language) تبديل خواهند کرد. در ادامه CLR کدهاي زبان ميانه اي (IL) را اخذ و on the fly آنان را به دستورالعمل هاي اختصاصي ماشين تبديل خواهند کرد.

s
توجه داشته باشيد که مرحله CLR به Runing Program صرفا" زماني اتفاق خواهد افتاد که يک برنامه اجراء گردد. کمپايلر فايلي با محتويات کدهاي MSIL را ايجاد خواهد کرد.زمانيکه فايل فوق اجراء مي گردد ،کدهاي MSIL به سمت CLR روانه شده و در ادامه با استفاده از مترجم JIT(Just-In-Time) کدهاي IL به دستورات قابل فهم براي کامپيوتر تبديل خواهند شد. ( يک برنامه در حال اجراء بکمک CLR )

.NET FramWork Classes

در برنامه هاي نوشته شده تحت ويندوز با استفاده از Win32 API زمينه استفاده از مجموعه اي وسيع از توابع فراهم مي گردد. توابع فوق براي انجام عمليات متفاوتي نظير: رابط گرافيکي کاربر ،عمليات متفاوت در رابطه با سخت افزار و ساير عمليات مرتبط ، باسيستم عامل مرتبط خواهند شد. بنابراين برنامه هاي تحت ويندوز براي ارتباط با سيستم عامل و بهره مندي از خدمات آن ، خواسته خود را از طريق فراخواني توابع مربوطه در Win32 API انجام خواهند داد. برنامه هاي دات نت چگونه با سيستم عامل مرتبط خواهند شد؟ خوشبختانه Win32 API مربوط به گذشته بوده و برنامه هاي دات نت از کلاس هاي فريمورک دات نت استفاده مي کنند. فريمورک فوق مجموعه اي سازمانيافته از کلاس هائي است که بمنظور انجام تمامي عمليات مورد نظر يک طراح و پياده کننده نرم افزار طراحي و پياده سازي شده اند.
برخلاف Win32 API ،کلاس هاي دات نت در يک سيستم سلسله مراتبي NameSpace سازماندهي شده اند.هر NameSpace مي تواند داراي تعداد نامحدودي از کلاس ها باشد. مثلا" NameSpace پايه اي System شامل کلاس هائي است که از آنها براي نوع داده هاي اوليه نظير : System.Int32, System.Array , System.string و غيره استفاده مي شود. NameSpace ،System.Data شامل کلاس ها و ساير Namespace هاي مربوطه براي دستيابي به داده ها است . NameSpace ،System.IO شامل کلاس هاي مربوطه براي انجام عمليات متفاوت در رابطه با فايل ها و ورودي و خروجي است . دات نت داراي صدها کلاس بوده که تمامي آنها با استفاده از Namespace ها بدرستي سازماندهي شده اند. طراحان و برنامه نويسان مي توانند در صورت نياز اقدام به طراحي کلاس هاي اختصاصي و NameSpace مربوط به خود نموده و آنها را در برنامه هاي دات نت خود استفاده نمايند.
دقت داشته باشيد که کلاس هاي فريمورک دات نت شامل يک کلاس براي هر يک از نوع داده ها در NameSpace ، System مي باشد. زبانهاي برنامه نويسي دات نت نظير VB.NET,C#,Jscript.NET,? مي بايست از اين نوع ها استفاده نمايند . اين بدان معني است که هر نوع داده بمنزله يک کلاس در نظر گرفته خواهد شد. بنابراين زماني که عملياتي مطابق زير را انجام مي دهيم :
IN VB.NET: Dim i as Integer
IN C# : int i;
IN Jscript.NET : Var i;
در حقيقت يک نمونه از يک کلاس System.Int32 را ايجاد کرده ايم . با توجه به اين امر که هر يک از زبانهاي برنامه نويسي از نوع داده هاي يکسان استفاده و از مجموعه يکساني از کلاس ها استفاده مي نمايند ،ارتباط متقابل بين زبانها ي برنامه نويسي که زماني بيش از يک آرزو نبود ،ميسر خواهد شد . بدون دليل نيست که CLR را Common Language Runtime ناميده اند. برنامه هاي نوشته شده توسط هر يک از زبانهاي برنامه نويسي در نهايت و پس از ترجمه توسط کمپايلرهائي که دات نت را حمايت مي نمايند ، به کدهاي MSIL تبديل خواهند شد ،بدين ترتيب اين اطمينان و تضمين بوجود خواهد آمد که تا اين مرحله ( مرحله ترجمه کدهاي نوشته شده با يک زبان برنامه نويسي و ترجمه آنها به MSIL ) تمامي زبانهاي برنامه نويسي از نوع داده ها و کلاس هاي موجود در فريمورک دات نت استفاده کرده اند.

حل مشکلات سه گانه

همانطور که در ابتداي اين مقاله اشاره شده ترجمه مستقيم کدها ي نوشته شده به کدهاي ماشين باعث بروز سه مسئله اساسي : وابستگي محض به پلات فورم ، بروز مشکل در ارتباط متقابل بين زبانها و ساختار آشقته Win32 API مي گردد. دات نت براي سه مسئله فوق راهکارهاي مناسبي را ارائه نموده است .
مشکل اول در مرحله تئوري نمي تواند باعث بروز مسائلي گردد . در تئوري مايکروسافت مي تواند CLR و کلاس هاي فريمورک دات نت را براي هر نوع پلات فورم و سيستم عامل ارائه نمايد.اين بدان معني است که کدهاي MSIL توليده شده توسط VB.NET را مي توان بر روي لينوکس نيز اجراء نمود. در دنياي واقعي مايکروسافت تاکنون در زميته تامين خواسته هائي اينچنين فعاليت هاي خاصي را انجام نداده است .
در رابطه با مشکل دوم ( ارتباط متقابل بين زبانها ) با ارائه نوع هاي داده ئي و توابع مورد نظر که در سطح سيستم عامل فعاليت مي نمايند ،با مسئله فوق بدرستي برخورد و راهکار مناسبي ارائه شده است . بر اساس راهکار فوق ،تمامي زبانهاي برنامه نويسي مورد حمايت در دات نت مي بايست از کلاس هاي فريمورک دات نت استفاده نموده و پس از ترجمه اوليه کدهاي MSIL را توليد نمايند.
در رابطه با مشکل سوم ( ساختار آشفته Win32 API ) فريمورک دات نت ،تمامي کلاس ها را در يک ساختار سلسله مراتبي سازماندهي نموده و از اين طريق دستيابي ،استفاده و شناخت عملکرد هر يک از آنان بمراتب راحت تر از win32 API انجام خواهد شد.

جايگاه ASP.NET در دات نت

ASP.NET نسخه جديد ASP است که توسط مايکروسافت ارائه شده است . ASP از تمامي فاکتورهاي تشريح شده دات نت که به آنها اشاره گرديد بدرستي استفاده مي کند. اين بدان معني است که صفحات ASP.NET مي بايست با استفاده از يکي از زبانهاي سازگار با دات نت نظير : VB.NET,C#,Jscript.NET ايجاد گردنند.
زمانيکه يک صفحه ASP.NET بکمک يک مرورگر مشاهده مي گردد ، در ابتدا ASP.NET engine بررسي خواهد کرد که آيا آخرين نسخه بهنگام سازي شده از کدهاي IL براي صفحه ASP.NET وجود دارد؟ در صورتيکه اين نسخه وجود داشته باشد ،کدهاي IL روانه CLR شده و خروجي HTML توليده شده توسط صفحه ASP.NET براي مرورگر سرويس گيرنده ارسال خواهد شد. در صورتيکه کدهاي IL موجود نبوده و يا صفحه اوليه ASP.NET از زمانيکه کدهاي IL آن توليد شده اند ،تغيير کرده باشد ،صفحه ASP.NET مي بايست مجددا" ترجمه گردد. در چنين حالتي با توجه به زباني که براي نوشتن کدهاي صفحه ASP.NET استفاده شده است ،کمپايلر مربوطه فعال و کدهاي IL توليد خواهند شد. کدهاي IL فوق بر روي ديسک ذخيره تا مورد استفاده در آينده قرار گيرند.
در صورتيکه تاکنون صفحات ASP.NET را ايجاد کرده باشيد ،به نقش بسيار مهم کنترل هاي وب واقف شده ايد. از کنترل هاي فوق مي توان بهمراه صفحات ASP.NET براي ايجاد عناصر HTML نظير : Text Box,Labels,ListBoxes,? استفاده نمود. مثلا" براي ايجاد يک TextBox بکمک يک کنترل وب مي توان از عبارتي مطابق زير استفاده نمود :
<asp:textbox id="name" runat="server" />
در حقيقت صفحه ASP.NET مي تواند شامل ترکيبي از کدهاي Server-Side ( محصور شده در بلاک Script ) و in-line HTML باشد.

يک نمونه  صفحه ASP.NET

<script language="VB" runat="Server">
         Sub Page_Load(sender as Object, e as EventArgs)
        lblMessage.Text = "Hello, World!"
   End Sub
</script>
<html>
<body>
<h1>Simple ASP.NET Demo</h1>
<asp:label id="lblMessage" runat="server" />
</body></html>

چگونه کدهاي Server-Side و HTML موجود در يک صفحه ASP.NET ترجمه شده تا کمپايلر VB.NET قادر به شناخت آنان باشد؟. يکي از مهمترين عملياتي که توسط ASP.NET engine مي بايست انجام گيرد ،ترجمه کدهاي HTML/Server-Side به کلاسي است که کمپايلر VB.NET ( و يا ساير کمپايلرهاي Jscript.NET,C#) قار به تشخيص آنان باشند.پردازش فوق پيچيده بوده و از حوصله اين مقاله خارج است . کافي است به اين نکته اشاره گردد که صفحات به کلاسي تبديل خواهند شد که خصوصيات خود را از کلاس page ( يکي از کلاس هاي فريمورک دات نت ) به ارث خواهند برد.در حقيقت تمامي کنترل هاي وب که در صفحات ASP.NET استفاده مي گردند ،بصورت کلاس هائي در فريمورک دات نت در نظر گرفته خواهند شد. در اين راستا تمامي کدهاي Html که بصورت موردي در صفحات ASP.NET استفاده مي گردنند ،بعنوان نمونه هائي از کلاس LiteralText در نظر گرفته خواهند شد.
اولين نسخه ASP.NET در ماه جولاي سال 2001 عرضه گرديده است . (Beta Version) با استفاده از ASP.NET مي توان کارهاي بزرگ و شگفت انگيزي را انجام داد که اگر قصد انجام آنها را به کمک ASP کلاسيک داشتيم ، مي بايست صدها خط برنامه شامل کدهاي آشفته ( غيرساختيافته ) را نوشت .

Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image