پنچ دلیل برای استفاده از Protocol Buffer بجای JSON -قسمت اول
معماری های سرویس گرا شهرت خوبی در میان برنامه نویسان و توسعه دهندگان به عنوان یک روش واکشی داده ها کسب کرده اند. این سرویس ها از JSON برای ارتباط با HTTP استفاده می کنند. اگرچه JSON مزایای مختلفی مثل نحوه تبادل فرمت داده ها، قابل خواندن و فهم ساده و.. را دارد ولی دردسرهای خاص خودش را هم دارد. زمانیکه مرورگر و جاوااسکریپت مستقیما داده را مصرف نمیکنند -مخصوصا در زمان سرویس های داخلی- یک شکل ساختار یافته مثل Protocol Buffer مربوط به گوگل میتواند جایگزین مناسب تری نسبت به JSON برای کد کردن داده ها باشد. چنانچه قبلا هیچ آشنایی با بافر گوگل نداشته اید نگران نباشید در این مقاله یک معرفی مختصر از آن را ارائه میدهیم.
معرفی مختصر Protocol Buffer
اولین سؤال این هست که Protocol Buffer چیست؟! برطبق آنچه که در اسناد ذکر شده است Protocol Buffer یک روش کد کردن داده های ساختار یافته با یک فرمت کارآمد و قابل گسترش است.
گوگل از Protocol Buffer برای سرویس های داخلی خودش استفاده میکند. این پروتکل یک قالب کد باینری است که به شما این امکان را میدهد تا یک شِما برای داده هایتان با زبانی که میخواهید بسازید. مثل چیزی که در تکه کد زیر میبینید:
شما میتوانید یک پیام را با جزئیات مختلفش داخل namespace و یا در بالای کدتان تعریف کنید. تکه کدی که در بالا تعریف کردیم مربوط به یک شیء به نام Person است که سه فیلد: id, name و email دارد. علاوه بر نام گذاری یک فیلد شما میتوانید موارد دیگری را هم مشخص کنید مثل نوع داده ای که قرار است در آن ذخیره شود -مثلا در تکه کد بالا از نوع int32 و string استفاده شده- و یا نوع اعتبار سنجی فیلدها که مقداردهی آنها الزامی و یا اختیاری است (که با استفاده از کلمات کلیدی required و optional مشخص میشود) و شماره گذاری فیلدها که باعث بهتر کد زدن در code behind میشود.
Protocol Buffer با زبان های مختلفی مثل Java, C, Go و … میتواند نوشته شود و همچنین بسیاری از زبان های جدیدی که در دوروبرتان میبینید با آن سازگارند. Ruby هم از این قضیه مستثنی نیست گرچه تفاوتهای مختصری بمنظور کد و دیکد کردن داده ها با استفاده از Protocol Buffer دارد. این به این معنی است که یک مشخصه می تواند برای انتقال اطلاعات بین سیستم ها صرف نظر از زبان اجرای آنها مورد استفاده قرار گیرد.
بعنوان مثال هنگام نصب ruby-protocol-buffers یک کتابخانه با نام ruby-protoc هم نصب میشود که قابلیت ترکیب با کتابخانه اصلی Protocol Buffer را دارد و بطور خودکار فایل های طبقه بندی شده خامی را برای کد و دیکد کردن اطلاعات شما در اختیارتان قرار میدهد.
همانطور که مشاهده میکنید با ارائه یک شِما، یک کلاس بطور اتوماتیک ساخته شده تا برای کد و دیکد کردن داده ها داخل Protocol Buffer از آن استفاده کنید.
اکنون که یک مرور کلی در مورد Protocol Buffer داشتیم بیایید تا نکات جزئی تری راجب آن را بررسی کنیم. در ادامه مقاله(در قسمت بعد) پنج دلیل برای استفاده از Protocol Buffer را ذکر خواهیم کرد. با ما همراه باشید.