Design Patterns(แพตเทิร์น ) คืออะไร
ดีไซน์แพตเทิร์น (อังกฤษ: Design Patterns) คือแบบแผนหรือแนวทางที่ใช้ในการแก้ไขปัญหาที่เกิดขึ้นเสมอๆ ในการออกแบบคอมพิวเตอร์ซอฟต์แวร์ แบบแผนและแนวทางเหล่านี้ไม่ใช่รูปแบบตายตัวที่จะถูกนำไปใช้โดยตรง แต่เป็นการอธิบายแนวทางหรือโครงที่จะถูกนำไปประยุกต์ใช้ในสถานการณ์ต่างๆ กล่าวเฉพาะในทางการเขียนโปรแกรมเชิงวัตถุ ดีไซน์แพตเทิร์นจะแสดงความสัมพันธ์ต่อกันระหว่างคลาสหรืออ็อบเจกต์ต่างๆ โดยไม่จำเพาะเจาะจงการนำไปใช้งานในขั้นสุดท้าย ขั้นตอนวิธีไม่จัดเป็นดีไซน์แพตเทิร์นเพราะเป็นการแก้ปัญหาในทางการประมวลผลมากกว่าในทางการออกแบบ
การจัดหมวดหมู่และแพตเทิร์นในหนังสือ Design Patterns
ดีไซน์แพตเทิร์นมีจุดเริ่มต้นจากหนังสือชื่อ A Pattern Language: Towns, Buildings, Construction แต่งโดยสถาปนิกชื่อ Christopher Alexander เมื่อปี ค.ศ. 1977 จากนั้น Kent Beck และ Ward Cunningham ริเริ่มนำเอาแนวคิดนี้มาทดลองใช้กับการเขียนโปรแกรมในปี ค.ศ. 1987 และได้นำเสนอผลงานในงานประชุม OOPSLA ในปีเดียวกันนั้น
ประโยชน์
ดีไซน์แพตเทิร์นช่วยทำให้กระบวนการพัฒนาโปรแกรมรวดเร็วขึ้นเพราะเป็นตัวอย่างที่ผ่านการพิสูจน์ทดสอบมาแล้ว การออกแบบซอฟต์แวร์ที่ดีต้องเตรียมการสำหรับปัญหาที่อาจจะไม่พบจนกว่าจะเริ่มนำไปใช้งาน การใช้ดีไซน์แพตเทิร์นช่วยป้องกันปัญหาเล็กน้อยที่อาจจะลุกลามใหญ่โต ทั้งยังทำให้การทำความเข้าใจโค้ดง่ายขึ้นในหมู่ผู้ร่วมงานในทีมที่คุ้นเคยกับดีไซน์แพตเทิร์น
การจัดหมวดหมู่และแพตเทิร์นในหนังสือ Design Patterns
การจัดหมวดหมู่ดีไซน์แพตเทิร์นตามหนังสือ Design Patterns แบ่งตามวัตถุประสงค์การใช้งาน ดังนี้
แพตเทิร์นการสร้างอ็อบเจกต์ (creational patterns)
Abstract Factory
Builder
Factory Method
Prototype
Singleton
แพตเทิร์นโครงสร้าง (structural patterns)
Adapter
Bridge
Composite
Decorator
Façade
Flyweight
Proxy
แพตเทิร์นพฤติกรรม (behavioral patterns)
Chain of responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template method
Visitor
วันพุธที่ 23 มีนาคม พ.ศ. 2559
Struts คืออะไร
Struts คืออะไร?
Struts
Framework คือการ implement model-view-controller MVC
design pattern สำหรับ enterprise application ด้วย java (java ee) Struts เป็นส่วนหนึ่งของ Apache Jakarta project และเป็น open
source ดังนั้น จึงสามารถ download library struts มาใช้งานได้ฟรีๆ Struts Framework เป็นเหมือนชุดการพัฒนา
web application ซึ่งเหมาะกับหลายๆขนาด
Model-View-Controller คืออะไร?
Model-View-Controller เป็นสถาปัตยกรรมที่แบ่งส่วนต่างๆของการพัฒนา
application ออกเป็น 3 ส่วนซึ่งประกอบด้วย
Model component, View component และ Controller component ซึ่งในแต่ละ component สามารถพัมนา application โดยไม่ขึ้นกับ componentใด component หนึ่ง หมายความว่า เมื่อมีการเปลี่ยนแปลง component ใด component หนึ่ง จะไม่กระทบกับ component อื่นๆ
Model ทำหน้าที่
1. รับผิดชอบการจัดการนำข้อมูลขึ้นมาจาก Database และเก็บข้อมูลไว้
2. รับผิดชอบในส่วนของ business logic ก็อยู่ใน Model เช่น การเข้าถึงข้อมูล,
การยืนยันความถูกต้องของข้อมูล และ logic การเก็บข้อมูล เป็นต้น หรือบาง framework อาจจะมีในส่วนของ Business Service ด้วยอันนี้ขึ้นอยู่กับมุมมอง
View ทำหน้าที่
แสดงผล Graphic User Interface GUI เพื่อให้ user สามารถโต้ตอบกับ application ที่เราพัฒนาขึ้นมาได้ และทำหน้าที่รับ input จาก user view ที่พูดถึงถ้าอิงกับการพัฒนา web application ก็อาจเป็นได้ทั้ง HTML, JSP
Controller ทำหน้าที่
เป็นตัวสื่อกลางที่ทำงานประสานกันระหว่าง Model และ View Controller ทำหน้าที่ส่ง request ที่ได้จาก Client แล้วดูว่า request นี้จะส่งไปให้ Model ตัวใด และเมื่อได้ผลลัพธ์จาก Model แล้วก็จะดูต่อว่า response ที่ได้จะส่งไปให้ View ตัวใดแสดงผล ถ้าดูตาม Struts Framework ส่วน Controller ก็คือส่วนของ ActionServlet, Action, ActionForm และ struts-config.xml
ดังที่กล่าวมาแล้วทั้งหมดจะมีหลักการทำงานคร่าวๆดังนี้คือ เมื่อ client มีการส่ง request ไปหา server request นั้นจะถูกส่งไปที่ controller จากนั้น controller จะเป็นตัวดูว่า request ทีได้นั้นจะไปเรียก model ตัวใดให้ทำงาน แล้วเมื่อ model ทำงานเสร็จจะส่ง response กลับมาที่ controller และ controller จะเป็นตัวควบคุมอีกทีว่า response นี้จะให้ view ตัวไหนแสดงผลลัพธ์ออกมาพร้อมกับข้อมุลที่ได้มาจากชั้นของ model
Model component, View component และ Controller component ซึ่งในแต่ละ component สามารถพัมนา application โดยไม่ขึ้นกับ componentใด component หนึ่ง หมายความว่า เมื่อมีการเปลี่ยนแปลง component ใด component หนึ่ง จะไม่กระทบกับ component อื่นๆ
Model ทำหน้าที่
1. รับผิดชอบการจัดการนำข้อมูลขึ้นมาจาก Database และเก็บข้อมูลไว้
2. รับผิดชอบในส่วนของ business logic ก็อยู่ใน Model เช่น การเข้าถึงข้อมูล,
การยืนยันความถูกต้องของข้อมูล และ logic การเก็บข้อมูล เป็นต้น หรือบาง framework อาจจะมีในส่วนของ Business Service ด้วยอันนี้ขึ้นอยู่กับมุมมอง
View ทำหน้าที่
แสดงผล Graphic User Interface GUI เพื่อให้ user สามารถโต้ตอบกับ application ที่เราพัฒนาขึ้นมาได้ และทำหน้าที่รับ input จาก user view ที่พูดถึงถ้าอิงกับการพัฒนา web application ก็อาจเป็นได้ทั้ง HTML, JSP
Controller ทำหน้าที่
เป็นตัวสื่อกลางที่ทำงานประสานกันระหว่าง Model และ View Controller ทำหน้าที่ส่ง request ที่ได้จาก Client แล้วดูว่า request นี้จะส่งไปให้ Model ตัวใด และเมื่อได้ผลลัพธ์จาก Model แล้วก็จะดูต่อว่า response ที่ได้จะส่งไปให้ View ตัวใดแสดงผล ถ้าดูตาม Struts Framework ส่วน Controller ก็คือส่วนของ ActionServlet, Action, ActionForm และ struts-config.xml
ดังที่กล่าวมาแล้วทั้งหมดจะมีหลักการทำงานคร่าวๆดังนี้คือ เมื่อ client มีการส่ง request ไปหา server request นั้นจะถูกส่งไปที่ controller จากนั้น controller จะเป็นตัวดูว่า request ทีได้นั้นจะไปเรียก model ตัวใดให้ทำงาน แล้วเมื่อ model ทำงานเสร็จจะส่ง response กลับมาที่ controller และ controller จะเป็นตัวควบคุมอีกทีว่า response นี้จะให้ view ตัวไหนแสดงผลลัพธ์ออกมาพร้อมกับข้อมุลที่ได้มาจากชั้นของ model
ทำไมต้องออกแบบ
application ตาม
MVC ด้วยละ?
ยกตัวอย่างง่าย
เนื่องจากว่าการทำ enterprise application นั้นจะมีความซับซ้อนมาก
สมมุติหากไม่ใช้ MVC เกิดเราต้องการแก้ไข view ซักหนึ่งตัวมันก็จะมีผลกระทบกับส่วนอื่นๆตามมาเช่นการดึงข้อมูล,
validation data เป็นต้น แต่ถ้าเราออกแบบ application ตามแบบของ MVC การแก้ไข view แต่ละครั้งจะไม่มีผลกระทบกับส่วนอื่นๆเลย
ที่พูดถึงมันหมายถึงการพัฒนา application ขนาดใหญ่ทั้งนั้น
แต่ถ้าเราพัฒนา application ขนาดเล็กๆอาจจะไม่จำเป็นตัวออกแบบตามแบบของMVC
ก็ได้ อันนี้ขึ้นอยู่กับปัจจัยอื่นๆด้วย
ทำไมต้อง
Struts ด้วย?
มันมีความยุ่งยากน้อยและเข้าใจง่าย แล้วถ้าเข้าใจ concept
แล้วยังเป็นพื้นฐานกับการเข้าใจ framework ตัวอื่นๆอีกด้วยเช่น
JSF ซึ่งบทความเกี่ยวกับ JSF จะมีการ update
อยู่ตลอดอยู่แล้ว ถึงแม้ว่าในปัจจุบันการใช้งาน Struts
Framework เริ่มที่จะหมดความนิยมแต่ถ้าเทียบกับการ learning
curve ที่เข้าใจง่ายและเป็นพื้นให้กับ framework ตัวอื่นๆได้ด้วยก็นับว่าน่าสนใจที่จะเรียนรู้กับมัน
เพื่อความเข้าใจที่ลึกซึ้งขอให้อ่าน reference เพิ่มเติมเรื่อง
MVC ที่ sun เขียนไว้ : http://java.sun.com/blueprints/patterns/MVC-detailed.html
ก่อนที่เราจะใช้ Strut Framework นั้นเรามาติดตั้งส่วนต่างๆที่จำเป็นจะต้องใช้ก่อน
1.ติดตั้ง JDK1.4 หรือเวอร์ชั่นสูงกว่า
สามารถ download ได้จาก sun
2. ติดตั้ง IDE เพื่อช่วยในการเขียนเช่น Eclipse , Netbeans , JDev หรืออะไรก็แล้วแต่ เพียงแต่ที่ยกตัวอย่างมานั้น Netbean และ JDev นั้น support Struts ด้วยกันทั้งนั้นแต่ Eclipse ไม่ได้ support Struts จึงต้อหา plugin มาช่วยใช้ในการพัฒนา เช่น Myeclipse ที่รวม plugin สำคัญๆไว้หมดแล้วก็ได้ อันนี้แล้วแต่ครับขึ้นอยุ่กับความถนัดใน IDE ของแต่ละคน ขั้นตอนการใช้งานก้ต่างกันนิดหน่อยครับ แต่ที่ผมใช้คือ Eclipse+Exadel เพราะว่า plugin Exadel ภายในจะประกอบด้วย tomcat, struts framework ซึ่งเราไม่ต้องลง tomcat และ struts เลยมันมีให้เบ็ดเสร็จ เพียงแค่ install plugin Exadel ก็ใช้งานได้เรียบร้อย ซึ่งถ้าคุณไม่ใช้ plugin Exadel ก็ต้องติดตั้ง Tomcat และ Struts
- ติดตั้ง Tomcat สามารถ download ได้จาก ที่นี่ ซึ่งมีหลาย version ให้ใช้งานและในแต่ละเวอร์ชั่นก็มีหลายแบบให้ download ผมแนะนำให้ download แบบ .zipเมื่อ download มาแล้วก้ขยาย zip ไว้ก็เรียบร้อย เราใช้ tomcat เพื่อทำหน้าที่เป็น http server และ servlet containerในส่วนนี้เราสามารถใช้ application server ตัวอื่นๆก็ได้เช่น oc4j, glassfish, jboss, oracle application server ฯลฯ ในตัวอย่างนี้ผมขอใช้ tomcat เพราะไม่กิน resource มากแล้วก็ฟรีครับ ^^
- ติดตั้ง Struts Application download ได้จาก ที่นี่ ในปัจจุบัน Struts ออกเวอร์ชั่น 2 แล้วแต่ที่ผมใช้อยู่เป็น Struts 1.3.8เมื่อ download มาแล้วให้แตกไฟล์ออกมาจะได้ folder struts-1.3.8 ให้เข้าไป struts-1.3.8\apps จะเห็น war ไฟล์
- struts-black-1.3.8.war เป็น struts application เปล่าๆที่ใช้ในการสร้าง struts application ซึ่งเราจะใช้ไฟล์นี้ในการสร้าง web application ของเรา
- struts-documentation.war จะเป็นที่เก็บ api และ documents สำคัญต่างๆที่เกี่ยวกับการพัฒนา Struts application
- struts-example.war เป็นตัวอย่าง MailReader application เอาไว้ให้เราลองศึกษาดู จากนั้นให้เรา copy war file พวกนี้ไปที่ \webapps
เมื่อทุกอย่างพร้อมแล้ว มาเริ่มพัฒนา Struts Application กัน ในตอนต่อไป
2. ติดตั้ง IDE เพื่อช่วยในการเขียนเช่น Eclipse , Netbeans , JDev หรืออะไรก็แล้วแต่ เพียงแต่ที่ยกตัวอย่างมานั้น Netbean และ JDev นั้น support Struts ด้วยกันทั้งนั้นแต่ Eclipse ไม่ได้ support Struts จึงต้อหา plugin มาช่วยใช้ในการพัฒนา เช่น Myeclipse ที่รวม plugin สำคัญๆไว้หมดแล้วก็ได้ อันนี้แล้วแต่ครับขึ้นอยุ่กับความถนัดใน IDE ของแต่ละคน ขั้นตอนการใช้งานก้ต่างกันนิดหน่อยครับ แต่ที่ผมใช้คือ Eclipse+Exadel เพราะว่า plugin Exadel ภายในจะประกอบด้วย tomcat, struts framework ซึ่งเราไม่ต้องลง tomcat และ struts เลยมันมีให้เบ็ดเสร็จ เพียงแค่ install plugin Exadel ก็ใช้งานได้เรียบร้อย ซึ่งถ้าคุณไม่ใช้ plugin Exadel ก็ต้องติดตั้ง Tomcat และ Struts
- ติดตั้ง Tomcat สามารถ download ได้จาก ที่นี่ ซึ่งมีหลาย version ให้ใช้งานและในแต่ละเวอร์ชั่นก็มีหลายแบบให้ download ผมแนะนำให้ download แบบ .zipเมื่อ download มาแล้วก้ขยาย zip ไว้ก็เรียบร้อย เราใช้ tomcat เพื่อทำหน้าที่เป็น http server และ servlet containerในส่วนนี้เราสามารถใช้ application server ตัวอื่นๆก็ได้เช่น oc4j, glassfish, jboss, oracle application server ฯลฯ ในตัวอย่างนี้ผมขอใช้ tomcat เพราะไม่กิน resource มากแล้วก็ฟรีครับ ^^
- ติดตั้ง Struts Application download ได้จาก ที่นี่ ในปัจจุบัน Struts ออกเวอร์ชั่น 2 แล้วแต่ที่ผมใช้อยู่เป็น Struts 1.3.8เมื่อ download มาแล้วให้แตกไฟล์ออกมาจะได้ folder struts-1.3.8 ให้เข้าไป struts-1.3.8\apps จะเห็น war ไฟล์
- struts-black-1.3.8.war เป็น struts application เปล่าๆที่ใช้ในการสร้าง struts application ซึ่งเราจะใช้ไฟล์นี้ในการสร้าง web application ของเรา
- struts-documentation.war จะเป็นที่เก็บ api และ documents สำคัญต่างๆที่เกี่ยวกับการพัฒนา Struts application
- struts-example.war เป็นตัวอย่าง MailReader application เอาไว้ให้เราลองศึกษาดู จากนั้นให้เรา copy war file พวกนี้ไปที่ \webapps
เมื่อทุกอย่างพร้อมแล้ว มาเริ่มพัฒนา Struts Application กัน ในตอนต่อไป
เว็บเซอร์วิส (Web Service)
เว็บเซอร์วิส (Web Service)
ความหมายของเว็บเซอร์วิส
เว็บเซอร์วิส (Web service) คือ
ระบบซอฟต์แวร์ที่ออกแบบมา เพื่อสนับสนุนการแลกเปลี่ยนข้อมูลกัน
ระหว่างเครื่องคอมพิวเตอร์ผ่านระบบเครือข่าย
โดยที่ภาษาที่ใช้ในการติดต่อสื่อสารระหว่างเครื่องคอมพิวเตอร์
คือเอกซ์เอ็มแอล เว็บเซอร์วิสมีอินเทอร์เฟส
ที่ใช้อธิบายรูปแบบข้อมูลที่เครื่องคอมพิวเตอร์ประมวลผลได้ เช่น WSDL ระบบ
คอมพิวเตอร์ใช้งานสื่อสารโต้ตอบกับเว็บเซอร์วิสตามรูปแบบที่ได้กำหนดไว้แล้ว
โดยการส่งสาสน์ตามอินเตอร์เฟสของเว็บเซอร์วิสนั้น
โดยที่สาสน์ดังกล่าวอาจแนบไว้ในซอง SOAP หรือส่งตามอินเตอร์เฟสในแนวทางของ REST สาสน์เหล่านี้ปกติแล้วถูกส่งโดยอาศัย HTTP และใช้ XML ร่วม
กับมาตรฐานเกี่ยวกับเว็บอื่นๆ โปรแกรมประยุกต์ที่เขียนโดยภาษาต่างๆ
และทำงานบนแพลตฟอร์มต่างๆกันสามารถใช้เว็บเซอร์วิสเพื่อแลกเปลี่ยนข้อมูล
ผ่านทางเครือข่ายคอมพิวเตอร์ เช่น อินเทอร์เน็ต
ในลักษณะเดียวกับการสื่อสารระหว่างโปรเซส (Inter-process communication) บน
เครื่องเดียวกัน ความสามารถในการแลกเปลี่ยนข้อมูลระหว่างระบบที่ต่างกันนี้
(เช่น การแลกเปลี่ยนข้อมูลระหว่าง โปรแกรมที่เขียนโดยภาษาจาวา
และโปรแกรมที่เขียนโดยภาษาไพทอน
หรือการแลกเปลี่ยนข้อมูลระหว่างโปรแกรมประยุกต์ที่ทำงานบนไมโครซอฟท์
วินโดวส์และโปรแกรมประยุกต์ที่ทำงานบนลินุกซ์)
เกิดขึ้นได้เนื่องจากการใช้มาตรฐานเปิด โดย OASIS และ W3C เป็นคณะกรรมการหลักในการรับผิดชอบมาตรฐานและสถาปัตยกรรมของเว็บเซอร์วิส
ความหมายของเซอร์วิส (Service) หรือบริการในแง่ของเทคโนโลยี เราลองมาพิจารณาความหมายของบริการหรือกระบวนการ (Process) ที่
องค์กรต่างๆ ทั้งภาครัฐและเอกชนต่างให้บริการกับประชาชน ลูกค้า พนักงาน
หรือคู่ค้า
ตัวอย่างเช่นบริการที่พนักงานหน้าเคาท์เตอร์ของธนาคารสามารถให้บริการแก่
ลูกค้าอาจมีหลากหลายอาทิเช่น บริการฝาก/ถอนเงิน
บริการแลกเปลี่ยนเงินตราต่างประเทศ หรือบริการด้านสินเชื่อเป็นต้น
บริการแต่ละบริการอาจจะมีกระบวนการในการทำงานที่ซับซ้อนแตกต่างกัน
แต่ในมุมมองของลูกค้าจะไม่สนใจว่าบริการนั้นมีขั้นตอนการทำงานอย่างไร
แต่จะมีวัตถุประสงค์หลักเพื่อให้บริการนั้นเสร็จสิ้นและได้ผลลัพธ์ออกมาตาม
ที่ลูกค้าขอใช้บริการนั้นๆ
ความหมายของเซอร์วิสในแง่ของซอฟต์แวร์ ก็มีคุณลักษณะเช่นเดียวกับบริการทั่วๆ ไป กล่าวคือเป็นซอฟต์แวร์คอมโพเนนท์ (Software Component) ที่
อาจเป็น ฟังก์ชัน หรือ โมดูล ที่มีกระบวนการการทำงานภายใน
สามารถรับอินพุตเข้ามาเพื่อประมวลผล และจะส่งผลลัพธ์กลับออกไป
ซอฟต์แวร์เซอร์วิสเหล่านี้เราอาจกำหนดเป็นกระบวนการทางธุรกิจ (Business Process) กล่าวคือจะเป็นฟังก์ชันที่ทำเฉพาะการประมวลผลซึ่งจะไม่เกี่ยวข้องกับส่วนแสดงผล (Presentation Logic) นอกจากนี้ด้วยเทคโนโลยี Distributed Computing ทำให้สามารถที่จะพัฒนาซอฟต์แวร์เซอร์วิสเพื่อเรียกใช้จากระยะไกล (remote) ผ่าน Internet ได้โดยใช้เทคโนโลยีเฉพาะด้าน (proprietary technology) อาทิเช่น RMI, CORBA หรือ DCOM
เว็บเซอร์วิส (Web Service) อาจ
ไม่ได้เป็นเรื่องใหม่แล้ว
และคนวงการไอทีส่วนใหญ่เริ่มเข้าใจเทคโนโลยีเว็บเซอร์วิสดีขึ้น
มาตรฐานต่างๆ
ของเว็บเซอร์วิสเริ่มเป็นที่ยอมรับกันมากขึ้นและกลายเป็นมาตรฐานหลักในการ
พัฒนา SOA แต่การพัฒนาเว็บเซอร์วิสสำหรับประยุกต์
ใช้งานจริงในองค์กรยังเพิ่งเริ่มต้นและวัตถุประสงค์ในการพัฒนายังไม่ชัดเจน
นัก แต่เมื่อมีการกล่าวถึงการพัฒนาสถาปัตยกรรมเชิงบริการ (SOA) ภายในองค์กรกันมากขึ้น โดยเฉพาะความต้องการขององค์กรที่จะทำการเชื่อมโยงระบบภายในองค์กร (Internal Enterprise Application Integration) จึงทำให้องค์กรสนใจจะนเทคโนโลยีเว็บเซอร์วิสเข้ามาช่วยในการพัฒนาโปรแกรมต่างๆ มากขึ้น บทความนี้จะเป็นการแนะนำเทคโนโลยีเว็บเซอร์วิส ประโยชน์ และมาตรฐานต่างๆ ของเว็บเซอร์วิส การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวา (Java Technology)
รูปที่ 1 ซอฟต์แวร์เซอร์วิสโดยใช้ Distributed Computing
เว็บเซอร์วิสจะใช้หลักการของซอฟต์แวร์เซอร์วิสของ Distributed Computing แต่จะใช้โพรโทคอลที่มีมาตรฐานกลาง (Standard Protocol) ที่อยู่ในรูปแบบ XML (eXtensible Markup Language) และจะเป็นซอฟต์แวร์คอมโพเนนท์ที่ให้บริการผ่านอินเตอร์เน็ต
Gartner Research ได้ให้คำนิยามของเว็บเซอร์วิสไว้ดังนี้ ”เว็บเซอร์วิสคือ ซอฟต์แวร์คอมโพเนนท์แบบ loosely coupled ที่ส่งบริการผ่านเทคโนโลยีอินเตอร์เน็ตที่มีมาตรฐาน”
พื้นฐานของ Web Service
พื้นฐานของ Web Service คือ XML และส่วนใหญ่จะใช้ HTTP แต่อาจจจะใช้อินเทอร์เน็ตโพรโทคอลอื่นอย่างเช่น SMTP หรือ FTP ก็ได้ แต่จะพบว่า HTTP ก็เป็นที่รู้จักกันดี และไปได้ทั่วทุกแห่งที่มี internet ส่วน XML คือภาษาสากลที่คุณสามารถปรับแต่งได้ตามใจชอบ เพื่อให้เกิดกิจกรรมระว่าง client และบริการ หรือระหว่างส่วนประกอบต่างๆ เบื้องหลัง Web server ก็คือ ข้อความ XML จะถูกแปลงให้การขอบริการจาก Middle ware และผลที่ได้ก็จะแปลงกลับมาในรูป XML
ยกตัวอย่างให้เห็นง่ายๆ คุณต้องการให้เครื่อง PC อ่านค่าจาก serial port แล้วส่งไปประมวลผลบนเครื่อง UNIX แล้วส่งผลกลับมาแสดงบนจอ PC ถ้าเป็นเมื่อก่อน คุณก็คงต้องแปลงข้อมูลที่ได้ให้อยู่ในรูปของ ASCII แล้วส่งไปยัง UNIX พร้อมคำสั่งว่าให้ทำอะไร ในฝั่ง UNIX คุณก็ต้องมาแยกว่าอันไหนคือคำสั่ง อันไหนคือข้อมูล เมื่อประมวลผลแล้ว จะส่งกลับมาในรูปแบบไหน แล้วถ้าหากจะส่งไปหาเครื่องที่เป็น MAC ท่านจะต้องเขียนโปรแกรมเพิ่มในส่วนไหนบ้าง จะพบว่าเราต้องพัฒนากันเป็นคู่ๆ ไป และต้องนิยามในแต่ละฝั่งให้ชัดเจน แต่หากเป็น Web Service คุณจะพบว่า เราแปลงข้อมูลให้อยู่ในรูป XML แต่ละคุณก็ต้องการรู้แค่ มาตรฐาน XML ก็พอ แล้วต่างคนต่างก็เขียน Service ของตัวเอง ไม่ต้องกังวลเรื่องของการเชื่อมโยงอีกต่อไป และ Protocol ที่ส่งก็คือ HTTP นั่นเอง ถ้าท่านเชื่อมโยงกับ HTTP (หรือเว็บ) ได้ ท่านก็ใช้บริการทุกอย่างได้
คุณลักษณะพื้นฐานของเว็บเซอร์วิสมีดังนี้
· เว็บเซอร์วิสเป็นซอฟต์แวร์คอมโพเนนท์ที่ระบุตำแหน่งโดยใช้ URI
· อินเตอร์เฟสและการติดตั้งของเซอร์วิสจะนิยาม อธิบาย และค้นหาโดยใช้ ภาษาXML
· เว็บเซอร์วิสสนับสนุนการเรียกใช้จากซอฟต์แวร์ประยุกต์อื่นๆ ผ่านโพรโทคอลอินเตอร์เน็ต
· เว็บเซอร์วิสใช้เอกสารแบบ XML ในการส่งข้อมูลระหว่างผู้ให้บริการและผู้ใช้
· เว็บเซอร์วิสช่วยในการเชื่อมโยงโปรแกรมประยุกต์ต่างแพลตฟอร์ม (Cross-platform Integration) ผ่านอินเตอร์เน็ต
· นักพัฒนาสามารถพัฒนาเว็บเซอร์วิสได้โดยใช้โปรแกรมภาษาคอมพิวเตอร์ต่างๆเช่น Java, C, C# หรือ Visual Basic และสามารถพัฒนาโดยการเปลงซอฟต์แวร์คอมโพเนนท์ที่มีอยู่ให้เป็นเว็บเซอร์วิส
· เว็บเซอร์วิสจะไม่รวมถึงการจัดการส่วนแสดงผลเหมือน HTML
· เว็บเซอร์วิสจะเป็นซอฟต์แวร์คอมโพเนนท์แบบ loosely couple ดังนั้นแต่ละคอมโพเนนท์จะเป็นอิสระและมีฟังก์ชันที่สมบูรณ์ในตัว
· เราสามารถที่จะค้นหาและเรียกใช้เว็บเซอร์วิสจาก registry ที่เป็นแบบ public หรือ private โดยใช้มาตรฐานกลางเช่น UDDI และ ebXML
· เว็บเซอร์วิสสามารถที่จะเรียกใช้โดย client ต่างๆ ได้เช่น คอมพิวเตอร์ โทรศัพท์เคลื่อนที่ หรือ พีดีเอ
เหตุผลของการพัฒนาเว็บเซอร์วิส
เว็บเซอร์วิสจะแตกต่างกับโปรแกรมประยุกต์บนเว็บ (Web Application) และDistributed Computing (Distributed Application) ทั้งนี้เพราะโปรแกรมประยุกต์บนเว็บ จะเป็นโปรแกรมเพื่อให้ผู้ใช้ (End User) สามารถโต้ตอบกับโปรแกรมผ่านเว็บไซต์ได้ ไม่ใช่ Distributed Computing ที่เป็นซอฟต์แวร์เซอร์วิสและไม่สามารถเรียกใช้จากผู้ใช้ที่หลากหลายได้ ส่วนข้อจำกัดของ Distributed Computing คือจะยึดติดกับโพรโทคอลเฉพาะเช่น RMI หรือ CORBA และโพรโทคอลเหล่านี้เป็นแบบไบนารี่ (Binary Protocol) จึง
ผูกอยู่กับเทคโนโลยีใดเทคโนโลยีหนึ่ง
ดังนั้นจะเห็นได้ว่าเว็บเซอร์วิสไม่ใช่แนวคิดใหม่
เพียงแต่เปลี่ยนรูปแบบโพรโทคอลและหลักการบางอย่างที่เคยใช้ใน Distributed Computing เหตุผลสำคัญที่ควรเลือกพัฒนาเว็บเซอร์วิสมากกว่าการพัฒนาโปรแกรมประยุกต์บนเว็บและ Distributed Computing คือ
1.เว็บเซอร์วิสใช้โพรโทคอลที่เป็นมาตรฐานโดยใช้รูปแบบ XML
2.เราสามารถเรียกใช้เว็บเซอร์วิสโดย XML-based RPC จึงทำให้สามารถเรียกผ่าน Firewall ซึ่งแตกต่างกับกรณีของเทคโนโลยีแบบกระจาย
3.เว็บเซอร์วิสสนับสนุนการทำงานร่วมกันของโซลูชัน ที่ข้ามแพลตฟอร์มและใช้ภาษาคอมพิวเตอร์ที่ต่างกันได้ โดยการส่งข้อมูลแบบ XML
4.เว็บเซอร์
วิสสนับสนุนการการเรียกใช้จากซอฟต์แวร์ประยุกต์อื่นๆ
ผ่านโพรโทคอลอินเตอร์เน็ต
ซึ่งแตกต่างกับโปรแกรมประยุกต์บนเว็บที่เป็นการเรียกโดยตรงจากผู้ใช้
จุดเด่นของการพัฒนาเว็บเซอร์วิสสามารถที่จะสรุปได้ดังนี้
· การเชื่อมโยง (Interoperable): สนับสนุนการเชื่อมโยงกันระหว่างโปรแกรมประยุกต์ที่หลากหลาย (Heterogeneous Applications) ได้ โดยใช้มาตรฐานเว็บที่เป็นกลาง
· ลดค่าใช้จ่าย (Economical): สนับสนุนการนำซอฟต์แวร์คอมโพเน้นท์กลับมาใช้ใหม่ (reuse) และไม่ต้องยึดติดกับเทคโนโลยีเดิม
· อัตโนมัติ (Automatic): สนับสนุนการการเรียกใช้จากโปรแกรมโดยตรง โดยไม่ต้องโต้ตอบกับผู้ใช้
· เข้าถึงได้ (Accessible): สามารถที่จะเรียกใช้โปรแกรมเดิม (Legacy) หรือโปรแกรมภายในผ่านเว็บได้
· ใช้ได้ตลอด (Available): สนับสนุนการเรียกใช้ได้ทุกที่ ทุกอุปกรณ์ และทุกเวลา
· ขยายได้ (Scalable): ไม่ได้จำกัดขนาดของโปรแกรมหรือจำนวนของระบบต่างๆ
โมเดลการทำงานของเว็บเซอร์วิส
กระบวนการการทำงานของเว็บเซอร์วิสจะมีขั้นตอนการทำงานเช่นเดียวกับซอฟต์แวร์เซอร์วิสที่ใช้ Distributed Computing ดังอธิบายในรูปที่ 1 ซึ่งเราสามารถที่จะแบ่งบทบาทองค์ประกอบของเว็บเซอร์วิสได้เป็นสามส่วน โดยทั้งสามองค์ประกอบมีความสัมพันธ์ดังแสดงในรูปที่ 2 และสามารถอธิบายได้ดังนี้
· ผู้ให้บริการ (Service Provider): ผู้ให้บริการจะมีหน้าที่ในการพัฒนาและติดตั้งเว็บเซอร์วิส และเป็นผู้ที่นิยามความหมายของเซอร์วิสและลงทะเบียนเซอร์วิสกับ Service Registry
· ผู้ใช้บริการ (Service Requestor): ผู้
ใช้บริการจะเป็นผู้เรียกใช้เว็บเซอร์วิส
โดยอาจทำการค้นหาเซอร์วิสจากเซอร์วิสไดเร็กทอรี่
แล้วทำการเรียกใช้เซอร์วิสจากผู้ให้บริการ
· Service Registry: หรืออาจเรียกว่า Service Broker มีหน้าที่ในการรับลงทะเบียนและช่วยในการค้นหาเว็บเซอร์วิส Service Registry จะ
เก็บรายละเอียดของเว็บเซอร์วิสต่างๆเช่น นิยาม และตำแหน่งของเว็บเซอร์วิส
ทำหน้าที่คล้ายกับสมุดโทรศัพท์เพื่อช่วยให้ผู้ใช้บริการสามารถค้นหาเซอร์วิส
ที่ต้องการได้
รูปที่ 2 โมเดลการทำงานของเว็บเซอร์วิส
มาตรฐานหลักของเว็บเซอร์วิส
มาตรฐานหลักของการพัฒนาเว็บเซอร์วิสจะประกอบไปด้วยมาตรฐานต่างๆดังนี้ XML WSDL SOAP และ UDDI รายละเอียดของแต่ละมาตรฐานมีดังนี้
1. Extensible Markup Language (XML)
XML เป็นมาตรฐานที่ทาง W3C (World Wide Web Consortium) ประกาศให้เป็นมาตรฐานของข้อมูลเมื่อเดือนกุมภาพันธ์ ปี 1998 โดย XML จะอยู่ในรูปของไฟล์ข้อความที่ใช้ Unicode และสามารถที่สร้างรูปแบบในการที่จะแสดงข้อมูลที่ซับซ้อนในรูปแบบของข้อความที่สามารถอ่านได้ง่าย ในปัจจุบัน XML ได้
กลายเป็นมาตรฐานสำคัญสำหรับการกำหนดโครงสร้างข้อมูล เนื้อหา
และรูปแบบของข้อมูลของเอกสารอิเล็กทรอนิกส์
และยังมีการพัฒนาเพื่อให้สามารถแลกเปลี่ยนข้อมูลระหว่างหน่วยงาน
โปรแกรมประยุกต์ ระบบ และอุปกรณ์ต่างผ่านทางอินเตอร์เน็ตได้อีกด้วย
2. Simple Object Access Protocol (SOAP)
SOAP เป็นภาษา XML เพื่อทำหน้าที่เป็นโพรโทคอลข่าวสาร (Message Protocol) สำหรับการแลกเปลี่ยนข้อมูลระหว่างผู้ให้บริการและผู้ใช้บริการ โครงสร้างของ SOAP จะประกอบไปด้วย
· SOAP Envelope: ใช้ในการอธิบายข่าวสาร ระบุเนื้อหา และกระบวนการจัดการข้อมูล
· SOAP Transport: ใช้ในการอธิบายโพรโทคอลการส่งข้อมูลเช่น HTTP หรือ SMTP
· SOAP Encoding: ใช้ในการอธิบายการเข้ารหัสเพื่อจับคู่ชนิดข้อมูล (data type) ที่ใช้ในโปรแกรมประยุกต์กับ XML elements
โพรโทคอล SOAP เปรียบเสมือนจดหมายที่ใช้ในการสื่อสาร แต่ยังต้องใช้โพรโทคอลในการสื่อสารอื่นๆ เช่น HTTP ในการทำหน้าที่ส่งจดหมาย SOAP เป็นโพรโทคอลแบบข้อความ ซึ่งแตกต่างกับโปรโคคอล IIOP ของ CORBA หรือ JRMP ของ RMI ที่เป็นโพรโทคอลแบบไบนารี่ จึงทำให้ SOAP สามารถที่จะใช้ส่งข้อความข้ามแฟลตฟอร์ม และระบบต่างๆ ได้ และเวอร์ชันล่าสุดของ SOAP คือ 2.0
การส่งข้อความ SOAP มีสองรูปแบบคือ SOAP-RPC และ SOAP message โดย SOAP-RPC ใช้ในการส่งข้อความเพื่อใช้เรียกเมธอดหรือ procedure ซึ่งโดยมากจะเป็นรูปแบบ synchronous โดย SOAP จะส่ง SOAP Request และข้อมูลต่างๆ เพื่อเรียกใช้เมธอดในการประมวลผล และจะรอให้ได้ผลลัพธ์การประมวลผลที่ส่งกลับมาแบบ SOAP Response ส่วน SOAP-message ใช้ในการส่งข่าวสารหรือข้อมูลในรูปแบบ XML ระหว่างผู้ให้บริการและผู้ใช้บริการ โดยสามารถส่งได้ทั้งแบบ Synchronous และ Asynchronous
3.Web Services Description Language (WSDL)
WSDL เป็นภาษา XML ที่ใช้อธิบายเว็บเซอร์วิส โดยจะแบ่งการอธิบายเว็บเซอร์วิสเป็นสองส่วนดังนี้
o ส่วนที่เป็นนามธรรม (Abstract) เพื่ออธิบายโอเปอเรชัน (Operation) อินพุตและเอาท์พุตพารามิเตอร์
o ส่วนที่เป็นรูปธรรม (Concrete) เพื่ออธิบายโพรโทคอลของเน็ตเวอร์ค ตำแหน่งของจุดปลายทาง (Endpoint Address) และ รูปแบบของข้อมูล
ในปัจจุบัน W3C ได้ออกข้อกำหนดสำหรับ WSDL เป็นเวอร์ชัน 2.0 แต่คำสั่งบางคำสั่งจะไม่สอดคล้องกับเวอร์ชัน 1.0 ดังนั้นการจะเรียกใช้ WSDL ควรมีการตรวจสอบว่าเครื่องมือที่ใช้พัฒนาสอดคล้องกับเวอร์ชันใดWSDL สามารถเปรียบเทียบได้กับ Java interface ที่ใช้ใน RMI หรือ ภาษา IDL (Interface Description Language) ที่ใช้ใน CORBA สำหรับ Distributed Computing
4.Universal Description, Discovery and Integration (UDDI)
UDDI นิยามรูปแบบและกลไกสำหรับ registry ที่ใช้ในการเก็บและประกาศข้อมูลเกี่ยวกับเว็บเซอร์วิสในรูปแบบของภาษา XML โดยที่ UDDI จะ
เปรียบเสมือนสมุดโทรศัพท์หน้าเหลืองที่องค์กรธุรกิจต่างๆ
ใช้ระบุและโฆษณาหมายเลขโทรศัพท์ขององค์กรเพื่อให้ผู้ใช้โทรศัพท์ค้นหาได้
โดยทั่วไป Service Registry จะใช้ UDDI เป็นมาตรฐานเพื่อให้ผู้ให้บริการสามารถลงทะเบียนประกาศเว็บเซอร์วิสได้ และผู้ใช้บริการก็สามารถจะติดต่อกับ UDDI Registry เพื่อค้นหาเซอร์วิสที่ต้องการและเรียกใช้จากผู้ให้บริการต่อไป
ข้อมูลใน UDDI จะประกอบไปด้วยรายละเอียดเกี่ยวกับองค์กร (businessEntity) รายละเอียดเกี่ยวกับเซอร์วิส (businessService) รายละเอียดเกี่ยวกับการติดต่อ (bindingTemplate) URLสำหรับการเรียกใช้เซอร์วิส (accessPoint) และข้อมูลอ้างอิงไปยัง WSDL (tModelInstanceInfo) มาตรฐาน UDDI ล่าสุดเป็นเวอร์ชัน 3.0 นอกจากนี้เรายังสามารถที่จะแบ่ง Registry ได้เป็นสองประเภทคือ public registry ซึ่งเป็น registry ที่เปิดให้ใช้ทั่วไปทั้งภายใน และภายนอกองค์กร กับ private registry ซึ่งเป็น registry ที่เปิดให้ใช้เฉพาะภายใน การควบคุมดูแล public registry จะเป็นไปได้ยากกว่า จึงทำให้องค์กรส่วนมากจะเริ่มต้นการพัฒนาจาก private registry ก่อน
5.มาตรฐานอื่นๆ ของเว็บเซอร์วิส
มาตรฐาน WSDL SOAP และ UDDI เป็นเพียงมาตรฐานพื้นฐานของเว็บเซอร์วิส การพัฒนาเว็บเซอร์วิสในทางปฏิบัติจำเป็นต้องพิจารณาเรื่องอื่นเช่น ความปลอดภัย Transaction หรือ Messaging เป็นต้น ดังแสดงในรูปที่ 3 ซึ่งแสดงตัวอย่างมาตรฐานเว็บเซอร์วิสอื่นๆ ตามฟังก์ชันของการทำงาน โดยจะมีมาตรฐานที่สำคัญ อาทิเช่น
รูปที่ 3 มาตรฐานต่างๆ ที่เกี่ยวข้องกับเว็บเซอร์วิส
· WS-Addressing: มาตรฐานที่ใช้ร่วมกับ SOAP Header ในการระบุโพรโทคอลการสื่อสารและระบบข่าวสาร (Messaging Systems)
· WS-Security: มาตรฐานที่เป็นโครงสร้าง (Framework) เพื่อเชื่อมต่อกับเทคโนโลยีระบบความปลอดภัยต่างๆ
· SAML: Security Assertion Markup Language เป็นมาตรฐานที่ทาง OASIS กำหนดขึ้นเพื่อสนับสนุนการทำ Single Sign On (SSO) และ Authentication
· WS-BPEL: มาตรฐานสำหรับการประกอบ (orchestration) กระบวนการทางธุรกิจ (Business Process) โดยใช้คำสั่งที่เป็นภาษา XML
· WSRP: Web Services for Remote Portal มาตรฐานสำหรับการเรียกใช้ Web Services จากเว็บท่า (Portal)
การพัฒนา SOA โดยใช้เว็บเซอร์วิส
แม้การพัฒนาสถาปัตยกรรมเชิงบริการ (Service Oriented Architecture หรือ SOA) ในยุคแรกจะสามารถทำได้โดยใช้เทคโนโลยีอื่นๆ อาทิเช่น CORBA, Java RMI และ DCOM หรือสามารถใช้ MOM (Message Oriented Middleware)เพื่อพัฒนา SOA ในรูปของการแลกเปลี่ยนข้อมูลของสถาปัตยกรรม EAI ที่นิยมใช้ทั่วไป แต่ในปัจจุบันการพัฒนา SOA โดยใช้เทคโนโลยีเว็บเซอร์วิสเริ่มได้รับการยอมรับมากกว่าเทคโนโลยีอื่นๆ ด้วยเหตุผลดังนี้
· เว็บเซอร์วิสอิงอยู่กับมาตรฐานที่เปิดเช่น SOAP WSDL UDDI และ
มาตรฐานเว็บเซอร์วิสอื่นๆ
ทำให้องค์กรต่างไม่จำเป็นที่จะต้องลงทุนกับโซลูชันที่ใช้เทคโนโลยีเฉพาะ
และป้องกันการผูกขาดโดยผู้ผลิตรายใดรายหนึ่ง
· เว็บเซอร์วิสสนับสนุนการเชื่อมโยงกับโซลูชันของผู้ผลิตต่างๆ ทำให้ช่วยลดต้นทุน
· เว็บเซอร์วิสสนับสนุนการเชื่อมโยงระบบ แพลตฟอร์ม และโซลูชันต่างๆทั้งภายในองค์กร ระหว่างองค์กร และภายนอก
รูปที่ 4 แสดงตัวอย่างการพัฒนา SOA โดยใช้เทคโนโลยีเว็บเซอร์วิส สร้างเซอร์วิสจากเทคโนโลยีที่ต่างกันคือ IMS, CORBA, Java EE และ Workflow โดยมีสถาปัตยกรรมแต่ละส่วนดังนี้
· Business Service Tier : ประกอบด้วยเซอร์วิสที่พัฒนามาจากเทคโนโลยี IMS, CORBA และ โปรแกรม Workflow และมีเว็บเซอร์วิสที่พัฒนาโดยใช้เทคโนโลยีJava EE
· Business Access Tier : จะมี Service Registry (เช่น UDDI) สำหรับการลงทะเบียนและค้นหาเว็บเซอร์วิส ดังนั้นจึงต้องมี Legacy gateways เพื่อแปลงเซอร์วิสที่ใช้เทคโนโลยีให้เป็นเว็บเซอร์วิสสำหรับIMS, CORBA และใช้ WebSphere MQ เพื่อแปลง Workflow ให้เป็นเว็บเซอร์วิส
· Communication Infrastructure : จะใช้โพรโทคอล SOAP บน HTTP และ SOAP ที่ใช้มาตรฐาน WS-ReliableMessaging
· Client/Presentation : ตัวอย่างนี้แสดงการใช้โปรแกรมแสดงผลที่พัฒนาโดยเทคโนโลยี .NET
รูปที่ 4 ตัวอย่างการพัฒนา SOA โดยใช้เทคโนโลยีเว็บเซอร์วิส
การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวา
การ
พัฒนาเว็บเซอร์วิสสามารถแบ่งได้ตามบทบาทของผู้เกี่ยวข้องคือ
การพัฒนาเพื่อเป็นผู้ให้บริการ การพัฒนาเพื่อเป็นผู้ใช้บริการ
และการพัฒนาสำหรับ Service Registry เทคโนโลยีจาวาที่สามารถจะพัฒนาเว็บเซอร์วิสได้จะอยู่ในแพลตฟอร์มที่เป็น Java EE โดยใน Java EE 5 ได้กำหนดคำสั่ง API สำหรับภาษาจาวาในการเรียกใช้ XML ต่างๆ ดังนี้
· JAX-WS (Java API for XML-Based Web Services) เป็นชุดคำสั่งภาษาจาวาเพื่อพัฒนาให้บริการเว็บเซอร์วิสและเรียกใช้เว็บเซอร์วิส โดยจะสนับสนุนมาตรฐานต่างๆของ W3C เช่น SOAP และ WSDL และสนับสนุนการส่งข้อมูลทั้งแบบ Asynchronous และ Synchronous พร้อมทั้งทำการ binding ข้อมูลโดยใช้ JAXB ดังนั้นนักพัฒนาโปรแกรมสามารถใช้ภาษาจาวาสร้างและเรียกเว็บเซอร์วิสได้ โดยไม่จำเป็นต้องพัฒนา SOAP หรือ WSDL เอง
· JAXB (Java Architecture for XML Binding) เป็นชุดคำสั่งภาษาจาวาเพื่อทำการจับคู่ (mapping) ข้อมูลที่เป็นภาษา XML กับออปเจ็คที่เป็นจาวาคลาส
· JAXP (Java API for XML Processing) เป็นชุดคำสั่งภาษาจาวาเพื่อแปล แปลง ตรวจสอบความถูกต้อง และค้นหา เอกสารหรือไฟล์ที่เป็นภาษา XML
· SAAJ (SOAP with Attachments API for Java) เป็นชุดคำสั่งภาษาจาวาเพื่อสนับสนุนการส่งเอกสาร XML ผ่านอินเตอร์เน็ต
· JAX-RPC (Java API for XML-Based RPC) เป็นชุดคำสั่งสำหรับพัฒนาเว็บเซอร์วิสเช่นเดียวกับ JAX-WS แต่จะใช้สำหรับ J2EE เวอร์ชัน 1.4 และสนับสนุน SOAP 1.1
· WSIT (Web Services Interoperability Technology) เป็นชุดคำสั่งภาษาจาวาเพื่อเชื่อมโยงระหว่าง Java EE และ .NET 3.0 ช่วยในการพัฒนาโปรแกรมผ่านสถาปัตยกรรม SOA
สำหรับแพลตฟอร์ม Java SE จะมี API สำหรับ XML อยู่ในเวอร์ชัน 6 (Java SE 6) โดยจะมีชุดคำสั่ง JAX-WS 2.0 JAXB 2.0 และ SAAJ 1.3
การพัฒนาเพื่อให้บริการเว็บเซอร์วิสจะต้องใช้แพลตฟอร์ม Java EE ซี่ง Server ที่เป็น Java EE จะมองการให้บริการเว็บเซอร์วิสเป็นเพียงพอร์ตหรือช่องทาง (channel)หนึ่งในการบริการเซอร์วิส ดังนั้นจึงไม่มีผลทำให้สถาปัตยกรรมเปลี่ยนไป และสามารถนำคอมโพเน้นท์ของ Java EE (เช่น Session Bean) ที่มีอยู่มาพัฒนาเป็นเว็บเซอร์วิสได้โดยง่าย นอกจากนี้การพัฒนาเว็บเซอร์วิสบนเทคโนโลยีจาวา ยังสามารถที่จะได้ใช้จุดเด่นของแพลตฟอร์ม Java EE ในด้านความปลอดภัย ความเชื่อมั่น (Reliability) และการรองรับผู้ใช้จำนวนมาก (Scalability)
เว็บเซอร์วิสคือพอร์ตหนึ่งในแพลตฟอร์ม Java EE ซึ่งจะทำงานภายใน Java EE Container โดย container จะเป็น Runtime environmentของคอมโพเน้นท์ที่เป็นเว็บเซอร์วิส โดยมีคำสั่ง JAX-WS หรือ JAX-RPC ในการที่จะติดต่อกับ Runtime environment อีกชั้นหนึ่ง โดยทั่วไปเราสามารถที่จะสร้างคอมโพเน้นท์ของเว็บเซอร์วิสได้สองประเภทดังแสดงในรูปที่ 5 คือ
· เว็บเซอร์วิสแบบWeb-tier (โดยใช้ Servlet endpoint) ตัวอย่างเช่น Tomcat หรือ Axis
· เว็บเซอร์วิสแบบEJB-tier (โดยใช้ Session Bean endpoint) ตัวอย่างเช่น Sun Java Application Server
การพัฒนาเว็บเซอร์วิสสำหรับหน่วยงานขนาดเล็กอาจสามารถทำได้โดยใช้ เว็บเซอร์วิสแบบ Web-tier แต่หากต้องพัฒนาเพื่อรองรับผู้ใช้จำนวนมากจำเป็นต้องใช้ เว็บเซอร์วิสแบบ EJB-tier ดังนั้นผู้พัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวาควรจะมีความเข้าใจเรื่อง Application Server และสามารถพัฒนา EJB ได้
รูปที่ 5 Java Web Service Components
แม้
หลักการของเว็บเซอร์วิส จะอิงอยู่กับมาตรฐานต่างๆ
แต่การพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยี
จาวาสามารถทำได้โดยไม่ต้องพัฒนาโพรโทคอล SOAP หรือ WSDL โดยตรง นอกจากนี้ยังมีเครื่องมือเพื่อให้สามารถพัฒนาโปรแกรมได้โดยง่ายเช่น NetBeans 5.5 ผู้ที่สนใจจะพัฒนาเว็บเซอร์วิสโดยใช้ NetBeans
บทสรุป
เว็บเซอร์
วิสเป็นซอฟต์แวร์คอมโพเน้นท์
ที่ให้บริการผ่านเทคโนโลยีอินเตอร์เน็ตโดยใช้มาตรฐานเปิด
มาตรฐานพื้นฐานของเว็บเซอร์วิสประกอบด้วย XML SOAP WSDL และ UDDI เว็บเซอร์วิสเป็นเทคโนโลยีที่เหมาะสมในการนำไปพัฒนา SOA ทั้ง
นี้เนื่องจากใช้มาตรฐานเปิดและไม่ผูกติดอยู่กับเทคโนโลยีใดเทคโนโลยีหนึ่ง
แต่การพัฒนาเว็บเซอร์วิสในทางปฏิบัติยังต้องคำนึงถึงมาตรฐานอื่นๆอีกมากเช่น
เรื่องความปลอดภัย เราสามารถที่จะพัฒนาเว็บเซอร์วิสโดยใช้เทคโนโลยีจาวาได้
ซึ่งจะมีจุดเด่นในด้านความปลอดภัย ความเชื่อมั่น
และความสามารถในการรองรับผู้ใช้จำนวนมาก
แหล่งที่มา :
http://www.thaijavadev.com/soa/articles/WSIntro/WSIntro.html
http://th.wikipedia.org/wiki_Web_Service
สมัครสมาชิก:
บทความ (Atom)