تبلیغات
|
آشنائی باASP.NET اهداف
یک مثال ASP تصویر1، نشان دهنده نتایج اجرای یک نمونه برنامه کاربردی ASP می باشد. مایکروسافت یک برنامه کاربردی ISAPI را با IIS نصب می کند که تمامی درخواست ها برای صفحات با پسوند .asp را معین می سازد.سپس این درخواست ها وصفحات اشاره شده در محیط زمان اجرا (run-time) ی ASP.NET اداره می شود. این محیط اجرایی به صفحات اجازه می دهد حاوی کدهایی در بلوک های اسکریپت ویژه باشند که با کاراکترهای <% و %> محدود گردیده است یا حاوی عناصر <script> دارای صفت runat=server باشند. این اسکریپت تمامی پردازش های لازم برای تولید یک صفحه HTML شخصی را در پاسخ به درخواست کاربر به عهده می گیرد. تصویر 1. یک نمونه صفحه Active Server کلاسیک صفحه ASP در این مثال با یک زوج خطوط وابسته به اسکریپت آغاز می شود که زبان را شناسائی و مشخص می سازد که تمامی متغیرها به شکلی واضح بیان می شوند: <%@ Language = VBScript %> <%Option Explicit %> خطوط بعدی، نمونه HTML ای است که یک عنوان بوجود می آورد، یک فُرم HTML تعریف می کند، متنی را به صفحه می افزاید و یک list box کرکره ای را آغاز می کند: < html > < head > < title > products-ASP< / title > < / head > < body > < form action = “products-ASP.asp” method = “post” > Selet a category: < select name = “category” > وارد ساختن کد دستیابی داده در صفحه اکنون، صفحه جالب تر( وپیچیده تر ) می شود؛ چرا که از اشیا ADO برای بازیابی فهرستی از طبقه بندی محصولات ازبانک اطلاعاتی Northwind در یک خدمات دهنده SQL محلی استفاده می کنیم:<% Dim cnn, cmd, rst Set cnn = Server . CreateObject ( “ADODB . Connection” ) ‘ Adjust user name and password, if necessary cnn . Open “Provider = SQLOLEDB . 1; Data Source = ( local ) ; ’’ – & “Initial Catalog = Northwind ; User ID = sa ; password = ; ” ‘ Open a read – only, forward – only, server – side recordset. Set cmd = server . CreateObject ( “ ADODB . Command” ) Cmd . commandText = _ “ SELECT CategoryID , categoryName FROM categories ’’ _ & “ ORDER BY categoryName ; ’’ cmd . ActiveConnection = cnn Set rst = cmd . Execute </body> </html> الگوی شئی ASP کد بالا، برای معرفی اشیا ADO ی بکار رفته جهت دستیابی داده، از روش CreateObject مربوط به شئی Server ASP استفاده می کند. ASPعلاوه بر فراهم آوردن یک موتور اجرای اسکریپت، یک سری شش تایی از اشیا، شامل Server ارائه می نماید که توسعه برنامه های کاربردی وِب را تسهیل می کند. در زیر، خلاصه ای از این اشیا آورده شده است: شئی Request برای خواندن داده ای بکار می رود که درون درخواست HTTP برای صفحه بسته بندی (package) شده است. شئی Response شما را مجاز می سازد که داده از جمله HTML،cookie ها را وارد نمایید یا جهت عنوان ها را به سمت جریان پاسخی هدایت کنید که به سوی پویشگر مشتری ارسال می شود. شئی Session زمانی بوجود می آید که نخستین درخواست یک مشتری معین پردازش می شود و تا زمانی در دسترس می ماند که دوره زمان مهلتی که به دنبال آخرین درخواست مشتری به او داده شده است، به اتمام برسد؛ این امر به شما اجازه می دهد داده ها و اشیائی را که درخواست های چند گانه یک مشتری را پوشش می دهد، ذخیره نمایید. شئی Application شبیه شئی Session است اما داده های آن بین تمامی درخواست های مشتری در طول عمر برنامه کاربردی به اشتراک گذارده می شود و شما را مجاز می سازد که به نوشتن کدی اقدام نمایید که به صورت خودکار به هنگام شروع یا اختتام برنامه های کاربردی به اجرا درآید.شئی Object Context برای اجرا یا خروج از برهم کنش های مدیریت شده از سوی MTS یا COM+ بکار می رود. شئی Server یک سری روش های کمکی (Utility) بنیادی ارائه می دهد که مربوط است به ایجاد اشیاء COM، کد گذاری داده ها به عنوان رشته های HTML و URL که می توان آنها را درون درخواست HTML قرار داد و به پویشگر ارجاع داد، و یافتن مکان های واقعی فایل که مرتبط با مسیرهای مجازی است. به مثال خودمان بازمی گردیم؛ خطوط بعدی کد از شئی ASP Response استفاده می کند تا HTML را وارد پاسخ HTTP نموده، آن را به پویشگر ارجاع دهد. ID طبقه از هر ردیف در recordset ، به عنوان مقداربرای هر ردیف listbox کرکره ای تخصیص می یابد:‘ Use the ADO recordset to populate the dropdown list. Do Until rst . EOF Response . Write ( _ “ < option value = “ “ “ & rst ( “ category ID ’’ ) & ’’ ’’ ’’ ’’ ) اداره کردن postback های ASP یک postback هنگامی رخ می دهد که Active Server Page ، اقدام به ایجاد HTML یی می کند که به کاربر امکان فراخوانی مکرر یک ASP را می دهد. درمثال ما، هر بار که کاربر کلید Show Product را میشارد، Products – ASP.asp صفحه مجددا بارگذاری می شود. علت رخداد این موضوع، ظهور آدرس صفحه در صفت action برچسب (tag) آغازین فُرم HTML است: <form action = “ product – ASP.asp ’’ method = “ post ’’> با فشردن کلید توسط کاربر، یک postback رخ می دهد و فهرست کرکره ای باردیگر تماما پر می شود. اما شما از کاربران می خواهید که طبقه (category ) را به هنگام دریافت صفحه جدید ببینند که اکنون محصولات موجود در آن طبقه را نیز به آنها نشان می دهد. باقیمانده این بخش از کد تضمین می کند که طبقه متناسب با آنچه در درخواست HTTP وجود دارد، در صفحه جدید انتخاب خواهد شد و علاوه براین، نام طبقه را به عنوان متن به هر ردیف list box کرکره ای اضافه می کند:‘ preserve the selected category during postbacks If cstr ( rst ( “ category ID ’’ ) ) = Request ( “ category ’’ ) then Response . Write ( “ selected > ’’ ) Else Response . write ( rst ( “ catgoryName ’’ ) & _ “ < / option > ’’ ) rst . MOVENEXT LOOP Rst . close Set rst = Nothing Set cmd = Nothing % > ترکیب کد و HTML پس صفحه به خاطر یک جفت خط مربوط به اختتام برچسب انتخاب (select tag) و ایجاد کلید submit به HTML بازمی گردد: < / select > < input type = “ submit ” Value = “ Show Product ” > باقیمانده صفحه تنها طی یک postback و بعد ازآن که کاربر یک طبقه را برگزید، رخ می دهد. وقتی کاربران برای نخستین بار صفحه ای را احضار می کنند، تنها box کرکره ای و کلید ظاهر می شود. پس از آن که کاربران یک طبقه را برداشته روی دکمه کلیک می کنند، فهرستی از تمامی محصولات آن طبقه را که در قالب یک جدول HTML است، دریافت می نمایند. برای انجام این کار، ASP بین بخش های کد و بخش های HTML اولیه،جابجا شده در پاسخ به درخواست کاربر جدول را به صورت پویا می سازد: < % ‘ check if a category was selected. If Len ( Request ( “ category ’’ ) ) > 0 Then ‘ create client – side, disconnected recordset ‘ of products having the selected category. Set rst = server.createObject ( “ ADODB.Recordset ’’ ) Rst.CursorLocation = 3 ‘ adUseClient Rst.open_ “ SELECT product ID, productName, UnitsInstock ’’ _ & “ FROM Products WHERE categoryID = _ & Request ( “ category ’’ ), _ ccn, 3, 1 ‘ adOpenstatic, adLockReadOnly set rst.Activeconnection = Nothing cnn.close set cnn = Nothing %> < table > <tr> <th> product ID </ th> <th> product Name < / th> <th> Units In Stock < / th> < /tr> <% ‘ Add a table row for each recordset row. Do Until rst.EOF %> < tr > < td > <% = rst ( “ product ID ’’ ) %> < / td > < td > <% = rst ( “ productName ” ) % > < / td > < td > <% = rst ( “ UnitsInstock ’’ ) % > < / td > < / tr > <% rst.MoveNext Loop Rst.Close Set rst = Nothing %> < / table > < % End If If Not cnn Is Nothing Then Cnn . close Set cnn = Nothing End If %> < / form > < / body > < / html > این نمونه کد نشان دهنده یک آلترناتیو برای استفاده از Response است. کد را برای ساختن HTML با داده های ورودی پویا بنویسید. می توان ریز- کدها را با ریز- کدهای HTML اولیه درهم آمیخته، جریان نهایی را که برای مشتری ارسال می گردد، به وجود آورد. آنچه مشتری می بیند مشتری به هنگام احضار یک Active Server Page هرگز کدی را که به روی خدمات دهنده اجرا می شود، مشاهده نمی کند. پویشگر تنها پاسخ HTML ارسالی را می بیند. در اینجا منبع جانبی مشتری (client-side) برای صفحه ای که درتصویر1 دیدید، آورده شده است که توسط کدی که هم اکنون ملاحظه کردید، به وجود آمد: < html > < head > < title > products – ASP < / title > < / head > < body > < form action = “ products – ASP ’’ method = “ post ’’ > select a category: < select name = “ category ’’ > < option value = “ 1 ’’ > Beverages < / option < option value = “ 2 ’’ > condiments < / option > < option value = “ 3 ’’ > confections < / option > < option value = “ 4 ’’ selected > Dairy products < / option > < option value = “ 5 ’’ > Grains / cereals < / option > < option value = “ 6 ’’ > Meat / poultry < / option > < option value = “ 7 ’’ > produce < / option > < option value = “ 8 ’’ > seafood < / option > < / select > < input type = “ submit ’’ value = “ show products ’’ > < table > < tr > < th > product ID < / th > < th > product Name < / th > < th > Units In stock < / th > < / tr > < tr > < td > 11 < / td > < td > Queso cabrales < / td > < td > 22 < / td > < / tr > ( ردیف های بعدی در جدول به منظور رعایت اختصار حذف شده اند ) < / table > < / form > < / body > < / html > در این مثال ساده، HTML تحویل شده به مشتری بسیار ابتدائی است، اما برنامه کاربردی ASP می تواند برای ایجاد صفحات وب پیچیده و کاملا ویژه اقدام به وارد ساختن styles، گرافیک، کنترل های فرم مخفی و حتی اسکریپت جانبی مشتری نماید. کاستی های ASP با وجود مفید و موفق بودن ASP، این برنامه از محدودیت های عمده و مهمی رنج می برد که انگیزه ای در جهت توسعه ASP.NET بوده اند. کد تفسیر شده و loose تایپ شده موتور اجرای اسکریپت که page Active Server ها به آن متکی است، کدها را هر بار که صفحه احضار می شود، خط به خط تفسیر می کند. به علاوه، با وجود پشتیبانی از متغیرها، تمامی آنها به صورت loose و به عنوان متغیر تایپ می شوند و به هنگام اجرای کد، محدود به گونه های معینی هستند. هردوی این فاکتورها، عملکرد بازداشته شده و پیوند دیرهنگام گونه ها، کار غلط یابی را موقع کدنویسی دشوارتر می سازد. کمبود پشتیبانی Microsoft IntelliSense در محیط های اسکریپت نیز بهره وری برنامه نویس را با مشکل مواجه می سازد. برای غلبه براین محدودیت، بسیاری از توسعه دهندگان ASP تلاش کرده اند با منطق هرچه تمامتر به سوی اجزای خودکاری COM پیش روند که به عنوان نمونه می توان به Active DLL ها که توسط ویژال بیسیک مایکروسافت به وجود می آید، اشاره کرد. متاسفانه، این عمل یک اثر جانبی بسیار نامطلوب به همراه دارد: DLL پس از بارگذاری توسط ASP تا زمان بستن خدمتگزار وِب در حافظه باقی می ماند و این امر، ادامه بکارگیری ASP را بدون پائین آوردن گهگاه خدمتگزار، بسیار دشوار می سازد. همکاری دشوار است اغلب تیم های توسعه وِب متشکل از دو گروه هستند که به شوخی از آنها با عنوان " جوراب سیاه ها " و " دم اسبی ها " یاد می شود. برنامه نویسان با جورابهای سیاهشان مسئول نوشتن کدهای دریافت وارسال داده هستند، در حالی که طراحان دم اسبی مشغول زیبا سازی و جذاب کردن سایت هستند.روشی که ASP در راستای تشویق ترکیب کد با HTML دارد، برای برنامه نویسان و طراحان، کار در یک صفحه، بدون خراب کردن کار یکدیگر را دشوار می سازد. تا حدودی می توان کدها را به بلوک های اسکریپت تفکیک کرد یا آنها را در اشیاء COM کپسول بندی کرد، اما مقداری اختلاط در اغلب پروژه های ASP غیر قابل اجتناب است، واین موضوع روند پیشرفت کار تیم را با کندی مواجه می سازد. توسعه محدود و ابزارهای اشکال زدائی (debugging) Microsoft Visual InterDev، Macromedia Visual UltraDev و سایر ابزارها با فراهم ساختن محیط های توسعه گرافیکی، در جهت بالا بردن بهره وری برنامه ریزان ASP تلاش کرده اند. اما این ابزارها هرگز نتوانسته اند از نظر سهولت کاربرد و سطح مقبولیت عام، به پای ابزارهای توسعه برنامه های کاربردی ویندوز مایکروسافت برسند؛ ابزارهایی چون ویژال بیسیک یا Microsoft Access. اغلب توسعه دهندگان ASP هنوز تا حد قابل ملاحظه ای بر Notepad متکی هستند. بخشی از این موضوع ریشه دراین علت دارد که یک نمونه صفحه ASP ترکیب عناصر از یک طیف از فن آوری های مختلف است، ازجمله VBScript، JavaScript، Cascading Style Sheet ها، HTML پویا، ADO وحتی اخیرا XSL style sheets و XML. اداره تمامی این فن آوری ها برای هر ابزار توسعه ای به تنهایی کار دشواری است. اشکال زدائی بخش غیر قابل اجتناب هر فرآیند توسعه نرم افزار است و ابزارهای اشکال زدائی ASP در حداقل سطح ممکن بوده اند. عبارات را در کد آنها بنویسید تا بتوانید پیشرفت اجرای آن را پیگیری کنید.
فایل های پیکربندی مبتنی بر XML تنظیمات پیکربندی در فایل های XML ذخیره می شوند که شما به راحتی می توانید آن را بخوانید و ویرایش کنید. بعلاوه، شما به آسانی می توانید آنها را به همراه سایرفایل ها دربردارنده برنامه کاربردی خود، در خدمتگزار دیگری کپی کنید. اداره خودکار postback ها و پویشگران مختلف ASP.NET به صورت خودکار حاوی یک کنترل مخفی به روی صفحات وِب است که وضعیت تمامی کنترل ها را روی فرمی که این ویژگی را ممکن ساخته است، به صورت فشرده نگه می دارد. ASP.NET از این داده viewstate برای پر کردن خودکار و کارآمد داده های وارد شده توسط کاربر استفاده می کند. علاوه بر این، ASP.NET قادر است به صورت خودکار به شناسائی پویشگر یا ابزاری بپردازد که برای ارسال درخواست مورد استفاده قرار گرفته است و خروجی را با توانمندی های مشتری متناسب کند. و جالب و سرگرم کننده است ! بسیاری از برنامه نویسان باتجربه از کار توسعه وِب، با وجود اهمیت روزافزون آن گریزان اند، چرا که فرآیند ساخت یک برنامه کاربردی وِب کاری بس کسالت بار و ناهنجار است. برخلاف عمل توسعه نرم افزار که تنها به یک زبان مثل ویژال بیسیک یا C++ متکی است، حوزه وِب شما را وادار می کند که شماری از فن آوری ها و زبان های نامرتبط به یکدیگر را ترکیب و مربوط کنید. مختصر آن که این، کاری آشفته و درهم و برهم است! ASP.NET به طور کامل نیاز شما به فن آوری های استاندارد ازجمله HTML، XML و CSS و بعلاوه زبان منتخب برنامه نویسی تان را مرتفه نمی سازد. اما درخواهید یافت که ASP.NET در عالم توسعه وِب، نقش تاثیر گذاری برعهده دارد، و برای این کار از یک چارچوب کاری همه جانبه برخورداراست که تمامی این فن آوری ها را در برگرفته آنها را در یک محیط توسعه بسیارکارآمدتر- و، بله، جذاب تر- از آنچه قبلا مقدور بود، یکپارچه می کند.
برنامه های کاربردی وِب ASP.NET
NET تنها یک نسخه تازه و توسعه یافته ASP نیست – بلکه یک محصول کاملا جدید و متکی بر یک معماری کاملا نوین برای ساخت برنامه های کاربردی وِب است. یک راه مناسب برای درک این معماری نوین، ایجاد یک برنامه کاربردی جدید وِب ASP.NET درMicrosoft Visual Studio است. ایجاد یک برنامه کاربردی جدید وِب در این معرفی، ما از زبانNET. Visual Studio و Visual Basic.NET استفاده می کنیم. اما برای ساخت برنامه های کاربردی ASP.NET نیازی به ویژال استودیو نیست. شما می توانید این فایل ها را در Notepad یا در ویرایشگر دلخواه خود ایجاد نمایید و می توانید به کمک ابزارهای خط فرمان که به صورت رایگان با چارچوب کاری .NET همراه است، فایل ها را در یک برنامه کاربردی کامپایل کنید. اما اگر یکبار با ویژال استودیو کار کنید، احتمالا آن را از دست نخواهید داد. همچنین شما می توانید علاوه بر ویژال بیسیک از سایر زبانهای .NET هم استفاده کنید. معمول ترین جانشین ویژال بیسیک، C#، یک زبان نوین با قانون نوشتاری مبتنی بر C است که شباهت بسیاری به جاوا دارد. تمامی ویژگی های ASP.NET بدون توجه به زبانی که شما به کار می گیرید، در اختیار شما قرار دارد. |
|
|
| کلیه حقوق این وب نویسه برای ایران کلوپ محفوظ است |