محتویات سایت
        برچسب های محبوب 








 
   بررسی ترافیک بین کلاینت و سرویس توسط ابزار Fiddler
  در این مقاله به معرفی ترفندی جهت نمایش ترافیک بین کلاینت و سرویس هنگام اجرا در ویژوال استودیو و سرور لوکال می پردازیم
   WCF
   ۱۳۵۷۷
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۹۰/۹/۱۵
نسخه قابل چاپ نسخه قابل چاپ

مقدمه:

بررسی ترافیک ارسال شده و دریافت شده بین کلاینت و سرویس همواره یکی از تکنیک های مؤثر در آزمایش و رفع اشکال برنامه های توزیع شده، بوده است. برای بررسی این ترافیک از ابزار های مختلفی استفاده می شود که یکی از بهترین این ابزار ها Fiddler می باشد. این ابزار رایگان و بسیار سبک بوده و از طریق لینک http://www.fiddler2.com/fiddler2 قابل دریافت می باشد.

پس از دریافت و نصب این ابزار، شما می توانید در هر لحظه برنامه Internet Explorer را اجرا نموده و از منوی Tools گزینه Fiddler2 را انتخاب نمایید. اکنون برنامه اجرا شده و تمامی ترافیک بین رایانه شما با وب سایت ها و سرویس های مختلف در اینترنت قابل مشاهده و بررسی می باشد.

بررسی هدر درخواست ها و جواب ها، بدنه پیام ها و بسیاری امکانات مفید دیگر از جمله خدمات Fiddler می باشد. در صورت نیاز برای آشنایی بیشتر با این ابزار می توانید در اینترنت به جستجو بپردازید.

آغاز:

اما یک مشکل جالب که در نرم افزار Fiddler وجود دارد، این است که این ابزار ترافیک بین کلاینت و سرویس هایی که روی سرور لوکال در حال اجرا هستند را مانیتور نمی کند و بنابراین در صورتی که شما برنامه کلاینت و سرور را بر روی سرور لوکال اجرا نموده اید و یا اینکه از طریق برنامه ویژوال استودیو در حال توسعه می باشید، هیچگونه ترافیکی توسط Fiddler نمایش داده نمی شود!

اما راه حل جالبی برای رفع این مشکل موجود است. برای انجام این کار کافیست که به جای عبارت localhost در قسمت آدرس سرویس در سمت کلاینت از عبارت ipv4.fiddler استفاده کنیم.

به طور مثال آدرس زیر:

http://localhost:8799/Service1.svc

تبدیل می شود به:

http://ipv4.fiddler:8799/Service1.svc

در صورتی که پیکربندی سرویس در سمت کلاینت در فایل web.config انجام شده باشد، تنظیمات آدرس مشابه زیر خواهد شد.

<client>
    <endpoint address="http://ipv4.fiddler:8799/Service1.svc"
       
binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IService1" contract="TestProxy.IService1"
        name="BasicHttpBinding_IService1" />
</client>

و در صورتی که این پیکربندی از طریق کد انجام شده باشد، نتیجه مشابه قطعه کد زیر خواهد بود:

TestProxy.Service1Client proxy = new TestProxy.Service1Client();
    
proxy.Endpoint.Address = new EndpointAddress("http://ipv4.fiddler:8799/Service1.svc");

string data = proxy.GetData();

در دو تصویر زیر عملکرد قطعه کد بالا را در نرم افزار Fiddler مشاهده می کنید:




برگرفته از: