معماری سرویس‌گرا[۱] یک سبک معماری[۲] است که برای ایجاد سیستم‌های نرم‌افزاری بر اساس تعاملات میان مؤلفه‌های خودمختاری[۳] که کمترین تداخل کاری[۴] را با هم داشته و به‌اندازه‌ی کافی درشت‌دانه[۵] هستند، بنا شده است. این مؤلفه‌ها اصطلاحاً «سرویس» نامیده می‌شود. هر یک از سرویس‌ها رفتار و فرایندهایی را از طریق مفهومی تحت عنوان قرارداد[۶] از خود بروز می‌دهند. قراردادها متشکل از پیام‌هایی هستند که در آدرس‌هایی قابل کشف[۷] (شناسایی) قرار دارند. به این آدرس‌ها اصطلاحاً endpoint گفته می‌شود. رفتار سرویس تحت کنترل سیاست‌هایی[۸] است که در خارج از خود سرویس تعریف شده‌اند. قراردادها و پیام‌ها توسط مؤلفه‌های بیرونی که کلاینت یا مصرف‌کنندگان سرویس[۹] نامیده می‌شوند، مورد استفاده قرار می‌گیرند.

در واقع، محوری‌ترین مفهوم در معماری سرویس‌گرا، مفهومِ سرویس است. این مفهوم بیشتر از آن‌که یک مفهوم تکنیکال باشد، مفهومی از جنس کسب‌وکار است. سرویس باید یک کارکرد (فانکشن) کسب‌وکار را ارائه داده و همچنین یک منطقِ به اندازه‌ی کافی درشت‌دانه[۱۰] و عمومی را دربرگیرد. علاوه بر این، سرویس باید تمامی کارکردهایی را که در قراردادهای مرتبط با آن تعهد داده شده، پیاده‌سازی کند. یکی از ویژگی‌های کلیدی سرویس‌ها مفهوم خودمختاری[۱۱] است. این مفهوم بدین معنی است که باید هر آنچه را که سرویس بدان نیاز دارد، در خود داشته باشد. به عبارت دیگر، سرویس کارکردی[۱۲] است که به خوبی تعریف شده[۱۳]، خودکفا[۱۴] است و به زمینه[۱۵] یا وضعیت[۱۶] سایر سرویس‌ها وابسته نیست.

نگاهی دقیق‌تر به مفهوم سرویس بیانگر این است که سرویس به عنوان یک واحد نرم‌افزاری خودکفا (یا خود اتکاء) که یک وظیفه‌ی مشخص را انجام می‌دهد، دارای سه جزء است: یک واسط،[۱۷] یک قرارداد و پیاده‌سازی. واسط (اینترفیس) چگونگی انجام درخواست‌های کلاینت (مصرف‌کننده‌ی) سرویس توسط ارائه‌دهنده‌ی سرویس را تعریف می‌کند، قرارداد، نحوه‌ی تعامل میان ارائه‌دهنده‌ی سرویس و کلاینت (مصرف‌کننده‌ی) سرویس را تعریف می‌کند و پیاده‌سازی همان مجموعه کُدهای سرویس است. از آنجایی‌که واسطِ یک سرویس مجزا از پیاده‌سازی آن است، یک ارائه‌دهنده‌ی سرویس می‌تواند بدون اینکه کلاینت سرویس درباره‌ی چگونگی انجام آن چیزی بداند، یک درخواست را اجرا کند؛ کلاینت (مصرف‌کننده‌ی) سرویس صرفاً لازم است درباره‌ی نحوه‌ی استفاده از سرویس‌ها آگاهی داشته باشد و نه در خصوص چگونگی پیاده‌سازی این سرویس‌ها.

در معماری سرویس‌گرا چندین نوع سرویس وجود دارد که می‌توان آن‌ها را به دو گروه سرویس‌های کسب‌وکار[۱۸] و سرویس‌های زیرساختی[۱۹] دسته‌بندی کرد. سرویس‌های کسب‌وکار سرویس‌هایی هستند که کارکردهای مشخصی از کسب‌وکار را انجام می‌دهند و برای کامل‌شدن موفق یک فرایند کسب‌وکار، وجودشان ضروری است. از آن‌جایی که از این نوع سرویس‌ها برای ایجاد سرویس‌های مرکب[۲۰] و کاربردهای کسب‌وکاری که فرایندهای کسب‌وکار را خودکار می‌کنند استفاده می‌شود، این نوع خدمات را می‌توان سرویس‌های کاربرد[۲۱] نیز نامید. برای مثال، ممکن است در مخزن سرویس‌های کسب‌وکار یک خرده‌فروشی، سرویس‌هایی نظیر «سرویس انبار»، «سرویس مدیریت مشتری» و «سرویس حمل و نقل» وجود داشته باشد.

سرویس‌های کسب‌وکار را می‌توان به چهار گروه زیر دسته‌بندی کرد:

  • سرویس‌های موجودیت‌های اطلاعاتی[۲۲]: مؤلفه‌هایی داده‌محور[۲۳] از سیستم هستند که مسئولیت عرضه‌ی اطلاعات ذخیره‌شده در پایگاه‌ داده‌ها را برعهده دارند. این دسته از سرویس‌ها عموماً حول «نام‌ها و عناوین» مطرح در فرایندهای کسب‌وکار شکل می‌گیرند.

  • سرویس‌های قابلیت کسب‌وکار[۲۴]: مؤلفه‌هایی عمل‌محور[۲۵] هستند که بیانگر قابلیت‌هایی کلان (درشت‌دانه[۲۶]) و عمومی[۲۷] از کسب‌وکار می‌باشند. این دسته از سرویس‌ها عموماً حول «افعال» مطرح در فرایندهای کسب‌وکار شکل می‌گیرند.

  • سرویس‌های فعالیت[۲۸]: مؤلفه‌هایی عمل‌محور[۲۹] هستند که بیانگر قابلیت‌هایی جزء‌‌تر (ریزدانه‌تر‌[۳۰]) نسبت به سرویس‌های از نوع قابلیت کسب‌وکار هستند و قابلیت‌های مشخص‌تر و خاص‌تری از کسب‌وکار را ارائه می‌کنند. این دسته از سرویس‌ها عموماً حول «افعال» مطرح در فرایندهای کسب‌وکار شکل می‌گیرند.

  • سرویس‌های فرایندی[۳۱]: دربرگیرنده‌ی منطق کسب‌وکار هستند و در آن‌ها سرویس‌هایی از نوع موجودیت کسب‌وکار، قابلیت کسب‌وکار و فعالیت، از طریق سازوکار هم‌آوایی[۳۲] در کنار هم قرار گرفته و سرویس‌های مرکب کسب‌وکار[۳۳] را ایجاد می‌کنند.

[۱] Service-oriented Architecture :SOA

[۲] Architectural Style

[۳] Autonomous

[۴] Loosely coupled

[۵] Coarse-grained

[۶] Contract

[۷] Discoverable Addresses

[۸] Policies

[۹] Service Consumers

[۱۰] Coarse-grained

[۱۱] Autonomy

[۱۲] Function

[۱۳] Well-defined

[۱۴] Self-contained

[۱۵] Context

[۱۶] State

[۱۷] Interface

[۱۸] Business Services

[۱۹] Infrastructure Services

[۲۰] Composite Services

[۲۱] Application Services

[۲۲] Entity Services

[۲۳] Data-centric

[۲۴] Capability Services

[۲۵] Action-centric

[۲۶] Coarse-grained

[۲۷] Generic

[۲۸] Activity Services

[۲۹] Action-centric

[۳۰] More fine-grained

[۳۱] Process Services

[۳۲] Orchestration

[۳۳] Composite business services

تماس با آکادمی

یادداشت بگذارید تا با شما تماس بگیریم ...

Sending

Log in with your credentials

Forgot your details?