วิธีที่ง่ายที่สุดในการเพิ่มการบีบอัดให้กับ WCF ใน Silverlight

เมื่อพัฒนาแอปพลิเคชันด้วย Silverlight ที่เข้าถึงบริการ WCF นักพัฒนามักพบความท้าทายในการจัดการข้อมูล XML ขนาดใหญ่ ซึ่งอาจนำไปสู่การใช้แบนด์วิธที่ไม่มีประสิทธิภาพ เนื่องจากข้อมูลที่ไม่ได้บีบอัดที่ส่งผ่านเครือข่ายอาจมีขนาดใหญ่กว่าเกณฑ์ที่จำเป็น หากคุณเผชิญปัญหานี้และกำลังมองหาวิธีการที่ง่ายในการเพิ่มการบีบอัดให้กับการตอบสนองของบริการ WCF ของคุณ คุณมาถูกที่แล้ว!

ในบล็อกโพสต์นี้ เราจะสำรวจวิธีการเปิดใช้งานการบีบอัด gzip บน IIS7 เพื่อปรับปรุงประสิทธิภาพของแอปพลิเคชัน Silverlight ของคุณโดยไม่จำเป็นต้องทำการเปลี่ยนแปลงโค้ดที่ซับซ้อน

ทำความเข้าใจกับปัญหา

บริบท

คุณอาจกำลังใช้งานแอปพลิเคชัน Silverlight ที่อิงกับบริการ WCF ผ่าน basicHttpBinding เมื่อบริการส่งคืนข้อมูล XML ขนาดใหญ่ ขนาดของ payload ที่ได้อาจค่อนข้างหนัก ส่งผลให้ใช้แบนด์วิธมากเกินไป ตัวอย่างเช่น ผ่านการทดลอง นักพัฒนาคนหนึ่งพบว่าขนาดการตอบสนองสามารถลดลงได้ถึงห้าครั้งหากมีการใช้การบีบอัด gzip

เมื่อทำการร้องขอ แอปพลิเคชันของคุณจะส่งหัวข้อ "Accept-Encoding: gzip, deflate" แสดงว่ามันสามารถประมวลผลการตอบสนองที่ถูกบีบอัดได้ อย่างไรก็ตาม หากไม่มีการกำหนดค่าช่องทางเซิร์ฟเวอร์ที่เหมาะสมสำหรับการบีบอัด แอปพลิเคชันของคุณจะยังคงได้รับข้อมูลขนาดใหญ่ที่ไม่ได้บีบอัด

ทำไมการบีบอัดถึงสำคัญ

  • ประสิทธิภาพที่ดีขึ้น: การลดขนาดของข้อมูลที่ส่งผ่านเครือข่ายช่วยลดเวลาในการโหลด
  • การใช้งานแบนด์วิธที่ลดลง: การใช้แบนด์วิธน้อยกว่าสามารถช่วยประหยัดค่าใช้จ่ายและทำให้ตอบสนองได้เร็วขึ้น โดยเฉพาะอย่างยิ่งสำหรับผู้ใช้ที่มีการเชื่อมต่ออินเทอร์เน็ตช้า

วิธีแก้ปัญหา: เปิดใช้งานการบีบอัดแบบไดนามิกใน IIS7

แทนที่จะดำดิ่งสู่การแก้ปัญหาทางโค้ดที่ซับซ้อนหรือพึ่งพาเฟรมเวิร์กที่ไม่ได้รับการสนับสนุนใน Silverlight การเปิดใช้งานการบีบอัดแบบไดนามิกที่มีอยู่ใน IIS7 เป็นเส้นทางที่ง่ายที่สุดในการบรรลุการปรับปรุงประสิทธิภาพที่ต้องการ นี่คือวิธีการ:

คู่มือทีละขั้นตอน

  1. เข้าถึงการตั้งค่า IIS7: เปิด Internet Information Services (IIS) Manager บนเซิร์ฟเวอร์ของคุณ

  2. เลือกแอปพลิเคชันของคุณ: ในแผงการเชื่อมต่อ ให้เลือกไซต์หรือแอปพลิเคชันที่คุณต้องการเปิดใช้งานการบีบอัด

  3. เปิดการตั้งค่าการบีบอัด: ในมุมมองฟีเจอร์ มองหาสัญลักษณ์ “Compression” และดับเบิลคลิกที่มัน

  4. เปิดใช้งานการบีบอัดแบบไดนามิก: ทำเครื่องหมายที่กล่อง “Enable dynamic content compression” ซึ่งช่วยให้การตอบสนองของเซิร์ฟเวอร์ถูกบีบอัดแบบทันที

  5. รีสตาร์ท IIS: หลังจากทำการเปลี่ยนแปลง ให้รีสตาร์ทเซิร์ฟเวอร์ IIS ของคุณเพื่อให้การตั้งค่าใหม่มีผล

การทดสอบการบีบอัด

เมื่อเปิดใช้งานการบีบอัดแบบไดนามิกแล้ว คุณสามารถตรวจสอบฟังก์ชันการทำงานของมันได้โดยใช้เครื่องมือการติดตามการจราจร HTTP เช่น Fiddler:

  • ใช้ Fiddler: ติดตามการจราจรสำหรับการเรียกบริการ WCF ของคุณ คุณควรเห็นการตอบสนองที่ส่งด้วย Content-Encoding: gzip แสดงว่าการบีบอัดทำงานอยู่จริง

หลีกเลี่ยงปัญหาทั่วไป

  • การกำหนดค่าเพิ่มเติม: ไม่มีความจำเป็นต้องใช้โค้ดหรือไลบรารีเพิ่มเติมเช่น System.IO.Compression ซึ่งไม่มีใน Silverlight ให้พึ่งพา IIS สำหรับวิธีนี้เท่านั้น
  • ปลั๊กอินของเบราว์เซอร์: เครื่องมือการพัฒนาบางอย่างอาจไม่สะท้อนการบีบอัดในผลลัพธ์ของพวกเขาอย่างถูกต้อง นี่คือเหตุผลที่การใช้ Fiddler หรือเครื่องมือคล้ายกันเป็นสิ่งสำคัญสำหรับการแสดงให้เห็นถึงการจราจรของคุณอย่างแท้จริง

สรุป

การเปิดใช้งานการบีบอัด gzip สำหรับบริการ WCF ของคุณในแอปพลิเคชัน Silverlight เป็นกระบวนการที่ง่ายเมื่อใช้ IIS7 โดยการเปิดใช้งานการตั้งค่าการบีบอัดแบบไดนามิก คุณสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชันของคุณอย่างมากโดยไม่ต้องมีการเขียนโค้ดเพิ่มเติม วิธีนี้ไม่เพียงแค่เพิ่มประสิทธิภาพการทำงาน แต่ยังเพิ่มขีดความสามารถในการใช้ทรัพยากรของคุณ ทำให้ประสบการณ์ของผู้ใช้ดีขึ้น

หากคุณมีคำถามเพิ่มเติมเกี่ยวกับบริการ WCF, Silverlight หรือการกำหนดค่า IIS โปรดติดต่อในความคิดเห็นด้านล่าง!