تحت وب

در این نوشته برخی مشخصات عمومی برنامه های تحت وب (web based applications) بررسی می گردد. دقت کنید در این نوشته ما دنبال برنامه های کاربردی هستیم که در محیط web و بر مبنای پروتکل های آن پیاده سازی شده اند. بنابراین این برنامه ها را از مفهوم web site مجزا سازید. ممکن است ما یک وب سایت خیلی خوب داشته باشیم اما برنامه تحت وب خوب روی آن موجود نباشد. نکته دیگر آنکه بستر اجرای برنامه های تحت وب می تواند متفاوت باشد، روش شبکه اینترنت برای کاربردهای عمومی و یا توزیع شده، روی شبکه اینترانت یا اکسترانت برای کاربردهای درون سازمانی و یا برون سازمانی. بنابراین در برخی بخشها و مزایا و معایب، این خود برنامه نیست که مسبب اصلی است، بلکه این بستر استفاده است که یا یک محدودیت و یا یک مزیت را برای ما به ارمغان می آورد.
 - مشخصات کلی:
برنامه های تحت وب معمولا برنامه های هستند که در بیش از سه لایه پیاده سازی شده و اصطلاحا در گروه (Multi Layer applications ) قرار می گیرند. در این برنامه ها حداقل سه لایه واسط کاربری (User Interface Layer) که می تواند روی یک کامپیوتر بسیار سبک اجرا شود (thin client) و توسط نرم افزارهایی استاندارد استفاده شود (مرورگرها یا Browsers) ، یک لایه کاربردی Bussiness Layer که روی یک application server اجرا شده است و یک لایه داده Data Layer که روی یک Data server وجود دارد اجرا می شوند. (دقت کنید به لحاظ سخت افزاری لزومی به سه تا دیدن آن نیست.) این برنامه ها با بهره گیری از پروتکل های وب و TCP/IP با یکدیگر به مبادله اطلاعات می پردازند.


-مزایا:
صرف نظر از یک نرم افزار خاص و به صورت عمومی برای برنامه های تحت وب مزایای زیر متصور است:
-یکپارچگی با محیط های جدید کاربری که کاربران را قادر می سازد از طریق یک مرورگر مشخص هم به داده ها و اطلاعات و هم به برنامه ها و کاربردها تواما دسترسی داشته باشند.
-توزیع شدگی: در صورت اجرای این برنامه ها روی شبکه اینترنت، کاربران می توانند بدون محدودیت جغرافیایی و مکانی مشخص و صرفا با داشتن یک نشانی یا آدرس خاص، به سیستم متصل شده، در صورت نیاز پس از تعیین سطوح دسترسی از امکانات این سیستم ها استفاده نمایند.
- پشتیبانی سهل تر: چون روی کامپیوتر های Client نرم افزار خاصی نصب نمی شود، به سادگی و با به هنگام کردن برنامه یا داده روی سرور ، می توان از اینکه کاربران به آخرین داده یا برنامه دسترسی دارند مطمئن شد.
-نگاه متفاوت در طراحی واسط کاربری: به لحاظ حضور استانداردها یا تکنیک هایی نظیر ابر متن (Hyper Link) ، XML، Ajax ، Comet و … نگاه دیگری به انجام یک کاربرد می شود که معمولا به سلیقه کاربران جدید نزدیک تر است. مخصوصا در محیط های پرتال (Portal servers) نگاه و معماری مبتنی بر سرویس (Service Oriented) می تواند جالب توجه باشد.
-عدم نیاز به سخت افزار قوی و یا سیستم عامل خاص در سطح Client ها: همانگونه که اشاره شد به لحاظ تقسیم شدن پردازش در سطح Client و Server تنها بخش کوچکی در روی کامپیوتر های Clent اجرا می شود (Clent Side) که بیشتر جنبه نمایشی و تنظیم واسط کاربری دارد و پردازش های اصلی که مرتبط با کار با داده و انجام پرس و جو ها را دارند بیشتر روی سرور (Server Side) صورت می گیرد.
-…
- معایب:
- ساختار کند تر: به دو دلیل نرم افزار های تحت وب، نسبت به برنامه های تحت ویندوز کند تر هستند، یک دلیل آن نقش بازی کردن پهنای باند و سرعت تبادل اطلاعات روی شبکه است که با انتقال برنامه از محیط اینترنت به اینترانت و یا استفاده از اینترنت پرسرعت، می توان تا حدودی این مشکل را برطرف نمود. اما بحث دوم که خاصیت برنامه های تحت وب است، معماری Push و Pop رایج است که به دلیل ارسال مداوم درخواست ها از سمت Client به Server و Refresh شدن صفحات بر اثر دریافت پاسخ رخ می دهد. این مساله باعث می شود، در هر بار بازخوانی صفحه بخشی اطلاعات غیر ضروری مبادله شود و یا اینکه برای هر کاری نیاز به درخواست خاص خود و طرح آن با سرور باشد. در سمت Client در این سیستم ها معمولا به دلیل محدودیت Script ها تنها بخشی از عملیات نمایشی و تنظیمات صورت می گیرد. امروزه تلاش شده است با استفاده از تکنولوژی هایی نظیر Ajax همه صفحه بازخوانی نشود و صرفا آن دسته از اطلاعات مورد نیاز از سرور بارگذاری شود و یا از Comet برای ارسال خودکار اطلاعات بدون طرح تقاضای بازخوانی صریح از سمت Client برای رفع این نقص استفاده شود که هم هنوز به دلیل عدم پختگی کامل و وجود ابزارهای مناسب (هر چند این روزها مولفه های زیادی به صورت فروشی و یا متن باز در این زمینه وجود دارد) و هم به دلیل دانش برنامه نویسان قدیمی تر، استفاده محدود تر و پرهزینه تری دارند.
- نگاه ویژه به امنیت : در برنامه های تحت وب، شما باید نگاه ویژه تری به امنیت داشته باشید. اغلب مشاهده کرده ام که Data Layer و Application Layer روی یک سرور نه چندان مطمئن روی اینترنت و یا اینترانت قرار می گیرد که این مساله باعث می شود ریسک امنیتی و خطر حملات و نفوذها بیشتر شود. در وب باید بیشتر از ویندوز توجه نشان داد به این مساله، چون در تحت ویندوز، خود حضور یک برنامه خاص روی Client که می تواند صرفا درخواست های مجاز و محدود را به سمت سرور ارسال نماید بخشی از ریسکهای امنیتی ما را کاهش می دهد.
- سرور گران قیمت : چون اکثر حجم پردازش در سرور صورت می گیرد استفاده از سرورهای پرقدرت برای اینگونه برنامه ها پیشنهاد می شود. در برخی موارد که حجم تراکنش ها بالاست رعایت مواردی نظیر Load Balancing و توزیع کاربردها روی سرورهای مختلف، حائز اهمیت بوده که باعث می شود هم تهیه و هم نگهداری از اینگونه سرورها، مهم تر باشد.
- عدم توانایی کامل در ایجاد محیط های تعاملی : به لحاظ اینکه هنوز ابزارها و مولفه های واسط کاربری تحت وب برای کارکردن مداوم یک کاربر روی نرم افزار مناسب نیست. کاربرانی که به عملیات ورود اطلاعات و یا صدور و ثبت اسناد زیاد و حجیم در سیستم مشغول هستند معمولا نیاز به ابزارها، میانبرها و امکاناتی هستند که بتوانند به درخواست های خود بسیار سریع دسترسی پیدا کنند. در برنامه های تحت وب، پیشتر این امکان غیر ممکن بود اما این روزها، تلاشهای خوبی هم در سطح تولید ابزارهای مناسب و هم در سطح تغییر نگرش به یک کاربرد از Function به Service صورت گرفته است که هنوز به شکل کامل توسط برنامه نویسان ایرانی مورد استفاده قرار نگرفته است.
-نصب و راه اندازی دشوار تر : به لحاظ اینکه باید شما در روی سرور محیط و بستر مناسب برای اجرای یک برنامه تحت وب را آماده کنید، این کار سخت تر از زمانی است که شما یک برنامه تحت ویندوز را نصب می کنید. در اکثر برنامه های تحت ویندوز شما با یک برنامه Installation طرف هستید که یا به صورت کامل و یا به صورت حداکثری عملیات نصب و تنظیم برنامه را انجام می دهند در سمت سرور هم شما کافی است یک DBMS (سیستم مدیریت پایگاه داده) نصب کرده و بانک اطلاعات خود را بارگذاری نمایید. در برنامه های تحت وب جدید تر که مبتنی بر یک CMS یا یک Portal Server هستند، وجود ابزارهای گام به گام wizards برای تنظیم برنامه و پایگاه داده کمک خوبی است، اما کامل نیست.
-…
دقت کنید، همانطور که پیشتر گفته ام مواردی که در مزایا و یا معایب برنامه های تحت وب و یا تحت ویندوز ذکر شد، مواردی است که در اینگونه برنامه ها به صورت عمومی یافت می شود و گرنه نمونه هایی وجود دارد که بر اثر تلاش و هزینه برنامه نویسی و یا استفاده یا عدم استفاده از تکنولوژی های خوب، بهتر یا بدتر از اینگونه برنامه ها باشند. علاوه بر این رشد و توسعه محیط ها، ابزارها، استانداردها و تکنولوژی هایی نظیر NET Framework. ، یا Ajax و یا J2EE باعث غنای بهتر و یا استفاده مناسب تر هم برنامه های تحت ویندوز و هم برنامه های تحت وب شده است.
در پست بعد تلاش می کنم یک جمع بندی بر این مبحث داشته باشم.
همین!

Categories: مهندسي نرم افزار Tags:
  1. ۲۹ فروردین ۱۳۸۷ در ۱۹:۱۵ | #1

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

  2. ۳۰ فروردین ۱۳۸۷ در ۲۰:۰۳ | #2

    در مورد این نکته که نصب خود وب سرور مشکلترین بخش است و برنامه را ساده تر می توان نصب کرد با شما موافقم و حرف شما را کاملا تایید می کنم. اما در مورد برخی بخش ها دیده ام که بچه هایی که برنامه های تحت وب می نویسند، فکری به حال نصب آن نمی کنند و اکثرا خودشان باید آن را نصب و راه اندازی نمایند برخلاف برنامه های تحت ویندوز که همانطور که گفتم با ساخت یک برنامه Installation می توان نصب و راه اندازی را به عهده نیروهای پشتیبانی سپرد.
    نکته مهم آنکه در شرکت خود ما، تجربه برنامه های تحت وب کمتر از برنامه های تحت ویندوز است، شش سالی است که تحت ویندوز می سازیم اما حدود سه سال است که وارد حوزه برنامه های تحت وب نیز شده ایم و شاید این تجربه به خاطر کمبودهای ما در این بخش باشد و شرکتهایی که تخصصی و طولانی مدت در زمینه برنامه های تحت وب (و نه وب سایت) کار کرده اند، به الگوهای مناسبی در نصب و پشتیبانی برنامه های تحت وب خود رسیده باشند.
    همین!

  3. ۳۱ فروردین ۱۳۸۷ در ۱۱:۵۹ | #3

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

  4. mina
    ۵ اردیبهشت ۱۳۸۷ در ۰۳:۳۹ | #4

    مردم برنامه ای رو دوست دارن که کار کردن باهاش راحت باشه همه که مهندس نیستن

  1. بدون بازتاب