วันศุกร์ที่ 14 ตุลาคม พ.ศ. 2554

การทำงานแบบ Client-side และ server-side คืออะไร


ในการทำงานด้าน Web Programming ในการเขียนโปรแกรมนั้น จะถูกแยกการทำงานออกเป็นสองแบบหลักๆ คือ Client-side และ Server-side ในการเขียนโปรแกรมแบบ Server-side นั้นก็ได้แก่ภาษา php, java jsp,  .NET เป็นต้น ซึ่งการเขียนโปรแกรมด้วยภาษาเหล่านี้ จะเป็นการ Run โปรแกรม ในฝั่งของ Server แล้ว return ค่า หรือ แสดงผลกลับมาทาง Client ในที่นี้หมายถึง web browser ต่างๆเช่น IE, Firefox, safari
ตัวอย่างการทำงานแบบ Server-side:
client เรียก www.google.com –> Server google ประมวลผล —> ส่งค่ากลับไปให้ที่ Client
จากตัวอย่างเป็นการเรียก เว็บ Google ผ่าน browser เมื่อมีการเรียก URL ดังกล่าว Client จะทำการส่งคำขอไปทาง server ของ google เมื่อมีการตอบรับ จาก server ของ google ก็จะทำตามคำสั่งที่เขียนใว้ที่ server และจะประมวลผล และส่งค่ากลับมายัง browser ที่ทำการร้องขอไป
ส่วนการทำงานแบบ Client Side นั้นเป็นการประมวลผลทางฝั่ง Browser ภาษาที่ใช้ก็เช่น javascript ประโยชน์ของการทำงานฝั่ง Client นั้นก็มีเยอะเลยครับ คือแทนที่เราจะส่งทุกๆอย่างไปประมวลผลที่ server เราก็มาประมวลผลที่ client ก่อนแล้วค่อยส่งบางส่วนไปประมวลที่ server ซึ่งจะช่วยในเรื่องของความเร็วในการทำงานได้มาก และ ลด Load ของ Server ลงได้เยอะมากๆ เพราะการทำงานฝั่ง client นั้นจะประมวลผลที่เครื่องของ user เอง
ผมจะยกตัวอย่างการทำงานแบบ server side และ client side ให้ดูเพื่อให้ห็นความแตกต่างกัน
ตัวอย่าง code การทำงานแบบ Server-side (server.php)





<form name="server-side" action="server.php">
           <input type="text" name="myName" >
           <input type="submit" value="submit" />
</form>

<?php

if( isset($_POST["myName"]) )
{
   if($_POST["myName"] == "")
   {
        echo " Please key in your name. ";
        exit();
   } else
   {
        echo "OK";
   }
}
?>
จากตัวอย่างด้านบนนี้เป็นการส่งค่า ไปยัง script server.php โดยตรง โดยเป็นการประมวลผลทางฝั่ง Server (server side) จะเห็นได้ว่า เมื่อกด submit ไปแล้ว โปรแกรมจะทำการเช็คว่า มีการกรอกค่าใน form มาหรือไม่ ถ้าค่าว่างจะแสดงข้อความ Error ออกมาพร้อมทั้งให้กลับไปกรอกใหม่ จะเห็นว่ามันเป็นการทำงานที่เพิ่มโหลดให้กับ Server เพราะจะต้องมาทำการเช็คค่า ว่าว่าง หรือเปล่า ถ้าหากเป็นระบบที่มีการใช้งานที่ต้องรองรับจำนวนคนมากๆ อันนี้มีปัญหาแน่ๆครับ แต่ที่ผมยกตัวอย่างมานี้เป็นแค่ตัวอย่างง่ายๆ ซึ่ง script แค่นี้คงไม่ทำให้ server โหลดถึงขนาดล่มไปได้ แต่ถ้าเราเปลี่ยนวิธีการแบบนี้ มาเป็นการใช้ Client side ช่วยละ เป็นอีกวิธีหนึ่งเลยนะครับ ที่จะลดขึ้นตอนการทำงานของ Server ลงได้เยอะเลย มาดูตัวอย่างกัน
ตัวอย่าง code การทำงานแบบ Client Side :
<form name="server-side" action="server.php" onSubmit=" return checkForm(); ">
<input id="myName" type="text" name="myName" >
<input type="submit" value="submit" />
</form>

<script type="text/javascript">
function checkForm(){
      if( $("#myName").attr("value") == "" ) {
            alert("Please key in your name.");
            return false;
      }else{
            return true;
      }
}
</script>
จาก code ตัวอย่างด้านบนนี้ เป็นการใช้ ภาษา javascript เช็คค่าของ input box ว่ามีค่าว่างหรือไม่ ถ้ามีค่าว่างจะ alert ข้อความออกมาแจ้งว่าให้กรอกชื่อคุณ จะเห็นได้ว่าวิธีแบบ client side นี้ลดโหลดหรือลดการทำงานทางฝั่ง server ได้พอสมควรเลยแทนที่เราจะส่งค่าไปเช็คด้วยโปรแกรมทางฝั่ง server เราก็ทำการเช็คค่าก่อนทำการส่ง ถ้าค่าถูกต้องตามที่ต้องการแล้วเราค่อยส่งค่าไปประมวลผล แบบนี้ก็เป็นวิธีที่ดีทีเดียว
Tips : ในการออกแบบระบบนั้น ถ้าเราแยกการประมวลผลออกได้ว่าอันใหนควรจะทำที่ browser อันใหน ควรจะส่งไประมวลผลที่ server จะทำให้โปรแกรมที่เราพัฒนาขึ้นมานั้นมีประสิทธิภาพมากยิ่งขึ้น ซึ่งสิ่งเหล่านี้ก็ขึ้นอยู่กับการสะสมประสพการณ์ของแต่ละคนครับ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น