နိဒါန်း အခန်း (၂) အခန်း (၁)

Web Standards

Internet, Web, W3C and HTTP

Internet

ကွန်ပျူတာတွေ တစ်လုံးနဲ့တစ်လုံး အချက်အလက်တွေ အပြန်အလှန် ပေးပို့နိုင်အောင် Wire နဲ့ပဲဖြစ်ဖြစ် Wireless ဖြစ်ဖြစ် ချိတ်ဆက်တာကို Network လို့ခေါ်ပါတယ်။ အင်တာနက်ဆိုတာ Network တွေအချင်းချင်း အပြန်အလှန် ချိတ်ဆက်ပေး ထားတဲ့ International Network ကိုခေါ်တာ ဖြစ်ပါတယ်။ တစ်နည်းအားဖြင့် တစ်ကမ္ဘာလုံး အတိုင်းအတာနဲ့ ကွန်ပျူတာတွေ၊ အခြားသော Devices တွေကို ချိတ်ဆက်ပေး ထားတဲ့ ကွန်ယက်ကြီး တစ်ခုလည်း ဖြစ်ပါတယ်။

1957 ခုနှစ် အောက်တိုဘာလ ၄ ရက်နေ့မှာ ကနေ့ခေတ် နည်းပညာ ကမ္ဘာကြီးကို ဖြစ်ပေါ်လာစေမယ့် အဖြစ်အပျက်တစ်ခု ဖြစ်ပွားခဲ့ပါတယ်။ ဆိုဗီယက်ယူနီယံက ကမ္ဘာ့ပထမဦးဆုံး ဂြိုဟ်တုဖြစ်တဲ့ စပွတ်နစ် (၁) ကို လွတ်တင်နိုင် ခဲ့ခြင်းပဲဖြစ်ပါတယ်။ ဒီအဖြစ်အပျက်ဟာ ကမ္ဘာကြီးကို တုန်လှုပ်သွား စေခဲ့ပါတယ်။ အထူးသဖြင့် အမေရိကန် ပြည်ထောင်စုကိုပါ။ အမေရိကန်ပြည့်ထောင်စု အနေနဲ ကမ္ဘာပတ် လမ်းကြောင်းထဲကို ဂြိုဟ်တုလွတ်တင်ဖို့ ပြင်ဆင်နေဆဲ အချိန်မှာပဲ သူတိုရဲ့ အဓိကပြိုင်ဘက်က အရင်လွတ်တင် နိုင်ခဲ့တဲ့အတွက် အကြီးအကျယ် တုန်လှုပ်သွား ခဲ့ရတာပဲဖြစ်ပါတယ်။

ဒီအဖြစ်အပျက်ကြောင့် ARPA (the Advanced Research Project Agency) ဆိုတဲ့ အဖွဲအစည်းတစ်ခုကို နည်းပညာသစ်တွေ သုတေသနလုပ်နိုင်ရန် ရည်ရွယ်ပြီး အမေရိကန်ပြည်ထောင်စု ကာကွယ်ရေး ဌာနက စတင်ဖွဲစည်း ခဲ့ပါတော့တယ်။ အဲ့ဒီအဖွဲရဲ့ အကျော်ကြားဆုံး ဖန်းတီးမှု့ကတော့ ကနေ့ နည်းပညာ ကမ္ဘာကြီးကို ဖြစ်ပေါ်လာစေတဲ့ အင်တာနက်ပဲ ဖြစ်ပါတယ်။

၁၉၆၀ ပြည့်နှစ်မှာ Joseph Licklider လို့ခေါ်တဲ့ ကွန်ပျူတာသိပ္ပံ ပညာရှင်က Man-Computer Symbiosis လို့ အမည်ပေးထားတဲ့ စာတမ်းတစ်စောင်ကို တင်ပြလာပါတယ်။ အဲ့ဒီစာတမ်းဟာ ကွန်ပျူတာ Network တွေ တည်ဆောက်ဖို့အတွက် စိတ်ကူးအခြေခံတစ်ခု ဖြစ်ခဲ့ပါတယ်။ ၁၉၆၂ ခုနှစ်မှာ Joseph Licklider ဟာ ARPA ရဲ့ Information Process Office ဥက္ကဌအဖြစ်နဲ့ သုတေသနအဖွဲ့ တစ်ခုကို ဖွဲ့စည်းပေးခဲ့ ပါတယ်။ ဒါပေမယ့် သူ့ရဲ့စိတ်ကူးကို ကောင်အထည် မဖော်ဖြစ်ခင်မှာပဲ အဖွဲ့ကနေ ထွက်သွားခဲ့ပါတယ်။

၁၉၆၇ ခုနှစ် အောက်တိုဘာလမှာ ARPANET လို့ အမည်ပေးထားတဲ့ ကွန်ပျူတာ Network အစီအစဉ်ကို စတင် အကောင်အထည် ဖော်ခဲ့ပါတယ်။ ၁၉၆၉ ခုနှစ် ဒီဇင်ဘာလ မှာတော့ ကွန်ပျူတာ Network တစ်ခုကို စတင်ချိတ်ဆက် အသုံးပြုနိုင်ခဲ့ ပါတယ်။ အဲ့ဒီ ပထမဆုံး Network မှာသုံးခဲ့တဲ့ packets switching နည်းစနစ်ဟာ ကနေ့ထိ အသုံးပြုနေဆဲ ဖြစ်ပါတယ်။

ARPANET ရဲ့ packets switching နည်းစနစ်ကို ဗြိတိန်တက္ကသိုလ်တွေ စုပေါင်းထားတဲ့ Network တစ်ခုဖြစ်တဲ့ JANET နဲ့ အများသုံး Network ကုမ္ပဏီတစ်ခုဖြစ်တဲ့ CompuServe အပါအဝင် အခြားအဖွဲ့အစည်း တွေကလည်း အသုံးပြုလာကြ ပါတယ်။ အဲ့ဒီ Network တွေဟာ ကနေ့ခေတ်နဲ့ နှိုင်းယှဉ်ရင် Private Network သာသာမျှသာ ဖြစ်ပါတယ်။

အခြေခံနည်းစနစ်တူပေမယ့် ကွဲပြားခြားနားတဲ့ ဖွဲ့စည်းပုံတွေကြောင့် အဲ့ဒီ Network တွေ တစ်ခုနဲ့တစ်ခု ချိတ်ဆက်ဖို့ ကြိုးစားတဲ့ အခါမှာတော့ အခက်အခဲတွေ ကြုံလာရပါတယ်။ ဒီပြဿနာကို ဖြေရှင်းဖို့ ARPA ရဲ့ Satellite Network Packets Project မှာလုပ်နေတဲ့ Robert Kahn နဲ့ စတန်းဖို့တက္ကသိုလ်က Vinton Cerf တို့ ပူးပေါင်းပြီး မတူညီတဲ့ နက်ဝပ်စနစ်တွေ အတွက် ကြားခံ Mask တစ်ခုအနေနဲ့ ဆောင်ရွက်ပေးနိုင်တဲ့ Protocol တစ်ခုကို ဖန်းတီးပေး ခဲ့ပါတယ်။ ၁၉၇၄ ခုနှစ် ဒီဇင်ဘာလမှာ ဖော်ထုတ်ခဲ့တဲ့ အဲ့ဒီနည်းပညာကို "Internet Transmission Control Program" လို့ ခေါ်ခဲ့ပါတယ်။ Network ရဲ့ လုပ်ဆောင်ချက် တွေကို လျှော့ချပြီး ကွန်ပျူတာကို အဓိက အလုပ်လုပ်ခိုင်း လိုက်တဲ့ နည်းစနစ်တစ်ခုလည်း ဖြစ်ပါတယ်။ ရလဒ်ကတာ့ Network တွေအားလုံးကို ချိတ်ဆက်မယ် ဆိုရင်တောင် ချိတ်ဆက် နိုင်တဲ့ နည်းပညာတစ်ခု ဖြစ်လာတာပါပဲ။

ARPA က လိုအပ်တဲ့ Software တွေကိုပါ တည်ဆောက်ခဲ့ပြီး ၁၉၇၇ ခုနှစ်မှာကတာ့ မတူကွဲပြားတဲ့ နက်ဝပ်သုံးခုကို အောင်အောင်မြင်မြင် ချိတ်ဆက်နိုင် ခဲ့ပါတယ်။ ၁၉၈၁ ခုနှစ်မှာ Protocol ကို လက်စသတ် နိုင်ခဲ့ပြီး ၁၉၈၂ ခုနှစ်မှာကတာ့ “TCP/IP” လို့ခေါ်တဲ့ အဲ့ဒီ Protocol ကို အခြား အဖွဲ့အစည်းတွေကပါ စတင်အသုံးပြု လာကြပါတယ်။ တစ်ကမ္ဘာလုံး အတိုင်းအတာနဲ့ ကွန်ပျူတာ Network တွေကို ချိတ်ဆက်ပေး တော့မယ့် အင်တာနက်ဆိုတာ အဲ့ဒီအချိန်မှာ အစပြုခဲ့တာ ဖြစ်ပါတယ်။

ကနေ့အချိန်မှာတော့ အင်တာနက်ကွန်ယက် ကြီးထဲမှာ Network တွေ၊ ကွန်ပျူတာတွေ သာမက၊ မိုဘိုင်းဖုန်းတွေ၊ Tablet နဲ့ အခြားသော Device တွေလည်း ပါဝင်နေပြီ ဖြစ်ပါတယ်။ အခြားသော Device ဆိုတဲ့ အထဲမှာ အင်တာနက် ချိတ်ဆက်မှု့ ပြုလိုပ်နိုင်တဲ့ ကားတွေ၊ မျက်မှန် (Smart Glass) နဲ့ နာရီ (Smart Watch) တွေအပြင်၊ နောက်ပိုင်းမှာ ဆိုရင် အိမ်သုံး ရေခဲသေတ္တာ၊ အဝတ်လျှော်စက်တွေ အထိ အင်တာနက်ကွန်ယက်မှာ ပါဝင်လာဖို့ ရှိပါတယ်။

အင်တာနက် ကွန်ယက်မှာ ပါဝင်တဲ့ ကွန်ပျူတာနဲ့ Device တိုင်းမှာ IP Address လို့ခေါ်တဲ့ မိမိတို့ကိုယ်ပိုင် လိပ်စာနံပါတ် တစ်ခုစီ ရှိကြပါတယ်။ ဒီလိုချိတ်ဆက် ထားတဲ့ Device တွေဟာ တစ်ခုနဲ့တစ်ခု လိုအပ်သလို အချက်အလက် ပေးပို့ဆက်သွယ် မှုတွေ ပြုလုပ်နိုင်မှာ ဖြစ်ပါတယ်။

ဒါပေမယ့် လက်တွေ့မှာ အင်တာနက်ဆိုတာဟာ ကွန်ပျူတာနဲ့ စက်ပစ္စည်းတွေကို ချိတ်ဆက်ယုံသာ ချိတ်ဆက်ပေး ထားတဲ့ နည်းပညာလို့ နားလည်စေချင်ပါတယ်။ သတင်းပေးပို့ခြင်းလို လုပ်ဆောင်ချက်ကို အင်တာနက်က တိုက်ရိုက် မလုပ်ပါဘူး။ ဒီအင်တာနက်ပေါ်မှာ အခြေခံပြီး ဖန်တီးတီထွင် ထားတဲ့ Email လို နည်းပညာ၊ World Wide Web လို့ နည်းပညာမျိုး တွေက ဆောင်ရွက်ပေးတာ ဖြစ်ပါတယ်။ Email တို့ World Wide Web တို့ကို အချက်အလက်တွေ ပို့ဆောင်ပေးတဲ့ "ကား" လို့ ယူဆပြီး အင်တာနက်ကတော့ အဲ့ဒီကားတွေ သွားလို့ရတဲ့ "လမ်း" လို့ အကြမ်းဖျဉ်း မှတ်ယူနိုင်ပါတယ်။

Email နဲ့ World Wide Web ကဲ့သို့ အင်တာနက် လမ်းမကြီးပေါ်မှာ အချက်အလက်တွေ သယ်ယူပို့ဆောင် ပေးနိုင်တဲ့ အခြား နည်းပညာတွေ ရှိပါသေးတယ်။ Instant Messaging (IM), File Transfer Protocol (FTP), Secure Shell (SSH), Internet Relay Chat (IRC), Voice Over Internet Protocol (VoIP) စတဲ့ နည်းပညာတွေ ဖြစ်ပါတယ်။

World Wide Web (WWW)

၁၉၉၀ ပြည့်နှစ် ဝန်းကျင်မှာ Gopher လို့ခေါ်တဲ့ အင်တာနက် ကွန်ယက်ကို အသုံးပြုပြီး အချက်အလက် တွေကို ဖြန့်ဝေ ပေးနိုင်တဲ့ စနစ်တစ်ခုကို စတင်အသုံးပြု လာကြပါတယ်။ တက္ကသိုလ်တွေမှာ အတော်လေး ကျယ်ကျယ်ပြန့်ပြန့် သုံးခဲ့တဲ့ နည်းပညာ ဖြစ်ပါတယ်။ တက္ကသိုလ် တစ်ခုလုံးရဲ့ အချက်အလက်တွေကို တစ်နေရာတည်းမှာပဲ စုစည်းထားနိုင်ပြီး Gopher စနစ်နဲ့ ကွန်ပျူတာတွေက ဆက်သွယ်ရယူနိုင်မှာ ဖြစ်ပါတယ်။

Gopher ကို မင်နီဆိုးတား တက္ကသိုလ်က ဖန်တီးခဲ့တာ ဖြစ်ပါတယ်။ ၁၉၉၃ ခုနှစ် ဖေဖော်ဝါရီလမှာ အခြေအနေတွေကို ပြောင်းလဲသွားစေနိုင်တဲ့ ဆုံးဖြတ်ချက် တစ်ရပ်ကို မင်နီဆိုးတား တက္ကသိုလ်က ချမှတ်ခဲ့ပါတယ်။ Gopher နည်းပညာကို အသုံးပြုသူတွေက အသုံးပြုခပေးရမယ်လို့ ကြေငြာလိုက်ခြင်းပဲ ဖြစ်ပါတယ်။ ဒီကြေငြာချက်က လက်ရှိ Gopher အသုံးပြုနေသူတွေကို အခြားနည်းပညာ တစ်ခုခုကို ပြောင်းသုံးဖို့ စဉ်းစားလာစေ ခဲ့ပါတယ်။

အဲ့ဒီအချိန်မှာ ဆွစ်ဇာလန်နိုင်ငံအခြေစိုက် CERN (The European Council of Nuclear Research Center) ဆိုတဲ့ အဖွဲ့အစည်း မှာလည်း Gopher ကို အစားထိုးနိုင်တဲ့ နည်းပညာတစ်ခုက ရှိနေပါတယ်။ အဲ့ဒီအဖွဲ့က Tim Berners-Lee ဆိုတဲ့ပညာရှင်က Document တွေအတွင်းမှာ အခြား Document တွေကို ချိတ်ဆက်ထားတဲ့ Link တွေ ထည့်သွင်း နိုင်တဲ့ နည်းပညာတစ်ရပ်ကို ဖန်တီးနေပါတယ်။ Hypertext Document လို့ သူက ခေါ်ပါတယ်။ လက်တွေ့အသုံးပြု နိုင်ဖို့ Document တွေကို Server ကွန်ပျူတာတစ်လုံးနဲ့ စုစည်းထားပြီး ဖြန့်ဝေပေးနိုင်တဲ့ Server Software တစ်ခု၊ အဲ့ဒီ Document တွေကိုဖတ်လို့ရတဲ့ Program တစ်ခုကိုလည်း တစ်ပါတည်း ဖန်တီးခဲ့ပါတယ်။ ဖန်တီးမှု အားလုံးကို စုပေါင်းပြီး "WorldWideWeb" လို့ သူက အမည်ပေးခဲ့ပါတယ်။

၁၉၉၃ ခုနှစ် ဧပြီလ ၁၃ ရက်နေ့မှာ WorldWideWeb နည်းပညာရဲ့ Source Code ကို အများကို ဖော်ပြခဲ့ပါတယ်။ ဒါကြောင့် ဒီနည်းပညာကို မည်သူမဆို (အခမဲ့) အသုံးပြုခွင့် ရလာပါတယ်။ ဒါဟာလည်း ကြီးမားတဲ့ အလှည့်အပြောင်း တစ်ခုကို ဖြစ်ပေါ်စေခဲ့တဲ့ ဆုံးဖြတ်ချက်ပဲ ဖြစ်ပါတယ်။

အဲ့ဒီနှစ်ထဲမှာပဲ NCSA (National Center of Supercomputing Applications) က Hypertext Document တွေကို ကြည့်ရှုနိုင်ပြီး၊ Gopher ကိုလည်း ဆက်လက်အသုံးပြုနိုင်တဲ့ Web Browser Program တစ်ခုကို ဖန်တီး ကြေငြာခဲ့ပါတယ်။ Mosaic လို့ အမည်ပေးခဲ့ပါတယ်။ အစပိုင်းမှာကတာ့ Unix Operating System အတွက် ဖန်းတီး ခဲ့တာ ဖြစ်ပါတယ်။ ဒါပေမယ့် ၁၉၉၃ ခုနှစ် ဒီဇင်ဘာလမှာ Mac နဲ့ Windows အတွက်ပါ သီးခြား Version တွေ ဖန်တီးပေးခဲ့ပါတယ်။ အဲ့ဒီအချိန်က စပြီး Mosaic နဲ့ WorldWideWeb ဟာ အလျှင်အမြန် ကျယ်ပြန်လာ ခဲ့တာပဲ ဖြစ်ပါတယ်။

Mosaic လိုပဲ Hypertext Document တွေကြည့်ရှု့ နိုင်တဲ့ Web Browser တွေလည်း တစ်ခုပြီးတစ်ခု ပေါ်ပေါက်လာ ခဲ့ပါတယ်။ အများစုကတော့ တက္ကသိုယ်တွေနဲ့ ကော်ပိုရေးရှင်းကြီးတွေရဲ့ သုတေသန ပရောဂျက် အနေနဲ့ ပေါ်ပေါက် လာခဲ့တာ ဖြစ်ပါတယ်။ ကနေ့အချိန်မှာတော့ Web လို့ အတိုကောက်ခေါ်တဲ့ World Wide Web ဟာ အင်တာနက် လမ်းမကြီးပေါ်မှာ အချက်အလက်တွေ သယ်ယူပို့ဆောင် ပေးနိုင်တဲ့ နည်းပညာများထဲက အဓိကအကျဆုံး နည်းပညာ ဖြစ်လာခဲ့ပြီ ဖြစ်ပါတယ်။

Web နည်းပညာ မှာ အဓိကအ စိတ်အပိုင်း (၃) ခု ပါဝင်ပါတယ်။

၁.) ပထမတစ်ခုကတော့ သတင်းအချက်အလက်တွေ ထည့်သွင်းရေးသားထားတဲ့ Hypertext Document များဖြစ်ပါတယ်။ Web Document လို့လည်း ခေါ်ကြပါတယ်။ ဒီ Document တွေထဲမှာ စာနဲ့ရေးသားဖော်ပြထားတဲ့ အချက်အလက်တွေ အပြင်၊ စာရင်းဇယားပုံစံ ဖော်ပြထားတဲ့ အချက်အလက်တွေ၊ ရုပ်ပုံ (Image) တွေ၊ အသုံးပြုသူက အချက်အလက်တွေ ဖြည့်စွက်လို့ရတဲ့ Form တွေ ပါဝင်ပါတယ်။

ဒီ Document တွေဟာ Hyperlink လို့ခေါ်တဲ့ ချတ်ဆက်မှုအညွန်းတွေ အသုံးပြုပြီး အပြန်အလှန် ချိတ်ဆက်ထားကြ ပါတယ်။ Hyperlink တွေကိုနှိပ်ပြီး Document တစ်ခုကနေ နောက် Document တစ်ခုကို အလွယ်တစ်ကူ ကူးပြောင်း ကြည့်ရှု့နိုင်မှာ ဖြစ်ပါတယ်။ ကျွန်တော်တို့ Web Developer တွေရဲ့ အဓိကအလုပ် ကတော့ အခြေခံအားဖြင့် Web Document များ ဖန်တီးတည်ဆောက်ခြင်းပဲ ဖြစ်ပါတယ်။

၂.) နောက်တစ်ခုကတော့ Web Document တွေကို သိမ်းဆည်းထားနိုင်တဲ့ Web Server ဖြစ်ပါတယ်။ Web Server ဟာ အခန်းတွေ အများကြီးပါတဲ့ ကွန်ဒိုတိုက်ကြီး တစ်လုံးနဲ့ တူပါတယ်။ Web Document တွေကတော့ အဲ့ဒီတိုက်ကြီးထဲမှာ ရှိနေတဲ့ အခန်းတွေ ဆိုပါတော့။

ကွန်ဒိုတိုက်ကြီးမှာ လိပ်စာရှိသလို အခန်းတိုင်းအတွက်လည်း ကိုယ်ပိုင် အခန်းနံပါတ်တွေ ရှိပါတယ်။ Web နည်းပညာ မှာ တိုက်လိပ်စာကို Domain Name လို့ခေါ်ပြီး အခန်းနံပါတ် အညွန်းကို URL (Uniform Resource Locater) လို့ ခေါ်ပါတယ်။ Web URL ဟာ အိမ်လိပ် စာတစ်ခုနဲ့ အတော်လေး တူပါတယ်။ ပုံ (၁-က) မှာ ဖော်ပြထားတဲ့ အတိုင်း Web URL တစ်ခုကို အိမ်လိပ်စာတစ်ခု ကဲ့သို့ မြင်ကြည့်နိုင်ပါတယ်။

ပုံ (၁-က) URL တစ်ခု၏အဓိပ္ပါယ်

ပုံမှန်အားဖြင့် တိုက်နံပါတ် ဖြစ်တဲ့ Domain Name သိရင်ရပါပြီ။ ကျန်တဲ့ အသေးစိတ် အခန်းလိပ်စာ ကိုတော့ တိုက်ရှေ့ရောက်မှ ကြည့်လည်းဖြစ်ပါတယ်။ ဥပမာ - google.com ဆိုတဲ့ လိပ်စာသိ ပြီဆိုရင်၊ Image Search, Map, Reader, News အစရှိတဲ့ အခန်းအညွန်းကို google.com ရဲ့ မျက်နှာစာ (Home Page) ရောက်တော့မှ ကြည့်ပြီး ဆက်သွားလို့ ရပါတယ်။

URL ဆိုတာ Web ရဲ့ "အသက်" ဖြစ်ပါတယ်။ Web Resource တိုင်းကို တိုက်ရိုက် ညွန်းဆိုနိုင်တဲ့ URL တစ်ခု ရှိရမယ်၊ ရှိအောင် ဖန်တီးပေးရမယ် ဆိုတာကို Web Developer တိုင်း နားလည်ထားဖို့ လိုပါတယ်။

၃.) နောက်ဆုံးတစ်ခုကတော့ Web Browser ဖြစ်ပါတယ်။ ပထမဆုံး Web Browser ဖြစ်တဲ့ Mosaic အမည်နဲ့ Browser ကတော့ ကနေ့အချိန်မှာ မရှိတော့ပါဘူး။ ဒါပေမယ့် ကနေ့လူသုံးအများဆုံး Browser တွေထဲက Microsoft Internet Explorer နဲ့ Mozilla Firefox တို့ဟာ Mosaic ကနေ ဆင်းသက်လာကြ တာဖြစ်တယ်လို့ ဆိုနိုင်ပါတယ်။

ဒီစာရေးနေချိန်မှာ အဓိက လူသုံးများတဲ့ Web Browser (၅) ခု ရှိပါတယ်။ Microsoft Internet Explorer, Mozilla Firefox, Google Chrome, Apple Safari နဲ့ Opera တို့ ဖြစ်ကြပါတယ်။ မိုဘိုင်းဖုန်းတွေနဲ့ Tablet တွေကနေလည်း အင်တာနက် အသုံးများလာကြတော့ Android Browser, Mobile Safari နဲ့ Opera Mobile တို့လို Mobile Browser တွေကိုလည်း အသုံးများတဲ့ Web Browser စာရင်းထဲမှာ ထည့်သွင်းရပါမယ်။

Web Browser တစ်ခုရဲ့ အခြေခံလုပ်ငန်းတာဝန်ကတော့၊ အသုံးပြုသူပေးတဲ့ URL လိပ်စာအတိုင်း Web Server ဆီကိုသွားပြီး၊ Web Server က ပြန်ပေးလိုက်တဲ့ အချက်အလက်တွေကို အသုံးပြုသူ ကြည့်ရှု့ နိုင်အောင် ဖော်ပြပေးဖို့ပဲ ဖြစ်ပါတယ်။

ပုံ (၁-ခ) Web Browser တစ်ခု၏ အလုပ်လုပ်ပုံ

ကနေ့ခေတ်မှာ နည်းပညာအရ ရှုပ်ထွေးပြီး စုံလင်လှတဲ့ Web Application တွေ Web Service တွေ အမျိုးမျိုးအဖုံဖုံ ရှိနေပေမယ့် Web နည်းပညာ ဆိုတာဟာ Web Document တွေကို တစ်ခုနဲ့တစ်ခု အပြန်အလှန် ချိတ်ဆက်ထားပြီး၊ Document တစ်ခုစီကို URL များအသုံးပြုပြီး တိုက်ရိုက်ညွန်းဆို နိုင်ခြင်းပဲဖြစ်တယ်လို့ အခြေခံအားဖြင့် မှတ်ယူရမှာ ဖြစ်ပါတယ်။

World Wide Web Consortium (W3C)

Web နည်းပညာကို စတင်တီထွင်ခဲ့တဲ့ Tim Berners-Lee က World Wide Web Consortium (W3C) ဆိုတဲ့ အဖွဲ့အစည်း တစ်ရပ်ကို ၁၉၉၄ ခုနှစ် အောက်တိုဘာလမှာ ဦးဆောင် တည်ထောင်ခဲ့ပါတယ်။ ဒီစာရေး နေချိန်အထိလဲ ဒါရိုက်တာအဖြစ် ဆက်လက်ဦးဆောင် နေဆဲ ဖြစ်ပါတယ်။ တည်ထောင်ခဲ့တဲ့ နေရာကတော့ အမေရိကန်နိုင်ငံ မက်ဆာချူးဆက် နည်းပညာတ္ကသိုလ် ကွန်ပျူတာသိပ္ပံဌာန (MIT/LCS) မှာပဲ ဖြစ်ပါတယ်။ ဥရောပသမ္မဂနဲ့ အင်တာနက်ကို တည်ထွင်ခဲ့တဲ့ DARPA (Defense Advanced Research Projects Agency) ရဲ့ အကူအညီနဲ့ တည်ထောင်ခဲ့တာလည်း ဖြစ်ပါတယ်။

W3C ရဲ့ အဓိကလုပ်ငန်းတာဝန်ကတော့ Web Document တွေ ရေးသားဖန်တီးကြသူတွေ၊ Web Server တီထွင် ဖန်တီးကြသူတွေ၊ Web Browser ထုပ်လုပ်သူတွေ အပါအဝင် Web နည်းပညာနဲ့ ဆက်စပ်အလုပ်လုပ်သူများ လိုက်နာ အသုံးပြုရမယ့် နည်းပညာစံများ သတ်မှတ်ခြင်းပဲ ဖြစ်ပါတယ်။ ဒီလိုနည်းပညာစံတွေ သတ်မှတ်ရာမှာလည်း W3C က အမြဲတမ်းပညာရှင်တွေ သာမက Google, Microsoft, Mozilla, Apple, Adobe, Opera အစရှိတဲ့ လက်ရှိ အင်တာနက်နဲ့ Web နည်းပညာမှာ ဦးဆောင်နေတဲ့ လုပ်ငန်းတွေက ပညာရှင်များလဲ ပူးပေါင်းပါဝင် ဆောင်ရွက်နေကြတာ ဖြစ်ပါတယ်။

Web Server နဲ့ Web Browser ထုပ်လုပ်သူတွေက W3C နည်းပညာစံတွေနဲ့ ကိုက်ညီတဲ့ Server တွေ Browser တွေ ထုတ်လုပ်ကြသလို၊ ကျွန်တော်တို့ Web Developer တွေကလည်း W3C နည်းပညာစံတွေနဲ့ ကိုက်ညီတဲ့ Website တွေ Web Application တွေကို ဖန်တီးရေးသား ရမှာဖြစ်ပါတယ်။

W3C က သတ်မှတ်ထားတဲ့ စံတွေကို Web Standards လို့ခေါ်ပြီး HTTP, CGI, HTML, XHTML, XML, SOAP, DOM, CSS, SVG, RDF စသဖြင့် ကဏ္ဍပေါင်းများစွာ ပါဝင်ပါတယ်။ အဲ့ဒီထဲက ကျွန်တော်တို့ အဓိကထား လေ့လာရမှာ တွေကတော့ HTTP, HTML, CSS နဲ့ DOM တို့ပဲ ဖြစ်ပါတယ်။

HyperText Transfer Protocol (HTTP)

ပုံ (၁-က) မှာ URL ရဲ့ ရှေ့ဆုံးက http:// ကို "စီးသွားရမယ့်ကားလိုင်း" လို့ ဖော်ပြခဲ့ပါတယ်။ HTTP ဆိုတာ Web Document တွေအပါအဝင် အချက်အလက်တွေကို Web Server နဲ့ Web Client ရဲ့ ကြားထဲမှာ အပြန်အလှန် သယ်ယူပို့ဆောင် ပေးတဲ့ နည်းပညာ ဖြစ်ပါတယ်။

Web Client ဆိုတာ အခြေခံအားဖြင့် Web Browser ကိုပြောတာပါ။ ဒါပေမယ့် Browser အပြင် Web Document နဲ့ အချက်အလက်တွေကို လက်ခံရယူ ဖော်ပြပေးနိုင်တဲ့ အခြားနည်းပညာ များလည်း ရှိပါသေးတယ်။ ဥပမာ - Mobile Phone မှာ Install လုပ်ပြီးသုံးလို့ရတဲ့ Facebook App ဆိုကြပါစို့။ App ကို ဖုန်းထဲမှာ Install လုပ်ထားပေမယ့် ဖော်ပြတဲ့ အချက်အလက်တွေကို Facebook Web Server ကနေ သွားယူပြီးမှ ဖော်ပြပေးနိုင်တာ ဖြစ်ပါတယ်။ Facebook App ဟာ Browser မဟုတ်ပေမယ့် Web Server က အချက်အလက် တွေကို ရယူ ဖော်ပြနိုင်တဲ့ Web Client တစ်မျိုးပဲ ဖြစ်ပါတယ်။ သူလည်းပဲ Web Server နဲ့ ဆက်သွယ်ဖို့အတွက် HTTP နည်းပညာကိုပဲ အသုံးပြုရတာ ဖြစ်ပါတယ်။

Web Client က အချက်အလက်များ ရယူဖို့ဆောင်ရွက်တဲ့ လုပ်ငန်းစဉ်ကို Request လုပ်တယ်လို့ ခေါ်ပါတယ်။ Web Server က အချက်အလက်များ ပြန်လည် ပေးပို့တဲ့ လုပ်ငန်းစဉ်ကို Respond လုပ်တယ်လို့ ခေါ်ပါတယ်။ တစ်နည်း အားဖြင့် Web Client က အချက်အလက်များ တောင်းယူခြင်းကို အဓိက ဆောင်ရွက်မှာ ဖြစ်ပြီး Web Server ကတော့ တောင်းခံလာတဲ့ အချက်အလက်များ ပြန်လည်ပေးပို့ခြင်းကို အဓိက ဆောင်ရွက်မှာပဲ ဖြစ်ပါတယ်။

HTTP ကတော့ အချက်အလက် ရယူလိုသူ Client နဲ့ အချက်အလက် ပေးပို့သူ Server တို့အကြား အပြန် အလှန် နားလည် လိုက်နာရမယ့် နည်းပညာစံကို သတ်မှတ် ပေးထားခြင်းပဲ ဖြစ်ပါတယ်။ ပိုပြီးတိတိကျကျ ပြောရရင် HTTP က အင်တာနက် လမ်းမပေါ်မှာ အချက်အလက်တွေကို ဘယ်လို သယ်ဆောင်ရမယ်လို့ သတ်မှတ်ထားတဲ့ နည်းလမ်းတစ်ခုပဲ ဖြစ်ပါတယ်။

Client Request

HTTP သက်မှတ်ချက်အရ Web Client တစ်ခုဟာ အချက်အလက်ရယူလိုရင် Web Server ထံကို ရယူလို ကြောင်း သတင်းပေးပို့ရမှာ ဖြစ်ပါတယ်။ ပေးပိုရမယ့် Format ပုံစံနမူနာကို ဖော်ပြပေးလိုက်ပါတယ်။

  GET /foo.html HTTP/1.1
  Host: example.com
  User-Agent: Mozilla/5.0
  Accept-Encoding: gzip, deflate
  If-Modified-Since: Tue, 26 Feb 2013 05:34:16 GMT

ဒီ သတင်းပေးပို့ချက်ကို Request Header လို့ခေါ်ပါတယ်။ ပထမဆုံးလိုင်းမှာပါတဲ့ GET ကို Request Method လို့ခေါ်ပါတယ်။ HTTP မှာ GET, POST, PUT, DELETE စတဲ့ Request Method တွေ ရှိပါတယ်။ Client က အချက်အလက်ကို ရယူလိုတဲ့ ရည်ရွယ်ချက်ပေါ် မူတည်ပြီး သင့်တော်တဲ့ Request Method ကို ထည့်သွင်း ပေးပို့ရမှာ ဖြစ်ပါတယ်။

အခြေခံအားဖြင့် အချက်အလက်တွေ ရယူလိုရင် GET ကို သုံးရပါတယ်။ အချက်အလက် အသစ်တွေ Server ပေါ်မှာ ဖန်တီးစေလိုတာ ဆိုရင်တော့ POST ကို သုံးရပါတယ်။ Server ပေါ်က အချက်အလက်တွေ ပြင်ဆင်စေ လိုရင်တော့ PUT ကို သုံးရပြီး အချက်အလက်တွေ ပယ်ဖျက်စေချင်ရင် DELETE ကို သုံးရပါတယ်။ HEADER, DEBUG, TRACK, TRACE စတဲ့ အခြား Request Method တွေလည်း ရှိပါသေးတယ်။ ဒါပေမယ့် လုံခြုံရေး အားနည်းခြင်း၊ အသုံးပြုရန် လက်တွေ့ မလိုအပ်ခြင်း စတဲ့ အချက်အချို့ကြောင့် အသုံးနည်းပါတယ်။ Request Method တွေအကြောင်း ကို အခန်း (၈) Web Development with PHP (Part – 1) နဲ့ အခန်း (၁၆) REST and API တို့မှာ ဆက်လက်ဖော်ပြမှာ ဖြစ်ပါတယ်။

Request Method နောက်မှာတော့ ရယူလိုတဲ့ Document URL ကို ပေးရပါတယ်။ သူ့နောက်မှာမှ အသုံးပြုလိုတဲ့ HTTP Protocol version ကို ဖော်ပြပေးရတာ ဖြစ်ပါတယ်။ ဒုတိယလိုင်းကတော့ Server ရဲ့ လိပ်စာဖြစ်ပြီး တတိယလိုင်းဖြစ်တဲ့ User-Agent ကတော့ လက်ရှိတောင်းယူသူ Client အမျိုးအစားကို ထည့်သွင်း ဖော်ပြပေးခြင်းပဲ ဖြစ်ပါတယ်။

ဒါအပြင် စတုတ္ထလိုင်းမှာ ဖြည့်စွက် လက်ခံနိုင်တဲ့ နည်းပညာအချို့ကိုပါ Server ကို အသိအပေးတဲ့ အနေနဲ့ ထည့်သွင်း ပေးထားတာကို တွေ့ရပါလိမ့်မယ်။ ဒီဖြည့်စွက် နည်းပညာတွေ အကြောင်းကို အခန်း (၁၀) Web Development with PHP (Part – 3) မှာ ဆက်လက် ဖော်ပြပေးပါမယ်။ နောက်ဆုံးလိုင်း ကတော့၊ အခုတောင်းယူတဲ့ အချက်အလက် ဟာ ဖော်ပြထားတဲ့ရက်စွဲ နောက်ပိုင်း Server ပေါ်မှာ ပြင်ဆင်မှုတွေ ပြုလုပ်ထားမှသာ ပြန်လည် ပေးပို့ပါလို့ အသိပေးလိုက်တာ ဖြစ်ပါတယ်။

ဒါဟာ HTTP ကသတ်မှတ်ထားတဲ့ Request Format နမူနာဖြစ်ပါတယ်။ တောင်းယူတဲ့ Client နဲ့ တောင်းယူရခြင်း ရည်ရွယ်ချက် ပေါ်မူတည်ပြီး ပါဝင်တဲ့ အချက်အလက်တွေ ကွဲပြားခြားနား သွားနိုင်ပါတယ်။

အသုံးပြုသူ တစ်ယောက်က Web Browser ရဲ့ Address Bar မှာ URL တစ်ခုကို ရိုက်ထည့်လိုက်ရင် Web Browser က HTTP Request Format ကို အလိုအလျှောက်ပြောင်းပြီး Server ကို ပေးပို့ပေးမှာ ဖြစ်ပါတယ်။ ဒီလုပ်ဆောင်ချက် ဟာ နောက်ကွယ်မှာ ဆောင်ရွက်သွားတာ ဖြစ်လို့ ကျွန်တော်တို့ မမြင်ရပါဘူး။ တွေ့မြင်လိုတယ် ဆိုရင် Developer Tools တွေကို အသုံးပြုနိုင်ပါတယ်။ ကျွန်တော်အသုံးပြုတဲ့ Tool ကတော့ LiveHTTPHeader လို့ခေါ်တဲ့ Firefox Addon ပဲဖြစ်ပါတယ်။

ပုံ (၁-ဂ) LiveHTTPHeader Firefox Addon

ဒီ Tool က Client နဲ့ Server ဆက်သွယ်တဲ့အခါ အပြန်အလှန် သတင်းပေးပို့တဲ့ အချက်အလက် အသေးစိတ်ကို ဖော်ပြပေးမှာ ဖြစ်ပါတယ်။

Server Respond

Web Server ကို Hardware Server နဲ့ Software Server အဖြစ် နှစ်ပိုင်းခွဲ ကြည့်ဖို့ လိုပါတယ်။ Hardware Server ဟာ အခြေခံအားခြင့် HTTP နဲ့ တိုက်ရိုက် သက်ဆိုင်ခြင်း မရှိပါဘူး။ Server Operating System တစ်ခု Run နေပြီး Web Document နဲ့ အခြားလိုအပ်တဲ့ File တွေကို သိပ်ဆည်းပေး ထားတဲ့ Physical Machine တစ်ခု ဖြစ်ပါတယ်။

Software Server ကမှ HTTP Request ပေါ်မူတည်ပြီး သင့်တော်တဲ့ အချက်အလက် ပြန်လည်ပေးပို့ နိုင်အောင် ဖန်တီး တည်ဆောက် ထားတာ ဖြစ်ပါတယ်။ Apache, Nginx, IIS (Microsoft Internet Information Service) တို့ဟာ အသုံးအများဆုံး HTTP Web Server Software တွေ ဖြစ်ကြပါတယ်။

မှတ်ချက် ။ ။ Physical Machine ဖြစ်တဲ့ Hardware Server Computer တစ်လုံးထဲမှာ Web Server အပြင် အခြား Software Server တွေ ရှိနေနိုင် ပါသေးတယ်။ Email Server, FTP Server, SSH server စသဖြင့် ဖြစ်ပါတယ်။ သက်ဆိုင်ရာ Server တစ်ခုချင်းစီကို ဝင်ပေါက် အမှတ် (Port Number) တွေ ခွဲခြား သတ်မှတ်ပေး ထားပါတယ်။ ဒါမှ ဘယ်အပေါက်က ဝင်လာတဲ့ Request ဆိုရင် ဘယ်သူက တာဝန်ယူ ဆောင်ရွက်ရမလဲ ဆိုတာကို သိနိုင်မှာ ဖြစ်ပါတယ်။ HTTP Web Server အတွက် Default Port No. ကတော့ 80 ဖြစ်ပါတယ်။ ဝင်ပေါက် 80 က ဝင်ရောက်လာတဲ့ Request အားလုံးကို HTTP Web Server က တာဝန်ယူ ဆောင်ရွက် ပေးသွားမှာ ဖြစ်ပါတယ်။ အသုံးပြုသူက Browser Address Bar မှာ URL ထည့်သွင်းတဲ့အခါမှာ Port No. ကို ထည့်မပေးခဲ့ရင် Browser က 80 ကိုပဲ အလိုအလျှောက် အသုံးပြုပေး သွားမှာ ဖြစ်ပါတယ်။ Web Server တစ်ခုကို Port No. ပြောင်းပြီး Setting လုပ်ပုံကို အခန်း (၁၀) Web Development with PHP (Part – 3) မှာ ဖော်ပြပေးပါမယ်။

Web Server တစ်ခုရဲ့ အဓိက အလုပ်ကတော့ Request တစ်ခု လက်ခံရရှိတာနဲ့ Request Header မှာပါလာတဲ့ သတင်းပေးပို့ချက် အတိုင်း သင့်တော်တဲ့ အချက်အလက်ကို ပြန်လည်ပေးပို့ဖို့ပဲ ဖြစ်ပါတယ်။ ထူးခြားချက်ကတော့ အချက်အလက်ကို ပြန်လည်မပေးပို့မီ Client ကို သတင်းပေးပို့ချက် တစ်ချို့ အရင်ပေးပို့ပါတယ်။ ဒါကို Respond Header လို့ခေါ်ပါတယ်။ HTTP က သတ်မှတ်ထားတဲ့ Respond Header နမူနာကတော့ အခုလိုပဲ ဖြစ်ပါတယ်။

  HTTP/1.1 200 OK
  Date: Mon, 04 Mar 2013 14:03:18 GMT
  Server: Apache/2.2.14 (Unix) PHP/5.3.1
  Last-Modified: Sun, 03 Mar 2013 20:15:33 GMT
  Content-Encoding: gzip
  Content-Length: 1448
  Content-Type: text/html; charset=utf-8

ပထမဆုံးလိုင်းက အခြေအနေကို Status Code နံပါတ်သုံးပြီး ဖော်ပြပေးတာဖြစ်ပါတယ်။ 200 OK ရဲ့ အဓိပ္ပါယ် ကတော့ လက်ခံရရှိတဲ့ Request က အားလုံး အဆင်ပြေပါတယ် ဆိုတဲ့ အဓိပ္ပါယ်ပဲ ဖြစ်ပါတယ်။

HTTP Status Code နံပါတ်တွေ အများကြီးရှိပါတယ်။ အုပ်စု (၅) စုခွဲခြားထားပြီး (1xx) နဲ့စတဲ့ Code တွေကတော့ သတင်းပေးပို့မှု့ သက်သက်ဖြစ်ပါတယ်။ (2xx) နဲ့စတဲ့ Code တွေကတော့ Request/Respond အောင်အောင်မြင်မြင် ဆောင်ရွက်နိုင်ကြောင်း ဖော်ပြတဲ့ Code တွေဖြစ်ပါတယ်။ (3xx) နဲ့ စတဲ့ Code တွေကတော့ Redirect လို့ခေါ်တဲ့ လိပ်စာပြောင်းလဲ သွားကြောင်း သတင်းပို့တဲ့ Code တွေဖြစ်ပါတယ်။ (4xx) နဲ့စတဲ့ Code တွေကတော့ Client Error ကို ဖော်ပြတဲ့ Code တွေဖြစ်ပါတယ်။ တနည်းအားဖြင့် ပေးပို့လာတဲ့ Request အမှားကြောင့် ဖြစ်ပေါ်လာတဲ့ Error တွေကို ဖော်ပြပေးတာ ဖြစ်ပါတယ်။ (5xx) နဲ့စတဲ့ Code တွေကတော့ Server Error အတွက်ဖြစ်ပါတယ်။ Web Server က Request ကို အဆင်ပြေပြေ လက်ခံရရှိ ပေမယ့် အခက်အခဲ တစ်စုံတစ်ရာကြောင့် ပြန်လည်ပေးပို့နိုင်ခြင်း မရှိတဲ့အခါ ဖော်ပြတဲ့ Code တွေ ဖြစ်ပါတယ်။ Status Code တွေထဲက တွေ့ရလေ့ရှိတဲ့ Code အချို့အကြောင်း ထည့်သွင်းဖော်ပြလိုက်ပါတယ်။

200 OK – လက်ခံရရှိတဲ့ Request အဆင်ပြေကြောင်း ဖော်ပြဖို့ သုံးပါတယ်။

301 Moved Permanently – တောင်းခံလာတဲ့ အချက်အလက်ဟာ တစ်ခြားနေရာ တစ်ခုကို အပြီးတိုင် ပြောင်းရွှေ့ထားကြောင်း ဖော်ပြဖို့ သုံးပါတယ်။ Client က နောက်တစ်ကြိမ် Request လုပ်ရင် ပြောင်းရွှေ့သွားတဲ့ လိပ်စာ URL ကိုသာ Request လုပ်သင့်ကြောင်း အသိပေးခြင်းလည်း ဖြစ်ပါတယ်။

304 Not Modified – တောင်းခံလာတဲ့ အချက်အလက်ဟာ Server ပေါ်မှာ Request Header မှာ If-Modified-Since: Format ပါဝင်လာခဲ့တဲ့ ရက်စွဲနောက်ပိုင်း ပြောင်းလဲ ပြင်ဆင်ထားခြင်း မရှိသေးကြောင်း ဖော်ပြဖို့ သုံးပါတယ်။

307 Temporary Redirect – တောင်းခံလာတဲ့ အချက်အလက်ဟာ အခြားတစ်နေရာကို ယာယီရွှေ့ပြောင်း ထားကြောင်း ဖော်ပြတဲ့အခါ သုံးပါတယ်။ 301 နဲ့ ကွာတဲ့အချက်က ယာယီရွှေ့ပြောင်း ထားတာ ဖြစ်လို့ နောက် Request တွေကို အခုလက်ရှိ လိပ်စာ URL အတိုင်း ဆက်လုပ်ဆက်သွယ် နိုင်ကြောင်း အသိပေးတဲ့သဘော ဖြစ်ပါတယ်။

403 Forbidden – Request ကို လက်ခံရရှိပေမယ့် Client ဟာ အချက်အလက် ရယူပိုင်ခွင့်ရှိသူ မဟုတ်တဲ့အတွက် ပြန်လည်ပေးပို့မှာ မဟုတ်ကြောင်း ဖော်ပြခြင်း ဖြစ်ပါတယ်။

404 Not Found – တောင်းခံလာတဲ့ အချက်အလက်ကို ရှာဖွေတွေ့ရှိခြင်း မရှိကြောင်း ဖော်ပြတာဖြစ်ပါတယ်။

500 Internal Server Error – မည်သည့်အကြောင်း ကြောင့်မှန်း အတိအကျမသိရတဲ့ Server Error တစ်ခု ဖြစ်ပေါ် နေတဲ့အတွက် အချက်အလက် ပြန်လည်ပေးပို့နိုင်မှာ မဟုတ်ကြောင်း ဖော်ပြတာဖြစ်ပါတယ်။

503 Service Unavailable – ယာယီ Server Error တစ်ခု ဖြစ်နေတဲ့အတွက် ပြန်လည် မပေးပို့နိုင်သေးကြောင်း ဖော်ပြတဲ့ Code ဖြစ်ပါတယ်။ အများအားဖြင့် အသုံးပြုသူ သိပ်များနေတဲ့အချိန်၊ Web Server ယာယီ Down နေတဲ့အချိန်တွေမှာ ဖော်ပြတဲ့ Code ပါ။

အခြား Status Code တွေအကြောင်းကိုပါ အပြည့်အစုံကို ဆက်လက် လေ့လာလိုတယ် ဆိုရင်တော့ Wikipedia ရဲ့ List of HTTP Status Codes Article မှာ ဆက်လက်လေ့လာနိုင်ပါတယ်။

Respond Header မှာ အခြားဖော်ပြချက် တွေလည်း ပါဝင်ပါသေးတယ်။ အထက်မှာ ဖော်ပြခဲ့တဲ့ Respond Header နမူနာကို ပြန်ကြည့်ရင်၊ လက်ရှိအကြောင်းပြန် နေတဲ့ Server အမျိုးအစား၊ ပြန်လည်ပေးပို့မယ့် အချက်အလက်ရဲ့ Size နဲ့ အမျိုးအစားတို့ကိုပါ ထည်သွင်းဖော်ပြ ပေးတာကို တွေ့ရမှာ ဖြစ်ပါတယ်။

လက်ခံရယူမယ့် Browser က ပေးပို့လာတဲ့ Respond Header ပေါ်မူတည်ပြီး လိုအပ်သလို ဆက်လက် ဆောင်ရွက် သွားမှာ ဖြစ်ပါတယ်။ ဥပမာ - Browser တွေဟာ အချက်အလက် တစ်ခုကို လက်ခံရရှိပြီးရင် နောင်လိုအပ်ရင် ပြန်လည် အသုံးချနိုင်အောင် သိမ်းဆည်းထားလေ့ ရှိပါတယ်။ Cache လုပ်တယ်လို့ ခေါ်ပါတယ်။ ပြန်လည်ပေးပို့ လာတဲ့ Respond Header မှာ ပါဝင်လာတဲ့ Modified Date နဲ့ သူ Cache လုပ်ပြီး သိမ်းဆည်းထားတဲ့ အချက်အလက်ရဲ့ Modified Date ကို နှိုင်းယှဉ်ကြည့်ပြီး ကွာခြားမှု့မရှိရင် Server က ပေးပို့လာမှာကို မစောင့်တော့ပဲ Cache လုပ် သိမ်းထားတဲ့ အချက်အလက်ကို ဖော်ပြလိုက်မှာ ဖြစ်ပါတယ်။ ဒီနည်းနဲ့ အသုံးပြုသူက ပထမတစ်ကြိမ် ရယူထားဖူးတဲ့ အချက်အလက်ကို၊ လိုအပ်လို့ နောက်တစ်ကြိမ်ထပ်မံရယူတဲ့အခါ ပိုပြီး မြန်မြန်ဆန်ဆန် ရရှိစေမှာပဲ ဖြစ်ပါတယ်။

Browser တွေဟာ အခြေခံအားဖြင့် Text, HTML, Image, Audio စတဲ့ အချက်အလက် အချို့ကို ဖော်ပြနိုင်ပေမယ့် မဖော်ပြနိုင်တဲ့ အချက်အလက် တွေလည်း ရှိပါတယ်။ ဥပမာ - Microsoft Excel File တစ်ခုကို Web Browser က ဖော်ပြပေးနိုင်မှာ မဟုတ်ပါဘူး။ ဒီတော့ Respond Header မှာပါလာတဲ့ Content-Type ကိုလည်း Browser က ကြည့်ပါတယ်။ ဖော်ပြနိုင်တဲ့ အချက်အလက် အမျိုးအစားဆိုရင် အသုံးပြုသူ ကြည့်ရှုနိုင်အောင် ဖော်ပြလိုက်ပေး လိုက်မှာ ဖြစ်ပါတယ်။ မဖော်ပြနိုင်တဲ့ အချက်အလက် အမျိုးအစား ဆိုရင်တော့ အသုံးပြုသူက လက်ခံရယူ နိုင်အောင် Download လုပ်ဖို့ ပေးလိုက်မှာ ဖြစ်ပါတယ်။

Pull Technology

HTTP ဟာ Pull Technology တစ်မျိုးဖြစ်ပါတယ်။ Pull Technology ဆိုတာ Client နဲ့ Server ဆက်သွယ် တဲ့အခါမှာ Client ကသာ ဆက်သွယ်မှု့ကို ပထမဦးဆုံး စတင်ရတဲ့ နည်းပညာကို ခေါ်တာဖြစ်ပါတယ်။ Server က Client ဆက်သွယ်လာတဲ့ အခါမှသာ အကြောင်းပြန်ပေးတာ ဖြစ်ပါတယ်။ Pull Technology မှာ Server က ဆက်သွယ်မှု့ တစ်ခုကို အစပြုတယ်ဆိုတာ မရှိပါဘူး။

ပုံ (၁-ဃ) HTTP အလုပ်လုပ်ပုံ

ဒါဟာလည်း ရိုးရှင်းပေမယ့် လေ့လာစ Developer တွေ သတိလွတ်တက်တဲ့ အချက်ဖြစ်ပါတယ်။ URL ဟာ Web ရဲ့ အသက်ဖြစ်တယ်ဆိုတဲ့ အချက်က Web Development ရဲ့ နံပါတ် (၁) အခြေခံ ဖြစ်တယ်ဆိုရင်၊ Client Request မလုပ်ပဲ Server Respond ဆိုတာ ရှိမှာမဟုတ်ဘူး ဆိုတဲ့အချက်က နံပါတ် (၂) အရေး အကြီးဆုံး အခြေခံ အချက်ပဲ ဖြစ်ပါတယ်။

Pull Technology ဟာ ရိုးစင်းတဲ့ အတွက် Web Application တွေရေးသား ရခြင်းဟာ တစ်ခြားသော Full-Duplex လို့ ခေါ်တဲ့ Client-Server နှစ်ခုစလုံးက ဆက်သွယ်မှု အစပြုနိုင်တဲ့ Network Application တွေ ဖန်တီးရခြင်းထက် ပိုမိုလွယ်ကူပါတယ်။ ဒါပေမယ့် တစ်ခါတစ်ရံ Real-Time Application လို့ခေါ်တဲ့ စက္ကန့်မလပ် အချက်အလက်တွေ ပြောင်းလဲနေဖို့ လိုအပ်တဲ့ Application တွေအတွက်တော့ ဒီ Pull Technology က အကန့်အသတ် ဖြစ်နေတက် ပြန်ပါတယ်။ ဒါကိုဖြေရှင်းဖို့ အတွက် Long-Polling, Commet, Web Sockets စသဖြင့် နည်းလမ်းတွေ ရှိပါတယ်။ အဲ့ဒီနည်းပညာတွေ အကြောင်းကိုတော့ အခန်း (၁၁) Ajax with jQuery နဲ့ အခန်း (၁၄) HTML5 တို့မှာ ဆက်လက်ဆွေးနွေးပါမယ်။

Stateless Protocol

Stateless Protocol ဆိုတာဟာ Client နဲ့ Server ဆက်သွယ်မှုတစ်ကြိမ်နဲ့ နောက်တစ်ကြိမ် ဆက်နွယ်ခြင်း မရှိတဲ့ နည်းပညာကိုခေါ်တာ ဖြစ်ပါတယ်။ တနည်းအားဖြင့် Request/Respond State ကို ထိမ်းသိမ်းထားခြင်း မရှိဘူးလို့ ဆိုလိုတာဖြစ်ပါတယ်။ HTTP ဟာ Stateless Protocol တစ်မျိုး ဖြစ်ပါတယ်။

Client က Resource A ကို တောင်းခံမယ်ဆိုရင် Server က Resource A ကို ပေးပါလိမ့်မယ်။ Client က နောက်တစ်ကြိမ် အနေနဲ့ Resource B ကို ပေးပါဦးလို့ တောင်းခံမယ် ဆိုရင် Server က Resource B ကို ပေးမှာပါပဲ။ ဒါပေမယ့် ပထမအကြိမ် Resource A အတွက် လုပ်ခဲ့တဲ့ ဆက်သွယ်မှု့နဲ့ နောက်တစ်ကြိမ် Resource B အတွက် ထပ်လုပ်တဲ့ ဆက်သွယ်မှု့တို့ ကြားထဲမှာ ဘယ်လို ဆက်စပ်မှု့မျိုးမှ မရှိတဲ့သဘော ဖြစ်ပါတယ်။ Server က “ဪ.. စောစောက A ကို တောင်းထားတယ်၊ အခု B ကို တောင်းပြန်ပြီ၊ နောက်တစ်ခေါက် C ကို တောင်းရင် အသင့်ပေး နိုင်အောင် ပြင်ထားမှ” ဆိုတဲ့ လုပ်ဆောင်မှုမျိုး လုပ်ပေးနေမှာ မဟုတ်ပါဘူး။ A တောင်းရင် A ကိုပေးတယ်၊ B တောင်းရင် B ကို ပေးတယ်.. ခပ်ရှင်းရှင်းပဲ အလုပ်လုပ်သွားတာ ဖြစ်ပါတယ်။

မှတ်ချက် ။ ။ ဒီလို အလုပ်လုပ်ပုံရိုးရှင်းတဲ့ အတွက်ကြောင့်လည်း HTTP ကိုသုံးပြီး Application တွေ ဖန်တီးရတဲ့ ကျွန်တော်တို့ Developer တွေအတွက် လွယ်ကူသွားစေတာ ဖြစ်ပါတယ်။ တစ်ချို့ မဖြစ်မနေ ထိမ်းသိမ်းထားဖို့လိုတဲ့ State တွေအတွက် Cookie, Session အစရှိတဲ့ နည်းပညာတွေ အသုံးပြုနိုင်ပါတယ်။ Cookie နဲ့ Session အကြောင်းကိုတော့ အခန်း(၈) Web Development with PHP (Part – 1) မှာ ဖော်ပြပေး ပါမယ်။ ဒီနေရာမှာတော့ HTTP ဟာ သဘာဝအရ Pull Technology တစ်မျိုးဖြစ်ပြီး Stateless သဘာဝလည်းရှိ တယ်ဆိုတဲ့ အချက်ကို အထူးပြု မှတ်သားထားစေချင် ပါတယ်။