วิธีที่ง่ายที่สุดในการเพิ่มการบีบอัดให้กับ WCF ใน Silverlight
เมื่อพัฒนาแอปพลิเคชันด้วย Silverlight ที่เข้าถึงบริการ WCF นักพัฒนามักพบความท้าทายในการจัดการข้อมูล XML ขนาดใหญ่ ซึ่งอาจนำไปสู่การใช้แบนด์วิธที่ไม่มีประสิทธิภาพ เนื่องจากข้อมูลที่ไม่ได้บีบอัดที่ส่งผ่านเครือข่ายอาจมีขนาดใหญ่กว่าเกณฑ์ที่จำเป็น หากคุณเผชิญปัญหานี้และกำลังมองหาวิธีการที่ง่ายในการเพิ่มการบีบอัดให้กับการตอบสนองของบริการ WCF ของคุณ คุณมาถูกที่แล้ว!
ในบล็อกโพสต์นี้ เราจะสำรวจวิธีการเปิดใช้งานการบีบอัด gzip บน IIS7 เพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน Silverlight ของคุณโดยไม่จำเป็นต้องทำการเปลี่ยนแปลงโค้ดที่ซับซ้อน
ทำความเข้าใจกับปัญหา
บริบท
คุณอาจกำลังใช้งานแอปพลิเคชัน Silverlight ที่อิงกับบริการ WCF ผ่าน basicHttpBinding
เมื่อบริการส่งคืนข้อมูล XML ขนาดใหญ่ ขนาดของ payload ที่ได้อาจค่อนข้างหนัก ส่งผลให้ใช้แบนด์วิธมากเกินไป ตัวอย่างเช่น ผ่านการทดลอง นักพัฒนาคนหนึ่งพบว่าขนาดการตอบสนองสามารถลดลงได้ถึงห้าครั้งหากมีการใช้การบีบอัด gzip
เมื่อทำการร้องขอ แอปพลิเคชันของคุณจะส่งหัวข้อ "Accept-Encoding: gzip, deflate"
แสดงว่ามันสามารถประมวลผลการตอบสนองที่ถูกบีบอัดได้ อย่างไรก็ตาม หากไม่มีการกำหนดค่าช่องทางเซิร์ฟเวอร์ที่เหมาะสมสำหรับการบีบอัด แอปพลิเคชันของคุณจะยังคงได้รับข้อมูลขนาดใหญ่ที่ไม่ได้บีบอัด
ทำไมการบีบอัดถึงสำคัญ
- ประสิทธิภาพที่ดีขึ้น: การลดขนาดของข้อมูลที่ส่งผ่านเครือข่ายช่วยลดเวลาในการโหลด
- การใช้งานแบนด์วิธที่ลดลง: การใช้แบนด์วิธน้อยกว่าสามารถช่วยประหยัดค่าใช้จ่ายและทำให้ตอบสนองได้เร็วขึ้น โดยเฉพาะอย่างยิ่งสำหรับผู้ใช้ที่มีการเชื่อมต่ออินเทอร์เน็ตช้า
วิธีแก้ปัญหา: เปิดใช้งานการบีบอัดแบบไดนามิกใน IIS7
แทนที่จะดำดิ่งสู่การแก้ปัญหาทางโค้ดที่ซับซ้อนหรือพึ่งพาเฟรมเวิร์กที่ไม่ได้รับการสนับสนุนใน Silverlight การเปิดใช้งานการบีบอัดแบบไดนามิกที่มีอยู่ใน IIS7 เป็นเส้นทางที่ง่ายที่สุดในการบรรลุการปรับปรุงประสิทธิภาพที่ต้องการ นี่คือวิธีการ:
คู่มือทีละขั้นตอน
-
เข้าถึงการตั้งค่า IIS7: เปิด Internet Information Services (IIS) Manager บนเซิร์ฟเวอร์ของคุณ
-
เลือกแอปพลิเคชันของคุณ: ในแผงการเชื่อมต่อ ให้เลือกไซต์หรือแอปพลิเคชันที่คุณต้องการเปิดใช้งานการบีบอัด
-
เปิดการตั้งค่าการบีบอัด: ในมุมมองฟีเจอร์ มองหาสัญลักษณ์ “Compression” และดับเบิลคลิกที่มัน
-
เปิดใช้งานการบีบอัดแบบไดนามิก: ทำเครื่องหมายที่กล่อง “Enable dynamic content compression” ซึ่งช่วยให้การตอบสนองของเซิร์ฟเวอร์ถูกบีบอัดแบบทันที
-
รีสตาร์ท IIS: หลังจากทำการเปลี่ยนแปลง ให้รีสตาร์ทเซิร์ฟเวอร์ IIS ของคุณเพื่อให้การตั้งค่าใหม่มีผล
การทดสอบการบีบอัด
เมื่อเปิดใช้งานการบีบอัดแบบไดนามิกแล้ว คุณสามารถตรวจสอบฟังก์ชันการทำงานของมันได้โดยใช้เครื่องมือการติดตามการจราจร HTTP เช่น Fiddler:
- ใช้ Fiddler: ติดตามการจราจรสำหรับการเรียกบริการ WCF ของคุณ คุณควรเห็นการตอบสนองที่ส่งด้วย
Content-Encoding: gzip
แสดงว่าการบีบอัดทำงานอยู่จริง
หลีกเลี่ยงปัญหาทั่วไป
- การกำหนดค่าเพิ่มเติม: ไม่มีความจำเป็นต้องใช้โค้ดหรือไลบรารีเพิ่มเติมเช่น
System.IO.Compression
ซึ่งไม่มีใน Silverlight ให้พึ่งพา IIS สำหรับวิธีนี้เท่านั้น - ปลั๊กอินของเบราว์เซอร์: เครื่องมือการพัฒนาบางอย่างอาจไม่สะท้อนการบีบอัดในผลลัพธ์ของพวกเขาอย่างถูกต้อง นี่คือเหตุผลที่การใช้ Fiddler หรือเครื่องมือคล้ายกันเป็นสิ่งสำคัญสำหรับการแสดงให้เห็นถึงการจราจรของคุณอย่างแท้จริง
สรุป
การเปิดใช้งานการบีบอัด gzip สำหรับบริการ WCF ของคุณในแอปพลิเคชัน Silverlight เป็นกระบวนการที่ง่ายเมื่อใช้ IIS7 โดยการเปิดใช้งานการตั้งค่าการบีบอัดแบบไดนามิก คุณสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชันของคุณอย่างมากโดยไม่ต้องมีการเขียนโค้ดเพิ่มเติม วิธีนี้ไม่เพียงแค่เพิ่มประสิทธิภาพการทำงาน แต่ยังเพิ่มขีดความสามารถในการใช้ทรัพยากรของคุณ ทำให้ประสบการณ์ของผู้ใช้ดีขึ้น
หากคุณมีคำถามเพิ่มเติมเกี่ยวกับบริการ WCF, Silverlight หรือการกำหนดค่า IIS โปรดติดต่อในความคิดเห็นด้านล่าง!