**سرویس توزیع داده** یا به اختصار (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 از سال 2009 تا 2013 حضور پیدا کرده اند.

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

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

نمایش تعامل پذیری DDS از سناریوهایی مانند:

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

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

تاریخچه
-------

توسعه خصوصیات DDS در سال 2001 آغاز شد. این خصوصیات توسط Real-Time Innovations (RTI)، یک شرکت چارچوب نرم افزاری، و Thales Group، یک شرکت صنایع جنگ افزاری و هوافضایی فرانسوی توسعه داده شده است. در سال 2004، گروه مدیریت شی (OMG) نسخه 1.0 DDS را منتشر کرد. نسخه 1.1 در دسامبر 2005، 1.2 در ژانویه 2007 و 1.4 در آوریل 2015 منتشر شد. 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 را هدف قرار داده است، اما استفاده از آن محدود نیست. نسخه 2.0 در آوریل 2008، نسخه 2.1 در نوامبر 2010، 2.2 در سپتامبر 2014 و 2.3 در می 2019 منتشر شد.

DDS برای CCM سبک (dds4ccm) (به انگلیسی: DDS for Lightweight CCM) یک الگوی معماری ارائه می دهد که منطق تجاری را از ویژگی های غیر کاربردی جدا می کند. یک برنامه افزودنی در سال 2012 پشتیبانی از جریان ها را اضافه کرد. یک PSM زبان جاوا 5 برای DDS یک اتصال جاوا 5 را تعریف کرد که به عنوان یک مدل خاص بستر (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) در سال 2014 به طور مستقل از بخش 3 خصوصیات معماری کارگزار درخواست مشترک شیء (CORBA) (به انگلیسی: Common Object Request Broker Architecture) مشخص شد. این IDL 3.5 با خصوصیات CORBA 3 سازگار بود، اما به عنوان خصوصیات خود استخراج شد و به آن اجازه می داد مستقل از CORBA تکامل یابد.

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

با شروع DDS نسخه 1.4 در سال 2015، لایه اختیاری DLRL به یک آیین نامه جداگانه منتقل شد.

جستارهای وابسته
---------------

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