رمزگذار پیام را انتخاب کنید

ساخت وبلاگ

در این مقاله معیارهای انتخاب در بین رمزگذارهای پیام که در بنیاد ارتباطات ویندوز (WCF) گنجانده شده است ، مورد بحث قرار می گیرد: مکانیسم بهینه سازی باینری ، متن و پیام (MTOM).

در WCF ، شما نحوه انتقال داده ها را از طریق شبکه بین نقاط پایانی با استفاده از یک اتصال ، که از دنباله ای از عناصر اتصال تشکیل شده است ، مشخص می کنید. رمزگذار پیام توسط یک عنصر رمزگذاری پیام در پشته اتصال نشان داده شده است. یک اتصال شامل عناصر اتصال پروتکل اختیاری ، مانند یک عنصر اتصال امنیتی یا عنصر اتصال پیام رسانی قابل اعتماد ، یک عنصر رمزگذاری رمزگذاری پیام مورد نیاز و یک عنصر اتصال حمل و نقل مورد نیاز است.

عنصر اتصال رمزگذاری پیام در زیر عناصر اتصال پروتکل اختیاری و بالاتر از عنصر اتصال حمل و نقل مورد نیاز قرار دارد. از طرف خروجی ، یک رمزگذار پیام پیام خروجی را سریال می کند و آن را به حمل و نقل منتقل می کند. از طرف ورودی ، یک رمزگذار پیام فرم سریالی یک پیام را از حمل و نقل دریافت می کند و در صورت وجود یا به برنامه ، آن را به لایه پروتکل بالاتر منتقل می کند.

هنگام اتصال به یک مشتری یا سرور از قبل موجود ، ممکن است در مورد استفاده از رمزگذاری پیام خاص چاره ای نداشته باشید زیرا باید پیام های خود را به گونه ای رمزگذاری کنید که طرف مقابل آن انتظار داشته باشد. با این حال ، اگر در حال نوشتن یک سرویس WCF هستید ، می توانید سرویس خود را از طریق چندین نقطه پایانی در معرض نمایش قرار دهید ، هر کدام با استفاده از رمزگذاری پیام متفاوت. این امر به مشتریان این امکان را می دهد تا بهترین رمزگذاری را برای صحبت با سرویس خود در نقطه پایانی که برای آنها بهتر است ، انتخاب کنند ، و همچنین به مشتریان خود انعطاف پذیری را برای انتخاب رمزگذاری که برای آنها بهترین است ، انتخاب می کنند. استفاده از چندین نقطه پایانی همچنین به شما امکان می دهد مزایای رمزگذاری پیام های مختلف را با سایر عناصر اتصال ترکیب کنید.

رمزگذارهای ارائه شده توسط سیستم

WCF شامل سه رمزگذار پیام است که توسط سه کلاس زیر نشان داده شده است:

TextMessageEncodingBindingElement ، رمزگذار پیام متنی ، از رمزگذاری ساده XML و رمزگذاری صابون پشتیبانی می کند. حالت رمزگذاری ساده XML رمزگذار پیام متنی "XML قدیمی قدیمی" (POX) نامیده می شود تا آن را از رمزگذاری صابون مبتنی بر متن متمایز کند. برای فعال کردن POX ، ویژگی MessageVersion را روی هیچ یک قرار دهید. برای تعامل با نقاط پایانی غیر WCF از رمزگذار پیام متنی استفاده کنید.

BinaryMessageEncodingBindingElement، رمزگذار پیام باینری، از یک فرمت باینری فشرده استفاده می کند و برای ارتباط WCF به WCF بهینه شده است، و از این رو قابل همکاری نیست. این همچنین بهترین رمزگذار در بین تمام رمزگذارهایی است که WCF ارائه می دهد.

MtomMessageEncodingBindingElement، عنصر binding، رمزگذاری کاراکتر و نسخه‌سازی پیام را برای پیام‌ها با استفاده از رمزگذاری MTOM مشخص می‌کند. MTOM یک فناوری کارآمد برای انتقال داده های باینری در پیام های WCF است. رمزگذار MTOM تلاش می کند تا تعادلی بین کارایی و قابلیت همکاری ایجاد کند. رمزگذاری MTOM بیشتر XML را به صورت متنی ارسال می کند، اما بلوک های بزرگی از داده های باینری را با انتقال آن ها به همان صورت بدون تبدیل به متن بهینه می کند. از نظر کارایی، در میان رمزگذارهایی که WCF ارائه می‌کند، MTOM بین متن (کندترین) و باینری (سریعترین) قرار دارد.

نحوه انتخاب رمزگذار پیام

جدول زیر عوامل رایج مورد استفاده برای انتخاب رمزگذار پیام را توضیح می دهد. عواملی را که برای برنامه شما مهم هستند اولویت بندی کنید و سپس رمزگذارهای پیامی را انتخاب کنید که با این عوامل بهترین کار را دارند. مطمئن شوید که هر عامل اضافی که در این جدول ذکر نشده است و هر رمزگذار پیام سفارشی که ممکن است در برنامه شما مورد نیاز باشد را در نظر بگیرید.

توجه: هنگام استفاده از رمزگذار باینری، استفاده از تنظیمات IgnoreWhitespace هنگام ایجاد XMLReader هیچ تأثیری نخواهد داشت. به عنوان مثال، اگر کارهای زیر را در یک عملیات سرویس انجام دهید:

تنظیم IgnoreWhitespace نادیده گرفته می شود.

فشرده سازی و رمزگذار باینری

با شروع WCF 4. 5، رمزگذار باینری WCF پشتیبانی از فشرده سازی را اضافه می کند. این به شما امکان می دهد از الگوریتم gzip/deflate برای ارسال پیام های فشرده از یک سرویس گیرنده WCF استفاده کنید و همچنین با پیام های فشرده شده از یک سرویس WCF خود میزبان پاسخ دهید. این ویژگی فشرده سازی را در هر دو انتقال HTTP و TCP فعال می کند. یک سرویس WCF میزبان IIS همیشه می تواند برای ارسال پاسخ های فشرده با پیکربندی سرور میزبان IIS فعال شود. نوع فشرده سازی با ویژگی BinaryMessageEncodingBindingElement.compressionFormat پیکربندی شده است. این ویژگی روی یکی از مقادیر enum System. ServiceModel. Channels.compressionFormat تنظیم شده است:

از آنجایی که این ویژگی فقط در binaryMessageEncodingBindingElement نمایش داده می شود، برای استفاده از این ویژگی باید یک binding سفارشی مانند زیر ایجاد کنید:

هم سرویس گیرنده و هم سرویس باید برای ارسال و دریافت پیام های فشرده به توافق برسند و بنابراین ویژگی compressionFormat باید بر روی عنصر binaryMessageEncoding در سرویس گیرنده و سرویس پیکربندی شود. اگر سرویس یا سرویس گیرنده برای فشرده سازی پیکربندی نشده باشد، اما طرف دیگر پیکربندی نشده باشد، یک ProtocolException پرتاب می شود. فعال کردن فشرده سازی باید با دقت در نظر گرفته شود. فشرده سازی بیشتر در صورتی مفید است که پهنای باند شبکه یک گلوگاه باشد. در موردی که CPU گلوگاه باشد، فشرده سازی توان عملیاتی را کاهش می دهد. آزمایش مناسب باید در یک محیط شبیه سازی شده انجام شود تا مشخص شود که آیا این به نفع برنامه است یا خیر

سیگنالهای معاملاتی...
ما را در سایت سیگنالهای معاملاتی دنبال می کنید

برچسب : نویسنده : عارف لرستانی بازدید : 52 تاريخ : پنجشنبه 10 فروردين 1402 ساعت: 13:24