فناوري ASP.NET
صفحه 1 از 1
فناوري ASP.NET
فناوري ASP.NET يك بستر برنامهنويسي است كه بر اساس سيستم CLR در چارچوب دات نت كار ميكند. اين فناوري امكاني را فراهم ميآورد تا در سايه آن برنامهنويس بتواند با استفاده از هريك از زبانهاي برنامهنويسي موجود در چارچوب دات نت، صفحات دايناميك و نرمافزارهاي تحت وب توليد كند. نسخه اول ASP.NET توانست با فراهم ساختن قابليتهاي پيشرفته زبانهاي برنامهنويسي شيگرا، همچون ويژوال بيسيك دات نت و سي شارپ، تحول بزرگي را نسبت به نسل قبلي (ASP) ايجاد كند. نسخه دوم ASP.NET همان مسير را با بهبود عملكرد موتور ASP.NET در زمينه مديريت و توسعه نرمافزار و نيز آسانتر كردن روند برنامهنويسي طي كرده است. در اين مقاله مهمترين تغييرات و قابليتهاي جديد ASP.NET2.0 را بررسي خواهيم كرد. مخاطب اين مقاله برنامهنويساني هستند كه قبلاً با فناوريASP.NET آشنايي پيدا كردهاند و اكنون مايلند به تدريج به پلتفرم جديد مهاجرت كنند.
شكل 1
تازههاي ASP.NET 2.0
اولين سؤالي كه براي هر برنامهنويس علاقمند به ASP.NET به وجود ميآيد اين است كه نسخه دوم اين فناوري چه ويژگيها و قابليتهاي جديدي دارد و كدام قسمتها نسبت به نسخه اول دچار تغيير و تحول شدهاند و اگر كسي بخواهد پلتفرم برنامهنويسي خود را به ASP.NET 2.0 منتقل كند، آيا مجبور است تمام دانش و تجربه خود در زمينه ASP.NET 1.x را دور بريزد و از نو بياموزد؟
با خواندن اين مقاله پاسخ همه اين سؤالات را خواهيد يافت. خوشبختانه معماري ASP.NET 2.0 به گونهاي است كه لازم نيست زحمات و تجربيات گرانبهاي خود در كار با ASP.NET 1.x را دور بريزيد.
ميتوانيد از قابليتهاي جديد نسخه دوم استفاده كنيد و همزمان سورس كدهايي كه با ASP.NET 1.x نوشتهايد را با كمي تغيير، در پلتفرم جديد مورد بهرهبرداري قراردهيد.
خبر خوب اين است كه ASP.NET 2.0 صددرصد با ASP.NET 1.x سازگار است. بنابراين ميتوانيد برنامه
ASP.NET 1.x خود را بدون حتي يك خط تغيير در سورس كد روي سروري كه براي اجراي ASP.NET 2.0 تنظيم شده است، اجرا كنيد. شكل 1 نمايي از پنجره تنظيمات يك سايت روي IIS 6.0 را نشان ميدهد كه امكان تغيير دادن فناوريASP.NET را از نسخه يك به دو و يا برعكس فراهم ميكند.
اين tab ويژه، پس از نصب NET Framework 2.0 روي ويندوز سرور، به ساير Tabها در پنجره تنظيمات سايت افزوده ميشود. براي آزمودن ادعاي فوق، كافي است پنجره تنظيمات سايتي كه هماكنون با ASP.NET 1.x نوشتهايد را باز كنيد و آن را روي نسخه دوم ASP.NET تنظيم كنيد و دوباره سايت را اجرا نماييد. همه چيز مانند قبل بدون تغيير قابلمشاهده خواهد بود.
اما اجازه دهيد ببينيم تغييرات در كجا رخ دادهاند. اگر معماري يك نرمافزار تحت وب را مطابق با معماري معروف سه لايه (3Tier) فرض كنيم، يعني ساختار نرمافزار يك سايت از لايههاي نمايش (Presentation)، موتور اصلي نرمافزار (Business Layer) و ارتباط با پايگاه دادهها (Data Layer) تشكيل شده باشد، آنگاه ميتوان گفت كه در
ASP.NET 2.0 بيشترين و مهمترين تغييرات در لايه نمايش رخ دادهاند؛ هرچند كه بهبودهايي در دو لايه ديگر نيز رخ داده و قابليتهاي سودمند و جالبي نيز به كل مجموعه افزوده شده است.
در حقيقت ميتوان گفت كه ASP.NET 2.0 شكل رسمي و نظام يافته اغلب قابليتها و ويژگيهايي است كه برنامهنويسان حرفهاي ASP.NET 1.x قبلاً آنها را به صورت دستي و با ابتكار خودشان به وجود آورده بودند. بنابراين تنها بخش كوچكي از قابليتهاي جديد ASP.NET 2.0 چيزهايي هستند كه در پلتفرم ASP.NET 1.x قابل حصول نبودند. اگر جزو آن دسته از طراحان وب هستيد كه متكي به چارچوب اصلي ASP.NET 1.x هستند و خودشان تلاش چنداني در توسعه مكانيزمهاي عناصر پايه ASP.NET به كار نميبرند، ASP.NET 2.0 حرفهاي زيادي براي شما دارد.
ولي اگر جزو آن دسته از برنامهنويسان هستيد كه با استفاده از نمونه سورس كدهاي مجاني در اينترنت يا با تكيه بر خلاقيت خودتان، اشيا و قابليتهاي پايهاي ASP.NET 1.x را توسعه دادهايد و كامپوننتها و قابليتهاي جديدي ايجاد كردهايد، ممكن است هنگام رجوع به قابليتهاي جديد نسخه دوم، در انتخاب ميان سورس كد خودتان و شيوه جديد بهكار رفته در نسخه دوم بر سر دوراهي قرار بگيريد. خوشبختانه ASP.NET 2.0 راهي را پيش روي اين دسته از برنامهنويسان گذاشته كه به كمك آن ميتوانند به يك وضعيت متعادل از هر دو حالت برسند كه تركيبي از سورس كد قبلي خودتان و قابليتهاي جديد نسخه دوم است. در اين مقاله مفصلاً به اين موضوع خواهيم پرداخت، اما پيش از آن اجازه بدهيد مرور سريعي بر تعدادي از ويژگيهاي آشكار پلتفرم ASP.NET 2.0 داشته باشيم.
برخي ويژگيهاي پلتفرم ASP.NET 2.0
1- براي آشنايي با فضاي كلي برنامه نويسي در Visual Studio 2005 خوب است قبل از آموختن ASP.NET 2.0 به مقالات و كتابهاي تأليف شده درباره محيط برنامه نويسي ويژوال بيسيك 2005 يا سي شارپ 2005 نگاهي بيندازيد. همانطور كه ميدانيد ASP.NET 2.0 بر شالوده فناوري دات نت 2 بنا شده است و بدون آشنايي با شيوه برنامهنويسي با يكي از زبانهاي داتنت2 نميتوانيد از ASP.NET 2.0 استفاده كنيد. يك نمونه از اين مقالات قبلاً در ماهنامه شبكه (شماره 65) به چاپ رسيده است. همچنين خواندن مقالات نگاهي به قابليتهاي جديد 2005 SQL Server (شماره 68) و كسبوكار هوشمند در SQL Server 2005 در شماره 69 را به منظور آشنايي با نرمافزار 2005 SQL Server توصيه ميكنم.
2- فايلهاي موسوم به <پروژه> در ويژوال استوديوي 2005 حذف شدهاند و اكنون همه چيز در فايل solution هر پروژه قرار دارد. بنابراين مديريت پروژههاي ASP.NET اكنون آسانتر از گذشته است و سايتها ميتوانند به سادگي از مكان فيزيكي فعلي خود باز شوند.
3- در محيط Visual Web Developer 2005 يا Visual Studio 2005، يعني محيطي كه برنامههاي ASP.NET 2.0 داخل آن نوشته ميشوند، دو روش براي اجراي سايتها و صفحات دايناميك وجود دارد. روش اول همان روش قديمي است. به اين ترتيب كه يك وبسايت روي IIS تعريف ميكنيد و سپس هنگام تعريف يك پروژه جديد، آدرسHTTP آن سايت را به ويژوال استوديو ميدهيد تا فايلهاي پروژه را آنجا بگذارد. در اين صورت هنگام بازكردن و اجراي سايت، اين صفحات روي آدرس HTTP سايت مربوطه باز ميشوند. در اين حالت شما براي آزمايش كاركرد سايتي كه درست كردهايد، نيازمند اجراي وب سرور IIS هستيد.
شكل 2
در روش دوم كه روش جديدي در ASP.NET 2.0 است نيازي به وجود IIS نيست. اين روش به صورت پيشفرض روي ويژوال استوديوي 2005 تنظيم شده و هنگام آزمايش و مشاهده يك صفحه دايناميك در حالت اجرا، يك وب سرور كوچك روي يك پورت تصادفي خاص (روي http://localhost) اجرا ميشود و صفحات سايت به كمك آن قابل اجرا و مشاهده خواهند بود. (شكل 2)
اين روش سه مزيت دارد كه عبارتنداز:
●نيازي به نصب IIS نيست. بنابراين ميتوان كار برنامهنويسي را روي يك ويندوز دسكتاپ (مثلاً اكسپي) انجام داد. ضمناً نيازي به نصب نسخه استاندارد SQL Server هم نيست؛ زيرا ويژوال استوديو به روش مشابهي ميتواند به كمك يك نرمافزار كوچكتر به نام SQL Server 2005 Express Edition كه همراه ويژوال استوديو نصب ميشود، نياز به وجود يك پايگاه اطلاعاتي را تأمين كند.
● عدم نياز به فايلهاي موسوم به <پروژه>. هر سايتي ميتواند از محل فيزيكي خودش به آساني باز شود؛ زيرا اجباري در وابسته كردن پروژه به يك IP خاص نيست.
● امنيت بيشتر در محيط برنامه نويسي. عدم نياز به IIS براي تست صفحات عملاً به اين معنا است كه ميتوانيد اصلاً IIS را نصب نكنيد و لابد ميدانيد كه هرچه تعداد سرويسهاي درحال اجرا روي يك سيستم كمتر باشد، امنيت آن بيشتر است. ضمن اينكه اجراي سايت روي يك پورت تصادفي از localhost امكان حدسزدن URL صفحات پروژه را براي هكرها دشوار ميسازد.
4- ويژوال استوديوي 2005 بر خلاف نسخه 2003 همه روشهاي دسترسي به يك سايت راه دور را به صورت مناسب و آسان در اختيار برنامهنويس ميگذارد. بنابراين اگر ميخواهيد سايت پروژه خود را از طريق FTP يا از طريق شبكه (فايل سيستم) آپلود كنيد، ابزار قدرتمندي براي اين منظور در اختيار شماست. شكل 3 نمايي از ابزار Copy Web Site را نشان ميدهد. به كمك اين ابزار ميتوانيد پروژه خود را مستقيماً به سايت مقصد آپلود كنيد.
شكل 3
5- ويژوال استوديوي 2005 امكانات مفصلي براي كار با بانكهاي اطلاعات دارد. به گونهاي كه شما را از مراجعه مستقيم به اينترفيس مديريت SQL Server يا ديگر بانكهاي اطلاعاتي تقريباً بينياز ميكند. ميتوانيد به كمك اين ابزارها جداول بانك اطلاعاتي خود را طراحي كنيد يا براي اجراي فرامين مختلف روي بانكاطلاعاتي Stored Procedure بنويسيد (شكل 4) و اين توابع را همانجا داخل ويژوال استوديوي اشكالزدايي (Debug) نماييد. ميكوشيم روش استفاده از اين ابزارها و امكانات را در شمارههاي آتي ماهنامه به تفصيل شرح دهيم.
شكل 4
6- شيوه Code-behind در ASP.NET 2.0 متحول شده است. به اين صورت كه ديگر لازم نيست متغيرهاي عضو(Member Variables) را در ابتداي سورس كد پشت هر صفحه اعلان (Declare) كنيد. فناوري ASP.NET 2.0 از يك سازوكار جديد به نام Partial Class استفاده ميكند كه به موتور داتنت امكان ميدهد تمام سورس كد صفحه را به صورت دايناميك و در همان زمان اجرا كامپايل كند و داخل يك كلاس بگذارد. به اين ترتيب سهولت زيادي در استفاده از شيوه Code-behind پديد ميآيد؛ زيرا ديگر لازم نيست به محض افزودن يك Server Control به صفحه، Event Handler آن را در كد پشت صفحه نيز معرفي كنيد.
شكل 5
در ASP.NET 1.x اين كار ضروري است. به همين جهت، به مجرد اعمال كوچكترين تغييري در يكي از صفحاتي كه از شيوه Code-behind استفاده ميكند، بايد كل پروژه را دوباره كامپايل و آپلود كنيد. اين مشكل در ASP.NET 2.0 به كلي حذف شده است. به اين ترتيب سرعت پيشبرد پروژههاي طراحي سايت افزايش مييابد و ايجاد تغييرات در صفحات، مستلزم كامپايل كردن مجدد پروژه نيست. شكل 5 سورس كد پشت صحنه يك صفحه دايناميك را نشان ميدهد كه مملو از انواع Server Controlها است، ولي Code-behind آن فقط سه خط است كه شامل اعلان Partial Class همان صفحه است و خبري از اعلان Event Handlerها نيست. بقيه كد صفحه (مانند كد تابع Page Load) را ميتوانيد همچون سابق بيفزاييد.
7- مكانيزم مشابهي براي كلاسهاي مستقل نيز پيشبيني شده است. به اين ترتيب كه ميتوانيد علاوه بر آپلود كردن كلاسهاي كامپايل شده به صورت dll داخل پوشه bin، سورس بعضي از كلاسها را داخل پوشه App&Code بگذاريد. اين كلاسها در ابتدا كامپايل نميشوند، اما در زمان اجراي نرمافزار، به مجرد نياز به آنها، كامپايل ميشوند و قابل استفاده خواهند بود.
معماري و مدل Provider در ASP.NET 2.0
همانطور كه پيشتر هم گفتيم، معماري ASP.NET 2.0 به گونهاي است كه ميتوانيد هم از كدهايي كه قبلاً نوشتهايد استفاده كنيد و هم از ويژگيها و قابليتهاي نسخه دوم اين فناوري بيبهره نمانيد. اين ويژگي كه در حقيقت مهمترين ويژگي ASP.NET 2.0 است، از طريق مدلي به نام Provider Model فراهم ميشود. بسياري از قابليتهاي ASP.NET 2.0 از طريق Providerها در اختيار برنامهنويس قرار ميگيرند.
Provider به زبان ساده يك كامپوننت يا شيء قابل اتصال (Pluggable) است كه ميتوان قابليتهاي آن را توسعه داد يا به كلي آن را با يك كد موجود تعويض كرد. منطق Provider ها در حقيقت از همان منطق شيء گرايي در برنامه نويسي الهام گرفته است. به بيان ديگر، ميتوانيد كاركرد و عملكرد آن قسمت از پلتفرم ASP.NET 2.0 را كه با مدل Provider نوشته شده است توسعه دهيد يا كالبد آن را به كلي با كد دلخواه خودتان عوض كنيد. آنچه براي موتور ASP.NET 2.0 مهم است اينترفيس و Syntax اين Providerها است و كاري با محتواي درون آنها ندارد.
بنابراين اگر از عملكرد قسمتي از ASP.NET 2.0 راضي نيستيد، ميتوانيد كد جديدي براي انجام وظايف آن بنويسيد. در اينصورت موتور ASP.NET 2.0 به طور خودكار كد شما را اجرا خواهد كرد. سيستم مديريت كاربران
(User Membership)، مديريت حالت (Session State Management)، معماري شخصيسازي (Personalization) و ماجول Site Navigation در نسخه دوم ASP.NET از جمله قسمتهايي هستند كه با مدل Provider نوشته شدهاند و شما ميتوانيد از قابليتهاي آنها استفاده كنيد يا كدي را كه قبلاً خودتان نوشتهايد، جايگزينشان كنيد.
مثلاً احتمال زيادي دارد كه تاكنون كلاسي براي انجام كارهاي امنيتي مانند Login و نگهداشتن اطلاعات كاربراني كه وارد سيستم شدهاند و نيز مديريت سطح دسترسي آنان نوشته باشيد. اگر بخواهيد پلتفرم كاري خود را به
ASP.NET 2.0 منتقل كنيد و مايل باشيد از API جديد اين نسخه براي كارهاي امنيتي استفاده كنيد، بايد سورس كد قبلي خود را كنار بگذاريد. اگر براي نوشتن اين كد زحمت زيادي كشيده باشيد، چنين كاري مطلوب شما نيست.
پلتفرم ASP.NET 2.0 اين امكان را در اختيار شما ميگذارد كه راهي براي استفاده از كد موجود خود پيدا كنيد.
در حقيقت معماري ASP.NET 2.0 با الهام از منطق شيء گرايي، طوري نوشته شده است كه شما بتوانيد ازSyntax متدها (توابع) و خواص (Properties) كلاسهاي نوشته شده در اين نسخه استفاده كنيد؛ بدون اينكه مجبور باشيد به كد داخل اين متدها و خواص محدود بمانيد. بنابراين Providerها پوستههايي هستند كه ميتوانيد دور كد موجود خود بكشيد. طوري كه موتور ASP.NET 2.0 بتواند زبان آن را بفهمد و با آن كار كند.
فايده اين كار چيست؟ مزيت اين مدل هنگامي آشكار ميشود كه شما بدانيد برخي قابليتها در ASP.NET 2.0 به يكديگر وابستهاند. به عنوان مثال، ماجول شخصيسازي به ماجول امنيتي وابستگي دارد. بنابراين اگر بخواهيد از اولي استفاده كنيد، بايد Syntax ماجول دوم طوري باشد كه ASP.NET 2.0 منطقش را درك كند. اگر كد موجود خود را بدون تغيير به درون يك برنامه ASP.NET 2.0 تزريق كنيد، ماجول Personalization منطق آن را درك نخواهد كرد؛ هرچند كه ميتوانيد همچون گذشته كارهاي مربوط به Login و سطح دسترسي كاربران را به كمك كد دستساز خود انجام دهيد.
علاوه بر اين، استفاده از مدل Provider اين حُسن را دارد كه در آينده نيز اگر قابليت جديدي به ASP.NET افزوده شود، شما همچنان ميتوانيد ميان كد موجود خود و API جديد پل ارتباطي برقرار كنيد. مايكروسافت براي آن دسته از برنامهنويسان كه مايل به استفاده از مدل Provider براي تزريق كد خود به ساختار ASP.NET 2.0 هستند، يكToolkit فراهم كرده است كه ميتوانيد آن را به همراه يك دوجين مقاله آموزشي از آدرس انتهاي مقاله (1) دريافت كنيد.
شكل 6
شكل 7
شكل 8
تصاوير 6 و 7 و 8 مثال بسيار سادهاي از منطق اين مدل را نشان ميدهد. در شكل 6 شما تصوير قسمتي از يك صفحه به نام login.aspx را در يكي از مثالهاي آموزشي ASP.NET 2.0 مشاهده ميكنيد كه Username وPassword كاربر را ميگيرد و عمليات احراز هويت و تصديق كاربر را انجام ميدهد. با اين وجود، اگر به كد پشت اين صفحه مراجعه كنيد، با كمال تعجب هيچ كدي براي Authentication در آنجا پيدا نخواهيد كرد.
پس اين كار چگونه صورت ميگيرد؟ اگر به سورس HTML صفحه مراجعه كنيد (شكل 7) متوجه ميشويد كه از دو سه كنترل جديد به نامهاي CreateUserWizard و CreateUserWizardStep و CompleteWizardStep استفاده شده است. اين كنترلها عمليات login را توسط API پيش فرض ASP.NET 2.0 براي اين منظور انجام ميدهند.
اگر ميخواهيد بدانيد كدام تابع دقيقاً اين كار را انجام ميدهد، بايد به كلاس Membership مراجعه كنيد. در آنجا تابعي به نام ValidateUser خواهيد يافت.
در شكل 8 تعريف اين تابع را ميبينيد. اين، همان جايي است كه ميتوانيد كد خود را از طريق مدل Providerجايگزين كد موجود كنيد. در حقيقت تابع Membership.Provider.ValidateUser از نوع MustOverride است و بايد پياده سازي خاصي روي آن صورت بگيرد تا قابل استفاده باشد. موتور ASP.NET 2.0 پيادهسازي خاص خود را از طريق Membership.ValidateUser در اختيار شما ميگذارد.
شكل 1
تازههاي ASP.NET 2.0
اولين سؤالي كه براي هر برنامهنويس علاقمند به ASP.NET به وجود ميآيد اين است كه نسخه دوم اين فناوري چه ويژگيها و قابليتهاي جديدي دارد و كدام قسمتها نسبت به نسخه اول دچار تغيير و تحول شدهاند و اگر كسي بخواهد پلتفرم برنامهنويسي خود را به ASP.NET 2.0 منتقل كند، آيا مجبور است تمام دانش و تجربه خود در زمينه ASP.NET 1.x را دور بريزد و از نو بياموزد؟
با خواندن اين مقاله پاسخ همه اين سؤالات را خواهيد يافت. خوشبختانه معماري ASP.NET 2.0 به گونهاي است كه لازم نيست زحمات و تجربيات گرانبهاي خود در كار با ASP.NET 1.x را دور بريزيد.
ميتوانيد از قابليتهاي جديد نسخه دوم استفاده كنيد و همزمان سورس كدهايي كه با ASP.NET 1.x نوشتهايد را با كمي تغيير، در پلتفرم جديد مورد بهرهبرداري قراردهيد.
خبر خوب اين است كه ASP.NET 2.0 صددرصد با ASP.NET 1.x سازگار است. بنابراين ميتوانيد برنامه
ASP.NET 1.x خود را بدون حتي يك خط تغيير در سورس كد روي سروري كه براي اجراي ASP.NET 2.0 تنظيم شده است، اجرا كنيد. شكل 1 نمايي از پنجره تنظيمات يك سايت روي IIS 6.0 را نشان ميدهد كه امكان تغيير دادن فناوريASP.NET را از نسخه يك به دو و يا برعكس فراهم ميكند.
اين tab ويژه، پس از نصب NET Framework 2.0 روي ويندوز سرور، به ساير Tabها در پنجره تنظيمات سايت افزوده ميشود. براي آزمودن ادعاي فوق، كافي است پنجره تنظيمات سايتي كه هماكنون با ASP.NET 1.x نوشتهايد را باز كنيد و آن را روي نسخه دوم ASP.NET تنظيم كنيد و دوباره سايت را اجرا نماييد. همه چيز مانند قبل بدون تغيير قابلمشاهده خواهد بود.
اما اجازه دهيد ببينيم تغييرات در كجا رخ دادهاند. اگر معماري يك نرمافزار تحت وب را مطابق با معماري معروف سه لايه (3Tier) فرض كنيم، يعني ساختار نرمافزار يك سايت از لايههاي نمايش (Presentation)، موتور اصلي نرمافزار (Business Layer) و ارتباط با پايگاه دادهها (Data Layer) تشكيل شده باشد، آنگاه ميتوان گفت كه در
ASP.NET 2.0 بيشترين و مهمترين تغييرات در لايه نمايش رخ دادهاند؛ هرچند كه بهبودهايي در دو لايه ديگر نيز رخ داده و قابليتهاي سودمند و جالبي نيز به كل مجموعه افزوده شده است.
در حقيقت ميتوان گفت كه ASP.NET 2.0 شكل رسمي و نظام يافته اغلب قابليتها و ويژگيهايي است كه برنامهنويسان حرفهاي ASP.NET 1.x قبلاً آنها را به صورت دستي و با ابتكار خودشان به وجود آورده بودند. بنابراين تنها بخش كوچكي از قابليتهاي جديد ASP.NET 2.0 چيزهايي هستند كه در پلتفرم ASP.NET 1.x قابل حصول نبودند. اگر جزو آن دسته از طراحان وب هستيد كه متكي به چارچوب اصلي ASP.NET 1.x هستند و خودشان تلاش چنداني در توسعه مكانيزمهاي عناصر پايه ASP.NET به كار نميبرند، ASP.NET 2.0 حرفهاي زيادي براي شما دارد.
ولي اگر جزو آن دسته از برنامهنويسان هستيد كه با استفاده از نمونه سورس كدهاي مجاني در اينترنت يا با تكيه بر خلاقيت خودتان، اشيا و قابليتهاي پايهاي ASP.NET 1.x را توسعه دادهايد و كامپوننتها و قابليتهاي جديدي ايجاد كردهايد، ممكن است هنگام رجوع به قابليتهاي جديد نسخه دوم، در انتخاب ميان سورس كد خودتان و شيوه جديد بهكار رفته در نسخه دوم بر سر دوراهي قرار بگيريد. خوشبختانه ASP.NET 2.0 راهي را پيش روي اين دسته از برنامهنويسان گذاشته كه به كمك آن ميتوانند به يك وضعيت متعادل از هر دو حالت برسند كه تركيبي از سورس كد قبلي خودتان و قابليتهاي جديد نسخه دوم است. در اين مقاله مفصلاً به اين موضوع خواهيم پرداخت، اما پيش از آن اجازه بدهيد مرور سريعي بر تعدادي از ويژگيهاي آشكار پلتفرم ASP.NET 2.0 داشته باشيم.
برخي ويژگيهاي پلتفرم ASP.NET 2.0
1- براي آشنايي با فضاي كلي برنامه نويسي در Visual Studio 2005 خوب است قبل از آموختن ASP.NET 2.0 به مقالات و كتابهاي تأليف شده درباره محيط برنامه نويسي ويژوال بيسيك 2005 يا سي شارپ 2005 نگاهي بيندازيد. همانطور كه ميدانيد ASP.NET 2.0 بر شالوده فناوري دات نت 2 بنا شده است و بدون آشنايي با شيوه برنامهنويسي با يكي از زبانهاي داتنت2 نميتوانيد از ASP.NET 2.0 استفاده كنيد. يك نمونه از اين مقالات قبلاً در ماهنامه شبكه (شماره 65) به چاپ رسيده است. همچنين خواندن مقالات نگاهي به قابليتهاي جديد 2005 SQL Server (شماره 68) و كسبوكار هوشمند در SQL Server 2005 در شماره 69 را به منظور آشنايي با نرمافزار 2005 SQL Server توصيه ميكنم.
2- فايلهاي موسوم به <پروژه> در ويژوال استوديوي 2005 حذف شدهاند و اكنون همه چيز در فايل solution هر پروژه قرار دارد. بنابراين مديريت پروژههاي ASP.NET اكنون آسانتر از گذشته است و سايتها ميتوانند به سادگي از مكان فيزيكي فعلي خود باز شوند.
3- در محيط Visual Web Developer 2005 يا Visual Studio 2005، يعني محيطي كه برنامههاي ASP.NET 2.0 داخل آن نوشته ميشوند، دو روش براي اجراي سايتها و صفحات دايناميك وجود دارد. روش اول همان روش قديمي است. به اين ترتيب كه يك وبسايت روي IIS تعريف ميكنيد و سپس هنگام تعريف يك پروژه جديد، آدرسHTTP آن سايت را به ويژوال استوديو ميدهيد تا فايلهاي پروژه را آنجا بگذارد. در اين صورت هنگام بازكردن و اجراي سايت، اين صفحات روي آدرس HTTP سايت مربوطه باز ميشوند. در اين حالت شما براي آزمايش كاركرد سايتي كه درست كردهايد، نيازمند اجراي وب سرور IIS هستيد.
شكل 2
در روش دوم كه روش جديدي در ASP.NET 2.0 است نيازي به وجود IIS نيست. اين روش به صورت پيشفرض روي ويژوال استوديوي 2005 تنظيم شده و هنگام آزمايش و مشاهده يك صفحه دايناميك در حالت اجرا، يك وب سرور كوچك روي يك پورت تصادفي خاص (روي http://localhost) اجرا ميشود و صفحات سايت به كمك آن قابل اجرا و مشاهده خواهند بود. (شكل 2)
اين روش سه مزيت دارد كه عبارتنداز:
●نيازي به نصب IIS نيست. بنابراين ميتوان كار برنامهنويسي را روي يك ويندوز دسكتاپ (مثلاً اكسپي) انجام داد. ضمناً نيازي به نصب نسخه استاندارد SQL Server هم نيست؛ زيرا ويژوال استوديو به روش مشابهي ميتواند به كمك يك نرمافزار كوچكتر به نام SQL Server 2005 Express Edition كه همراه ويژوال استوديو نصب ميشود، نياز به وجود يك پايگاه اطلاعاتي را تأمين كند.
● عدم نياز به فايلهاي موسوم به <پروژه>. هر سايتي ميتواند از محل فيزيكي خودش به آساني باز شود؛ زيرا اجباري در وابسته كردن پروژه به يك IP خاص نيست.
● امنيت بيشتر در محيط برنامه نويسي. عدم نياز به IIS براي تست صفحات عملاً به اين معنا است كه ميتوانيد اصلاً IIS را نصب نكنيد و لابد ميدانيد كه هرچه تعداد سرويسهاي درحال اجرا روي يك سيستم كمتر باشد، امنيت آن بيشتر است. ضمن اينكه اجراي سايت روي يك پورت تصادفي از localhost امكان حدسزدن URL صفحات پروژه را براي هكرها دشوار ميسازد.
4- ويژوال استوديوي 2005 بر خلاف نسخه 2003 همه روشهاي دسترسي به يك سايت راه دور را به صورت مناسب و آسان در اختيار برنامهنويس ميگذارد. بنابراين اگر ميخواهيد سايت پروژه خود را از طريق FTP يا از طريق شبكه (فايل سيستم) آپلود كنيد، ابزار قدرتمندي براي اين منظور در اختيار شماست. شكل 3 نمايي از ابزار Copy Web Site را نشان ميدهد. به كمك اين ابزار ميتوانيد پروژه خود را مستقيماً به سايت مقصد آپلود كنيد.
شكل 3
5- ويژوال استوديوي 2005 امكانات مفصلي براي كار با بانكهاي اطلاعات دارد. به گونهاي كه شما را از مراجعه مستقيم به اينترفيس مديريت SQL Server يا ديگر بانكهاي اطلاعاتي تقريباً بينياز ميكند. ميتوانيد به كمك اين ابزارها جداول بانك اطلاعاتي خود را طراحي كنيد يا براي اجراي فرامين مختلف روي بانكاطلاعاتي Stored Procedure بنويسيد (شكل 4) و اين توابع را همانجا داخل ويژوال استوديوي اشكالزدايي (Debug) نماييد. ميكوشيم روش استفاده از اين ابزارها و امكانات را در شمارههاي آتي ماهنامه به تفصيل شرح دهيم.
شكل 4
6- شيوه Code-behind در ASP.NET 2.0 متحول شده است. به اين صورت كه ديگر لازم نيست متغيرهاي عضو(Member Variables) را در ابتداي سورس كد پشت هر صفحه اعلان (Declare) كنيد. فناوري ASP.NET 2.0 از يك سازوكار جديد به نام Partial Class استفاده ميكند كه به موتور داتنت امكان ميدهد تمام سورس كد صفحه را به صورت دايناميك و در همان زمان اجرا كامپايل كند و داخل يك كلاس بگذارد. به اين ترتيب سهولت زيادي در استفاده از شيوه Code-behind پديد ميآيد؛ زيرا ديگر لازم نيست به محض افزودن يك Server Control به صفحه، Event Handler آن را در كد پشت صفحه نيز معرفي كنيد.
شكل 5
در ASP.NET 1.x اين كار ضروري است. به همين جهت، به مجرد اعمال كوچكترين تغييري در يكي از صفحاتي كه از شيوه Code-behind استفاده ميكند، بايد كل پروژه را دوباره كامپايل و آپلود كنيد. اين مشكل در ASP.NET 2.0 به كلي حذف شده است. به اين ترتيب سرعت پيشبرد پروژههاي طراحي سايت افزايش مييابد و ايجاد تغييرات در صفحات، مستلزم كامپايل كردن مجدد پروژه نيست. شكل 5 سورس كد پشت صحنه يك صفحه دايناميك را نشان ميدهد كه مملو از انواع Server Controlها است، ولي Code-behind آن فقط سه خط است كه شامل اعلان Partial Class همان صفحه است و خبري از اعلان Event Handlerها نيست. بقيه كد صفحه (مانند كد تابع Page Load) را ميتوانيد همچون سابق بيفزاييد.
7- مكانيزم مشابهي براي كلاسهاي مستقل نيز پيشبيني شده است. به اين ترتيب كه ميتوانيد علاوه بر آپلود كردن كلاسهاي كامپايل شده به صورت dll داخل پوشه bin، سورس بعضي از كلاسها را داخل پوشه App&Code بگذاريد. اين كلاسها در ابتدا كامپايل نميشوند، اما در زمان اجراي نرمافزار، به مجرد نياز به آنها، كامپايل ميشوند و قابل استفاده خواهند بود.
معماري و مدل Provider در ASP.NET 2.0
همانطور كه پيشتر هم گفتيم، معماري ASP.NET 2.0 به گونهاي است كه ميتوانيد هم از كدهايي كه قبلاً نوشتهايد استفاده كنيد و هم از ويژگيها و قابليتهاي نسخه دوم اين فناوري بيبهره نمانيد. اين ويژگي كه در حقيقت مهمترين ويژگي ASP.NET 2.0 است، از طريق مدلي به نام Provider Model فراهم ميشود. بسياري از قابليتهاي ASP.NET 2.0 از طريق Providerها در اختيار برنامهنويس قرار ميگيرند.
Provider به زبان ساده يك كامپوننت يا شيء قابل اتصال (Pluggable) است كه ميتوان قابليتهاي آن را توسعه داد يا به كلي آن را با يك كد موجود تعويض كرد. منطق Provider ها در حقيقت از همان منطق شيء گرايي در برنامه نويسي الهام گرفته است. به بيان ديگر، ميتوانيد كاركرد و عملكرد آن قسمت از پلتفرم ASP.NET 2.0 را كه با مدل Provider نوشته شده است توسعه دهيد يا كالبد آن را به كلي با كد دلخواه خودتان عوض كنيد. آنچه براي موتور ASP.NET 2.0 مهم است اينترفيس و Syntax اين Providerها است و كاري با محتواي درون آنها ندارد.
بنابراين اگر از عملكرد قسمتي از ASP.NET 2.0 راضي نيستيد، ميتوانيد كد جديدي براي انجام وظايف آن بنويسيد. در اينصورت موتور ASP.NET 2.0 به طور خودكار كد شما را اجرا خواهد كرد. سيستم مديريت كاربران
(User Membership)، مديريت حالت (Session State Management)، معماري شخصيسازي (Personalization) و ماجول Site Navigation در نسخه دوم ASP.NET از جمله قسمتهايي هستند كه با مدل Provider نوشته شدهاند و شما ميتوانيد از قابليتهاي آنها استفاده كنيد يا كدي را كه قبلاً خودتان نوشتهايد، جايگزينشان كنيد.
مثلاً احتمال زيادي دارد كه تاكنون كلاسي براي انجام كارهاي امنيتي مانند Login و نگهداشتن اطلاعات كاربراني كه وارد سيستم شدهاند و نيز مديريت سطح دسترسي آنان نوشته باشيد. اگر بخواهيد پلتفرم كاري خود را به
ASP.NET 2.0 منتقل كنيد و مايل باشيد از API جديد اين نسخه براي كارهاي امنيتي استفاده كنيد، بايد سورس كد قبلي خود را كنار بگذاريد. اگر براي نوشتن اين كد زحمت زيادي كشيده باشيد، چنين كاري مطلوب شما نيست.
پلتفرم ASP.NET 2.0 اين امكان را در اختيار شما ميگذارد كه راهي براي استفاده از كد موجود خود پيدا كنيد.
در حقيقت معماري ASP.NET 2.0 با الهام از منطق شيء گرايي، طوري نوشته شده است كه شما بتوانيد ازSyntax متدها (توابع) و خواص (Properties) كلاسهاي نوشته شده در اين نسخه استفاده كنيد؛ بدون اينكه مجبور باشيد به كد داخل اين متدها و خواص محدود بمانيد. بنابراين Providerها پوستههايي هستند كه ميتوانيد دور كد موجود خود بكشيد. طوري كه موتور ASP.NET 2.0 بتواند زبان آن را بفهمد و با آن كار كند.
فايده اين كار چيست؟ مزيت اين مدل هنگامي آشكار ميشود كه شما بدانيد برخي قابليتها در ASP.NET 2.0 به يكديگر وابستهاند. به عنوان مثال، ماجول شخصيسازي به ماجول امنيتي وابستگي دارد. بنابراين اگر بخواهيد از اولي استفاده كنيد، بايد Syntax ماجول دوم طوري باشد كه ASP.NET 2.0 منطقش را درك كند. اگر كد موجود خود را بدون تغيير به درون يك برنامه ASP.NET 2.0 تزريق كنيد، ماجول Personalization منطق آن را درك نخواهد كرد؛ هرچند كه ميتوانيد همچون گذشته كارهاي مربوط به Login و سطح دسترسي كاربران را به كمك كد دستساز خود انجام دهيد.
علاوه بر اين، استفاده از مدل Provider اين حُسن را دارد كه در آينده نيز اگر قابليت جديدي به ASP.NET افزوده شود، شما همچنان ميتوانيد ميان كد موجود خود و API جديد پل ارتباطي برقرار كنيد. مايكروسافت براي آن دسته از برنامهنويسان كه مايل به استفاده از مدل Provider براي تزريق كد خود به ساختار ASP.NET 2.0 هستند، يكToolkit فراهم كرده است كه ميتوانيد آن را به همراه يك دوجين مقاله آموزشي از آدرس انتهاي مقاله (1) دريافت كنيد.
شكل 6
شكل 7
شكل 8
تصاوير 6 و 7 و 8 مثال بسيار سادهاي از منطق اين مدل را نشان ميدهد. در شكل 6 شما تصوير قسمتي از يك صفحه به نام login.aspx را در يكي از مثالهاي آموزشي ASP.NET 2.0 مشاهده ميكنيد كه Username وPassword كاربر را ميگيرد و عمليات احراز هويت و تصديق كاربر را انجام ميدهد. با اين وجود، اگر به كد پشت اين صفحه مراجعه كنيد، با كمال تعجب هيچ كدي براي Authentication در آنجا پيدا نخواهيد كرد.
پس اين كار چگونه صورت ميگيرد؟ اگر به سورس HTML صفحه مراجعه كنيد (شكل 7) متوجه ميشويد كه از دو سه كنترل جديد به نامهاي CreateUserWizard و CreateUserWizardStep و CompleteWizardStep استفاده شده است. اين كنترلها عمليات login را توسط API پيش فرض ASP.NET 2.0 براي اين منظور انجام ميدهند.
اگر ميخواهيد بدانيد كدام تابع دقيقاً اين كار را انجام ميدهد، بايد به كلاس Membership مراجعه كنيد. در آنجا تابعي به نام ValidateUser خواهيد يافت.
در شكل 8 تعريف اين تابع را ميبينيد. اين، همان جايي است كه ميتوانيد كد خود را از طريق مدل Providerجايگزين كد موجود كنيد. در حقيقت تابع Membership.Provider.ValidateUser از نوع MustOverride است و بايد پياده سازي خاصي روي آن صورت بگيرد تا قابل استفاده باشد. موتور ASP.NET 2.0 پيادهسازي خاص خود را از طريق Membership.ValidateUser در اختيار شما ميگذارد.
pooriamirani- کاربر متوسط
- تعداد پستها : 119
تاريخ التسجيل : 2009-10-24
العمر : 38
آدرس پستي : pooriamirani1291@yahoo.com
صفحه 1 از 1
صلاحيات هذا المنتدى:
شما نمي توانيد در اين بخش به موضوعها پاسخ دهيد