» مقالات » مقالات هایبرد » مشکلات شناخته شده XML

مشکلات شناخته شده XML

مشکلات شناخته شده XML

5553  تعداد بازدید  |  یکشنبه 19 مهر ماه 1394

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

 

 

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

مشکل با کاراکترهای غیر ASCLL


اگر سرور پاسخ درخواست را به صورت فایل XML ارسال نکند احتمالا در ارسال کاراکترهای غیر اسکی با روشRESPONSETEXT مشکلی به وجود خواهد آمد. برای مثال کاراکترE . اگر چه مرورگر FIREFOX از عهده چنین مشکلاتی بر خواهد آمد . اما اینترنت اکسپلورر برای اولین بار که درخواست ارسال می گردد چنین مشکلی ندارد. اما مشکلی از جایی آغاز میشود که درخواست ها تکرار شده و اینترنت اکسپلورر از کشی استفاده کنند. در این هنگام است که یک خطا در جاوا اسکریپت پیش می آید.

XML از یک قالب دهی استفاده می کند که با استفاده از RESPONSEXML می توان به فایل XML دسترسی پیدا کرد. این فایلی با کاراکترهای یونیکند -UTF بدون مشکلی کار می کند.

 

مشکل استفاده مجدد از XMLHttpRequest در اینترنت اکسپلورر

اگر شما بعد از ست کردن خصوصیت oNREAD۷sTATEc ANGE متد oPEN را فراخوانی کنید حتما با استفاده مجدد شئ XMLHTTPREQUEST مشکل خواهید داشت. برای آنکه قادر به استفاده مجدد از شئ باشید، اول متد OPEN را فراخوانی کرده سپس خصوصیت ONREADYSTATECHANGE راست کنید. این اتفاقا وقتی حاصلی میشود که اینترنت اکسپلورر با مشاهده مقدار COMPLETE خصوصیت STATUS متدا OPEN را بازسازی می کند.

 

مشکل پشتیبانی مرورگرها

این مشکل که قبلا به آن اشاره شد از تفاوت تعریف شئ XMLHTTPREOUEST در مرورگرهای مایکروسافتی و غیر مایکروسافتی ناشی میشود. در مرورگر مایکروسافتی یعنی اینترنت اکسپلورر برای تعریف یک شئ از نوع XMLHTTPREOUSES باید از ACTIVEXOBJECT استفاده کنیم. البته این مشکلی در اینترنت اکسپلورر حل شده و این شئ به صورت XMLHTTPREOUEST تعریف می شود.

مشکلات دیگر

به عنوان مثال هنوز بسیاری از سایتهای تجارت الکترونیکی که به کار فروش محصولات مشغولند هنگام طی شدن مراحل نهایی خرید آنلاین به کاربر هشدار میدهند که حین پردازشی یک سفارشی یعنی درست در لحظه ای که فرمان نهایی از سوی کاربر ارسال شده است و هنوز صفحه نمایش پیغام ثبت موفقیت آمیز سفارشی یا عدم ثبت آن برای وی نمایش داده نشده) از فشردن کلید REFRESH جدا پرهیز کنند وگرنه ممکن است از کارت اعتبار آنها دوبار پول کسر شود. همچنین استفاده از دکمه های BACK و FORWARD در عملیاتی که به آسانی برگشت پذیر نیستند ممکن است باعث گیج شدن کاربر شود

مثلا اگر نامه های داخلی صندوق پستی خود را پاک کنید، استفاده از دکمه BACK هرگز این عمل را undo نمی کند. همچنین اگر یک قلم کالا به سبد خرید آنلاین خود اضافه کنید، فشردن دکمه ممکن است در ظاهر چنین نشان دهد که آن قلم کالا مجددا از سبد برداشته شده اما در سمت سرور همچنان در سبد خرید کاربر باشد. از آنجا که فناوری ای جکس عمل NAVIGATION یا راهبری در یک سایت را به روندی غیرخطی تبدیل می کند، تمام این مشکلات به شکلی حادتری ممکن است بروز کند. در واقع با حضور AJAX ، کارکرد سیستم HISTORY مرورگر به مساله ای بغرنج تبدیل می شود. زیرا برنامه نویس باید با گنجاندن دکمه ها و فرامین اضافی، مکانیزم UNDO را بازسازی کند و یا موتور ای جکسی را طوری بنویسد که فشردن دکمه BACK خود به خود موجب احظار فرمان UNDO شود. در هر دو صورت کار برنامه نویسی آسان نخواهد بود. البته در این زمینه ترفندها و تکنیک هایی هم ابداع شده است. از جمله، استفاده از تگ IFRAME مخفی در اینترفیس صفحه که موتور ایجکسی بتواند در صورت فشرده شدن دکمه BACK از سوی کاربر، نسخه های پیشین نمایش داده شده از اینترفیس را از انباره HISTORY مرورگر بیرون بکشد و دوباره در چرخه عملیات موتور ای جکسی وارد کند. این ترفند هم اکنون در سرویسی GOOGLEMAPS استفاده می شود.

مشکل دیگری که در رابطه با ایجکس وجود دارد، بی معنی شدن مفهوم BOOKMARK است. بازهم مکانیزم غیرخطی ایجکس مشکل ساز می شود. آیا شما می توانید در نرم افزارهای معمولی دسکتاپ یک لحظه مشخصی را BOOKMARK کنید و دوباره به آن برگردید؟ بعضی از نرم افزارها مانند فتوشاپ (سیستم ACTION HISTOR۷) این کار را انجام می دهند، ولی اغلب نرم افزارها چنین نیستند. در واقع به سختی می توان از لحظات مختلف یک نرم افزار عکسی گرفت و SNAPSHOT تهیه کرد. این کار به یک انباره پیچیده نیاز دارد که هم حالت های مختلف اینترفیس و هم وضعیت های متفاوت داده ها را قبل و پس از تغییرات در خود نگه دارد. البته در مورد AJAX راهکارهایی در این زمینه پیشنهاد شده است. از جمله استفاده ازANCHOR در HTML که پس از علامت در یک URL ظاهر می شود. از آنجایی که جاوا اسکریپت امکان به روز رسانی داینامیک آنکورها را دارد، بعضی برنامه نویسان پیشنهاد کرده اند که از این ترفند برای نگهداری حالات مختلف یک برنامه مبتنی بر ای جکسی استفاده شود. تکنیکی که ممکن است در زمینه حل مشکلی دکمه های BACK و FORWARD نیز سودمند واقع شود..

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

البته برای غلبه بر این مشکل راه حل هایی هم پیشنهاد شده است، از جمله این که شی تقاضای دیالوگ با سایت های دیگر را به یک وب سرویسی روی سایتی که صفحه وب از انجا امده است بفرستد و این وب سرویسی که روی میزبان سایت قرار دارد و با تمام اینترنت در ارتباط است) به صورت یک واسطه عمل کند و تقاضاهای مورد نظر را برای سایت مقصد ارسال کند. این وب سرویسی های واسطه اصطلاحا APPLICATIONPROXY نامیده می شوند. البته ای جکسی مشکلات کوچک و جنبی دیگری هم دارد که چندان مایه نگرانی نیست ولی به هرحال قابل لمسی هستند. به عنوان نمونه، نرم افزارهای مبتنی بر ای جکسی از حجم زیادی جاوا اسکریپت استفاده می کنند که همه اینها در هر SESSION دست کم یک بار باید روی مرورگر بارگذاری شوند. بنابراین اولین باری که چنین اینترفیسی بارگذاری می شود صفحه وبان قدر سنگین می شود که حتی با ارتباط باند پهن هم چند لحظه طول می کشد که صفحه بارگذاری شود

در چنین شرایطی نوشتن یک موتور ای جکس هوشمند که با کمتر میزان کد بتواند بهترین کارکرد را داشته باشد ، خود به یک چالش برنامه نویسی تبدیل می شود ضمن این که کاربران وب در کشورهایی که سرعت دسترسی به اینترنت در آنها به طور معمول زیاد نیست باید هنگام بارگزاری صفحات وب این چنینی صبر پیشه کنند و برنامه نویسان نیز مراقب باشند تا در صورتی که به دلیل کندی خط یا قطع شدن ها لحظه ای آن، کدهای جاوا اسکریپت به طور کامل مرورگر بارگذاری نشانل، نرم افزار د چار خطا و اشتباه نشود و بتواند این مشکلات از طریق بارگذاری مجدد و هوشمندانه کد جاوااسکریپت روی کلاینت، مدیریت کند.

در عین حال وقتی حجم جاوا اسکریپت بارگذاری شده روی کلاینت افزایش می یابد سرعت پردازشی کامپیوتری که کاربر استفاده می کند نیز به یک مسئله تبدیل می شود . به بیان دیگر، ای جکس شدیدا منابع و RESOURCE های سیستم را به کار می گیرد ، چنانکه به جرات می توان گفتی نرم افزارهای مبتنی برAJAXبرای کاربرانی کے 5 کامپیوترهای ضعیف قدیمی استفاده قابل استفاده نیست.

اگر فرض را بر این بگذاریم که این یک مشکل عمومی است و نه مختص وب، یعنی کامپیوترهای قدیمی از اجرای نسخه جدید نرم افزارهای مخصوصی دسکتاپ نیز ناتوانند تا چه برسد به وب ، آنگاه این مشکل چندان اهمیتی ندارد زیرا به مرور زمان ، با جایگزین شدن سیستم های جدید، مسئله حلی خواهد شد. در چنین شرایطی ممکن است کاندی بارگذاری و اجرای کدهای جاوا اسکریپت در نرم افزارهای مبتنی بر ای جکسی عملا مزیت کاهش زمان انتظار برای بارگذاری مجدد صفحه را خنثی کند و نقضی غرضی شود.خوشبختانه مرتبا پردازنده های سریع تری وارد بازار می شوند و می توان امیدوار بود که این مشکل قبل از ان که جدی شود، ناپدید شود.

 


(XMLHttpRequest(XHR چیست ؟(آموزش Ajaz)
جدول و صفحه آرایی (آموزش html)
خصوصیت readyState (آموزش Ajax)