تغییر اساسی در هسته برنامه به خودی خود یک کار پیچیده است، اگر این برنامه نزدیک به یک و نیم میلیون خط کد و بیش از 15 سال سابقه در بازار راه هم داشته باشد، امری تقریباً غیر ممکن است. اما این دقیقاً کاری است که تیم برنامه نویسی Asterisk پس از انتشار Asterisk 12 به آن روی آورده‌اند. حرکت به سمت نسل جدید SIP تحت عنوان PJSIP تصمیمی است که Asteriskها به اندازه کافی دلایلش را دارند. Asterisk سه سال از زمان فعالیتش می‌گذشت که پروتکل SIP معرفی شد و توسعه دهندگان این ابر برنامه تصمیم به استفاده از این پروتکل در برنامه خود کردند. اگر آن روزها به هریک از توسعه دهندگان SIP و Asterisk موفقیت چشمگیر 10 ساله‌شان را برایشان به تصویر می‌کشیدیم، شاید به سختی می‌توانستند باور کنند اما حالا با گذشت بیش از یک دهه هر دو پروژه جزء بهترین‌ها به حساب می‌آیند. Asterisk در فایل chan_sip شروع به استفاده از پروتکل SIP کرد و در طی این سال‌ها با توسعه این فایل امکانات محدودتری از SIP را برای استفاده در نظر گرفت. Asterisk کلیه امورات SIP اعم از پیغام‌های SIP، ثبت‌نام و ارتباط با هسته را در همین فایل گنجاند و همین کار به خودی خود تغییرات ساختاری را بسیار سخت‌تر می‌کرد، چرا که با هر تغییری ایرادات ناخواسته زیادی متحمل سیستم می‌شد. هر چند از زبان خود برنامه‌نویسان Asterisk شنیده‌ایم که فایل chan_sip انرژِی خیلی زیادی را از توسعه دهندگان Asterisk می‌گیرد و اگر این انرژی ذخیره شود می‌توانند بر روی توسعه سایر بخش‌ها تلاش کنند. در دنیای VOIP کسانی که ایراد‌های Asterisk را تحت نظر دارند آماری را ارائه کرده‌اند که در نوع خود بسیار جالب است؛ این آمار نشان می‌دهد که حدود ۳۰ درصد از کل‌ ایراد‌های سیستم به همین فایل بر‌ می‌گردد.

B2ap3 Large Pjsip1

 








با تکیه بر واقعیت‌ها تیم Asterisk دو راه در مقابل خود برای حل این مشکل داشت. اولی تغییرات ساختاری در فایل chan_sip بود که از مزایای این روش آشنایی سایر کدنویسان با نحوه کدهای این فایل و در نتیجه استفاده از امکانات این سیستم بود و دومی ایجاد یک فایل جدید که شانس تجدید بنا با معماری همگون و مناسب عصر امروز را می‌داد. Asteriskها گزینه دوم را انتخاب کردند و در Asterisk ۱۲ نشان دادند که به همین سمت حرکت کرده‌اند. دو دلیل عمده‌ای که می‌توانیم برای این تصمیم تیم Asterisk در نظر بگیریم را در این‌جا بررسی می‌کنیم. اولی ساختار یکپارچه کانال SIP است که هر تغییر جدیدی را بسیار سخت و تا حدی غیر ممکن کرده بود و دلیل عمده دوم برای شروع پروژه جدید، توانایی ایجاد Driver جدید در کنار Driver برای SIP و موازی با آن است. با این کار بدون تحمیل هزینه تغییر یک‌باره کل Driver، تست‌های خود را به راحتی برای پیشبرد اهداف مشخص بر روی Driver جدید اعمال می‌کنند. با بهره‌گیری از PJSIP در ورژن ۱۲ Asteriskها توانستند Driverی را راه‌اندازی کنند که در آن کلیه امورات SIP به صورت جداگانه در فایل‌های جداگانه نگه‌داری می‌شود. به عنوان مثال ایجاد داخلی SIP و رجیستری SIP، هر یک در فایلی جداگانه کدنویسی شده‌اند و بنابراین برای هرگونه تغییری دست کدنویس کاملاً باز است و تغییرات بر روی فرایند هریک از این مراحل به فرایند دیگری تأثیرگذار نخواهد بود. در این ورژن هر یک از Driverها با کم‌ترین تأثیر بر روی یکدیگر در نظر گرفته شده‌اند و از بابت نگهداری نیز همین بس که فایل chan_sip دارای ۳۵ هزار خط کد و فایل chan_pjsip تنها حاوی ۲۰۰۰ خط کد است.


منبع: VOIPIRAN