سرویس توزیع داده‌ها

**سرویس توزیع داده** یا به اختصار (DDS) (به انگلیسی: Data Distribution Service) برای سیستم‌های بی‌درنگ یک استانداردگروه مدیریت شی (OMG) ماشین به ماشین (به انگلیسی: Object Management Group) است (که گاهی میان‌افزار یا چارچوب اتصال نامیده می‌شود) که هدف آن ممکن کردن مبادلات قابل اعتماد، با کارایی بالا، تعامل پذیر، بی‌درنگ و مقیاس پذیر داده با استفاده از الگوی انتشار-اشتراک است.

DDS به نیازهای برنامه‌هایی مانند هوافضا و دفاع، کنترل ترافیک هوایی، وسایل نقلیه خودران، دستگاه‌های پزشکی، روباتیک، تولید برق، شبیه‌سازی و آزمایش، مدیریت شبکه هوشمند، سیستم‌های حمل‌ونقل و سایر برنامه‌هایی که نیاز به تبادل اطلاعات در زمان واقعی دارند، می‌پردازد.

## سبک معماری
### مدل
DDS یک میان‌افزار شبکه است که برنامه‌نویسی پیچیده شبکه را ساده می‌کند. این میان افزارالگوی انتشار-اشتراک را برای ارسال و دریافت داده‌ها، رویدادها و دستورها در میان گره‌ها پیاده‌سازی می‌کند. گره‌هایی که اطلاعات تولید می‌کنند (ناشران)، «موضوعاتی» را ایجاد می‌کنند (به عنوان مثال دما، مکان، فشار) و «نمونه‌هایی» را منتشر می‌کنند. DDS نمونه‌ها را به مشترکینی که به آن موضوع علاقه دارند تحویل می‌دهد.

DDS کارهای انتقال را انجام می‌دهد: آدرس‌دهی پیام، صف آرایی یا صف زدایی (تا مشترکان بتوانند در پلت‌فرم‌های مختلفی از ناشر باشند)، تحویل، کنترل جریان، تلاش‌های مجدد، و غیره. هر گره می‌تواند یک ناشر، مشترک یا هر دو به‌طور همزمان باشد.

مدل انتشار-اشتراک DDS عملاً برنامه‌نویسی پیچیده شبکه را برای برنامه‌های توزیع شده حذف می‌کند.

DDS از مکانیزم‌هایی پشتیبانی می‌کند که فراتر از مدل اولیه انتشار-اشتراک است. مزیت کلیدی این است که برنامه‌هایی که از DDS برای ارتباطات خود استفاده می‌کنند جدا شونده هستند. زمان طراحی کمی برای مدیریت تعاملات متقابل آنها صرف می‌شود. به ویژه، برنامه‌ها هرگز به اطلاعاتی در مورد سایر برنامه‌های شرکت کننده، همچون وجود یا مکان آنها نیاز ندارند. DDS به‌طور شفاف تحویل پیام را بدون نیاز به مداخله برنامه‌های کاربر انجام می‌دهد، از جمله:
* تعیین اینکه چه کسی باید پیام‌ها را دریافت کند
* جایی که گیرندگان در آن قرار دارند
* اگر پیام‌ها نتوانند تحویل داده شوند چه اتفاقی می‌افتد

DDS به یک کاربر اجازه می‌دهد تا پارامترهای کیفیت خدمت (QoS) (به انگلیسی: quality of service) را برای پیکربندی مکانیسم‌های کشف و رفتار از قبل مشخص کند. DDS با مبادله پیام‌ها به صورت ناشناس، برنامه‌های توزیع شده را ساده می‌کند و برنامه‌های پیمانه ای و با ساختار مناسب را تشویق می‌کند. DDS همچنین به‌طور خودکار در صورت شکست اولیه ناشران اضافی را با جایگزین کردن آنها مدیریت می‌کند. مشترکان همیشه نمونه‌هایی با بالاترین اولویت که داده‌های آن هنوز معتبر هستند دریافت می‌کنند (یعنی دوره اعتبار مشخص شده توسط ناشر منقضی نشده باشد). پس از بازیابی، به‌طور خودکار به حالت اولیه برمی گردد.

#### تعامل پذیری
هر دو پیاده‌سازی نرم‌افزاری اختصاصی و منبع باز DDS در دسترس هستند. که اینها شامل رابط‌های برنامه‌نویسی (API) و کتابخانه‌های پیاده‌سازی شده در زبان‌های Ada، C, C++، C#، Java، Python، Scala، Lua، Pharo و Ruby است.

عرضه‌کنندگان DDS برای ابراز و به نمایش کشیدن تعامل پذیری DDS در محل جلسات فنی OMG Spring از سال ۲۰۰۹ تا ۲۰۱۳ حضور پیدا کرده‌اند.

در طی دموها، هر عرضه‌کننده با استفاده از یک مجموعه آزمایشی به نام نمایش اشکال، موضوعات یکدیگر را منتشر می‌کردند و به اشتراک آن درمی‌آمدند. به عنوان مثال، یک عرضه‌کننده اطلاعاتی در مورد یک شکل منتشر می‌کند و سایر عرضه‌کنندگان می‌توانند در موضوع مشترک شوند و نتایج را در صفحه نمایش اشکال خود نمایش دهند. هر عرضه‌کننده به نوبت اطلاعات را منتشر می‌کند و دیگری مشترک می‌شود. دو چیز دموها را ممکن کرد: پروتکل DDS-I یا انتشار اشتراک در زمان واقعی (RTPS) (به انگلیسی: Real-Time Publish-Subscribe) و توافق برای استفاده از یک مدل مشترک.

در مارس ۲۰۰۹، سه عرضه‌کننده تعامل پذیری بین محصولات مجزا و مستقل را نشان دادند که پروتکل OMG Real-time Publish-Subscribe نسخه ۲٫۱ را از ژانویه ۲۰۰۹ اجرا می‌کردند. این نمایش شامل کشف ناشران و مشترکان یکدیگر در سیستم عامل‌های مختلف (میکروسافت ویندوز و لینوکس) بود و ارتباطات شبکه چندپخشی و تک پخشی را پشتیبانی می‌کرد.

نمایش تعامل پذیری DDS از سناریوهایی مانند:
* اتصال ساده به شبکه با استفاده از پروتکل اینترنت (IP)
* کشف ناشران و مشترکان
* کیفیت خدمات (QoS) سازگاری بین درخواست کننده و ارائه دهنده
* شبکه تحمل تأخیر
* چندین موضوع و نمونه از موضوعات
* مالکیت انحصاری موضوعات
* فیلتر کردن محتوای داده‌های موضوعی از جمله زمان و جغرافیا

استفاده می‌کرد.

## تاریخچه
توسعه خصوصیات DDS در سال ۲۰۰۱ آغاز شد. این خصوصیات توسط Real-Time Innovations (RTI)، یک شرکت چارچوب نرم‌افزاری، و Thales Group، یک شرکت صنایع جنگ‌افزاری و هوافضایی فرانسوی توسعه داده شده است. در سال ۲۰۰۴، گروه مدیریت شی (OMG) نسخه 1.0 DDS را منتشر کرد. نسخه ۱٫۱ در دسامبر ۲۰۰۵، ۱٫۲ در ژانویه ۲۰۰۷ و ۱٫۴ در آوریل ۲۰۱۵ منتشر شد. DDS توسط چندین حق ثبت اختراع ایالات متحده پوشش داده شده است.

خصوصیات DDS دو سطح از رابط‌ها را توصیف می‌کند:
* انتشار-اشتراک با محوریت داده (DCPS) (به انگلیسی: data-centric publish-subscribe) سطح پایین‌تر که در جهت ارائه کارآمد اطلاعات مناسب به گیرندگان مناسب است.
* یک لایه اختیاری بازسازی محلی داده (DLRL) (به انگلیسی: data local reconstruction layer) بالاتر، که امکان ادغام ساده DDS را در لایه کاربرد فراهم می‌کند.

سایر استانداردهای مرتبط از سند اصلی اولیه پیروی کردند. پروتکل بیدرنگ انتشار-اشتراک سیم پروتکل DDS تعامل پذیری پروتکل سیمی (به انگلیسی: The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification) تضمین کرد که اطلاعات منتشر شده در مورد موضوعی با استفاده از اجرای DDS یک عرضه‌کننده، توسط یک یا چند مشترک با استفاده از پیاده‌سازی‌های DDS عرضه‌کننده یکسان یا متفاوت قابل مصرف است. اگرچه این خصوصیات جامعه DDS را هدف قرار داده است، اما استفاده از آن محدود نیست. نسخه ۲٫۰ در آوریل ۲۰۰۸، نسخه ۲٫۱ در نوامبر ۲۰۱۰، ۲٫۲ در سپتامبر ۲۰۱۴ و ۲٫۳ در می ۲۰۱۹ منتشر شد.

DDS برای CCM سبک (dds4ccm) (به انگلیسی: DDS for Lightweight CCM) یک الگوی معماری ارائه می‌دهد که منطق تجاری را از ویژگی‌های غیر کاربردی جدا می‌کند. یک برنامه افزودنی در سال ۲۰۱۲ پشتیبانی از جریان‌ها را اضافه کرد. یک PSM زبان جاوا ۵ برای DDS یک اتصال جاوا ۵ را تعریف کرد که به عنوان یک مدل خاص بستر (PSM) (به انگلیسی: Platform Specific Model) برای DDS نامیده می‌شود. این فقط بخش انتشار-اشتراک داده محور (DCPS) (به انگلیسی: Data-Centric Publish-Subscribe) را از خصوصیات DDS را مشخص کرد. علاوه بر این، APIهای DDS معرفی شده توسط DDS-XTypes و DDS-CCM را نیز در بر می‌گیرد. DDS-PSM-Cxx اتصال زبان ISO/IEC C++ PSM را تعریف می‌کند که به عنوان یک مدل خاص پلتفرم (PSM) برای DDS شناخته می‌شود. این یک API جدید C++ برای برنامه‌نویسی DDS ارائه می‌دهد که برای یک برنامه‌نویس C++ طبیعی تر است. این خصوصیات نگاشت‌هایی را برای رابط‌های برنامه‌نویسی (API) مشخص شده در DDS-XTypes و دسترسی به پروفایل‌های کیفیت خدمت (QoS) مشخص شده در DDS-CCM ارائه می‌دهد.

انواع موضوع‌های توسعه پذیر و پویا برای DDS (DDS-XTypes) از ارتباطات انتشار-اشتراک داده محور پشتیبانی می‌کند که در آن موضوعات با ساختارهای داده خاص تعریف می‌شوند. برای توسعه‌پذیر بودن، موضوعات DDS از انواع داده‌هایی استفاده می‌کنند که قبل از زمان کامپایل تعریف شده و در سرتاسر فضای داده جهانی DDS استفاده می‌شوند. این مدل زمانی مطلوب است که بررسی نوع استاتیک مفید باشد. نمایه زبان مدلسازی یکپارچه (UML) دامنه‌ها و موضوعات DDS را به عنوان بخشی از تحلیل و مدل‌سازی طراحی مشخص می‌کند. این خصوصیات همچنین نحوه انتشار و اشتراک اشیاء را بدون توصیف انواع به زبان دیگری مانند XML یا OMG IDL تعریف می‌کند. یک زبان توصیف واسط (IDL) در سال ۲۰۱۴ به‌طور مستقل از بخش ۳ خصوصیات معماری کارگزار درخواست مشترک شیء (CORBA) (به انگلیسی: Common Object Request Broker Architecture) مشخص شد. این IDL 3.5 با خصوصیات CORBA 3 سازگار بود، اما به عنوان خصوصیات خود استخراج شد و به آن اجازه می‌داد مستقل از CORBA تکامل یابد.

پروتکل‌های دیگری که باید ذکر شوند عبارتند از: DDS-XRCE (DDS برای محیط‌هایی با محدودیت منابع شدید)، این پروتکل مشخصات امکان ارتباط بین دستگاه‌های دارای منابع محدود، مانند میکروکنترلر و یک شبکه DDS را فراهم می‌کند. انتشار و اشتراک موضوعات را از طریق یک سرویس میانی در دامنه DDS و DDS-RPC (RPC Over DDS) که فراخوانی رویه‌ای دوردست را تعریف می‌کند را ممکن می‌سازد. اینها یک ارتباط درخواست/پاسخ دو طرفه را ارائه می‌دهند و خدمات توزیع شده را تعیین می‌کنند و با استفاده از یک رابط سرویس به تفصیل می‌پردازند. همچنین از فراخوانی روش همزمان و ناهمزمان پشتیبانی می‌کند.

با شروع DDS نسخه ۱٫۴ در سال ۲۰۱۵، لایه اختیاری DLRL به یک آیین‌نامه جداگانه منتقل شد.

## جستارهای وابسته
* میان‌افزار
* Open architecture computing environment
* Object Management Group (OMG)، سازمان استانداردی که خصوصیات را توسعه داده است.

رده:استانداردهای رایانه
رده:میان‌افزار پیام محور