มองเป็น operation ใน service นี่มันยังไงคะ
จริงๆเราว่าถ้าเป็น SOA ก็คือ มองแค่ว่า ชั้นอยากได้บริการนี้ ชั้นไปที่นี่ บอกความต้องการของชั้น แล้วชั้นจะได้บริการของมันกลับมา เป็นอันจบ ส่วนจะไปทำยังไง วิธีการซับซ้อนแค่ไหน เป็นเรื่องที่เราไม่ต้องสนใจอะค่ะ
เราว่าใช้คำว่า operation มันดูจะละเอียดเกินไป (too-detailed)
ถ้าให้เรามอง เรามองว่า 1 service มีหลาย operation นะ ซึ่งเราว่ามันไม่น่าจะเป็นสิ่งที่เราควรจะสนใจอะค่ะ
Quote
ตามความเข้าใจของผม คำว่า Web Services มันน่าจะครอบคลุมกว้างกว่านั้น เช่น .. transfer protocol ไม่จำเป็นต้องเป็น SOAP ก็ได้ (มันเป็นแค่ binding แบบหนึ่งเท่านั้นเอง)
แต่สี่งที่คุณยกมา มันคือ WS-I Basic Profile ครับ
ค่ะ แต่จากประสปการ์ณ ถ้าอธิบายให้คนไม่มีพื้นฟังอะ เรารู้สึกว่าบอกให้ง่ายๆไปก่อนจะดีกว่า
ยิ่งถ้าเข้าไปเริ่มอ่านแรกๆ แล้วเจอสารพัด WS-* มันจะกลายเป็นมึนงงเอาอะค่ะ
คือว่ามันโคตรเยอะจริงๆ แล้วถ้าไปนั่งอ่าน spec เลย คงมึนตายอะค่ะ
อย่างรูป stack นะ UDDI/WSDL/SOAP
หลายๆคนเห็นครั้งแรกจะงงมาก เพราะหลายคนจะคุ้นกับ tcp stack มากกว่า
ก็จะเข้าใจว่ามัน build on top of another แบบ tcp stack ซะแทนอะค่ะ แล้วมันจะยิ่งงง
พอเข้าใจ concept พื้นฐานง่ายๆแล้ว ค่อยอธิบายต่อไปว่า จริงๆไม่ได้มีแค่ SOAP นะ ยังใช้แบบอื่นได้อีก อะไรแบบนี้อะค่ะ
คือเราพยายามหาวิธีอธิบายให้คนที่ยังไม่มีความรู้พื้นฐานมาก่อนฟังอะค่ะ จริงๆก็ไม่รุ้ว่าแบบนี้ดีป่าว เราอธิบายไม่ค่อยเก่งอะค่ะ
แต่จากประสปการ์ณตอนเราอ่านเนี่ยะ เรารู้สึกว่าเข้าใจ 3 ตัวนี้ก่อน แล้วถึงจะไปอ่านตัวอื่นๆต่อแล้วเข้าใจได้ง่ายขึ้นอะค่ะ
ใช่แล้วที่ว่า SOA เป็น concept อย่างนึง ก็เหมือน OO ซึ่งก็เป็น concept เหมือนกัน
แต่ concept เนี่ยะ สุดท้ายมันก็ต้องเอาไป implement จริงได้นะคะ มันถึงจะมีประโยชน์จริง
สำหรับเรานะ เรารุ้สึกว่า การอธิบายอะไรแบบยกตัวอย่างเป็น concept อย่างเดียว บางครั้งมันทำให้ไม่เข้าใจว่า พอจะไปทำจริงๆแล้วทำยังไงล่ะเนี่ยะ คือเราเป็นงั้นตอนเริ่มแรกอะค่ะ คือแบบ เออ เข้าใจแล้ว แต่แล้วทำไงล่ะ คือเราจิตนาการไม่ออกว่าพอจะไปเขียนโปรแกรมแล้วชั้นต้องทำไงล่ะเนี่ยะ อะ
เราก็เลยคิดว่าถ้าจะเริ่มศึกษา SOA แบบใช้จริงได้ ก็ควรจะ
1. เข้าใจ concept ของ SOA พอสมควร จริงๆเราว่าตัว principle of SOA ที่คุณ childzu ยกมาเนี่ยะ ถ้าเข้าใจก็เรียกว่าโอเคแล้วอะค่ะ เริ่มจับ implementation ได้แล้วล่ะ
2. ควรจะลองจับ implementation ซักตัว จะได้เข้าใจว่าพอเอามาทำจริงๆจะทำยังไง ซึ่งเรามองว่า WS น่าจับที่สุดในตอนนี้อะค่ะ แล้วพอเริ่มเข้าใจซักตัวแล้วล่ะก็ พอเปลี่ยนไปจับตัวอื่นๆ ก็น่าจะเข้าใจได้ง่ายและเร็วขึ้นอะค่ะ
Principle of SOA ที่คุณ childzu ยกมา เราคิดว่าคือหลักการของ SOA เลยอะค่ะ (หรือใครว่าไง?)
อย่างสมมุติถ้าให้เปรียบเทียบ WS กับ SOA principle
Services are reusable, Services are loosely coupled, Services are stateless, Services abstract underlying logic, Services are autonomous, Services are stateless -- พวกนี้จะเป็นหลัก design ซึ่งจะเป็นอะไรที่ควรจะ keep in mind ไว้
ส่วนที่เหลือ
2. Services share a formal contract - นี่คือ WSDL fileนั่นเอง เพราะจะบอกว่าต้องส่งอะไร ติดต่อยังไง ได้อะไรกลับคืน
5. Services are composable - WS ทำได้ เช่นใช้ BPEL4WS หรือภาษา composition อื่นๆ
8. Services are discoverable - อันนี้คือ UDDI นั่นเอง แต่จริงๆใช้ registry แบบอื่นก็ได้เหมือนกัน แต่เราเคยแงะแต่ UDDI อย่างเดียวอะค่ะ อันอื่นไม่เคยจับ