hamed sahami
hamed sahami
خواندن ۴ دقیقه·۵ سال پیش

مقایسه فریم ورک های یکپارچه سازی برنامه های اینترپرایز

تبادل اطلاعات بین شرکت های دنیا روز به روز در حال افزایش است. در نتیجه تعداد برنامه هاییی که باید با یکدیگر یکپارچه شوند نیز در همچنین حال افزایش است. Interface ها از تکنولوژی ها، پروتکل ها و فرمت های داده ای گوناگونی استفاده می کنند. با این اوصاف، یکپارچه سازی برنامه های کاربردی باید با یک راه و روش استاندارد، موثر ضمن پشتیبانی از آزمون های خودکار مدل شوند.

فریم ورک های یکپارچه سازی در محیط JVM در دسترس هستند که هر کدام نیازمندی های این امر را برآورده می کنند:

  • Spring Integration
  • Mule ESB
  • Apache Camel

هر یک از این فریم ورک ها الگوهای یکپارچه سازی برنامه های اینترپرایز را پیاده سازی کرده اندو به همین دلیل برای استاندارد سازی و ... به منظور یکپارچه سازی توصیه می شوند.

این فریم ورک ها می توانند بروی تمام برنامه های محیط JVM به کار گرفته شوند - مهم نیست کدام تکنولوژی، پروتکل انتقال یا قالب و فرمت داده ای استفاده شود. تمام پروژه های یکپارچه سازی می توانند در یک روش و راه مستحکم تولید شوند.

در این مقاله قصد دارم بر اساس بخشی از مطالعات و نظرات فردی ام به مقایسه این فریم ورک ها بپردازم که بر اساس شاخص های زیر به عنوان نمونه شما هم می توانید مقایسه و نظر شخصی خود را داشته باشید.

  • Open source
  • Basic concepts / architecture
  • Test ability
  • Deployment
  • Popularity
  • Commercial support
  • IDE-Support
  • Error handling
  • Monitoring
  • Enterprise readiness
  • Domain specific language (DSL)
  • Number of components for interfaces, technologies and protocols
  • Expand ability

تفاوت ها

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

لطفا به کد ها و پیاده سازی های زیر در هر یک از این فریم ورک ها دقت کنید.

Spring Integration

در این فریم ورک یکپارچه سازی با استفاده از کد های فراوان XML انجام میشود و ابزار های ساده ای را مانند موارد زیر پشتیبانی میکند.

File, FTP, JMS, TCP, HTTP or Web Services

قطعه کد زیر یک مثال حد اقلی برای یکپارچه سازی با استفاده از این فریم ورک است. البته شما میتوانید برای بعضی از ابزارهای اشاره شده از annotaion ها نیز استفاده کنید اما در آخر به فایل XML اختصاصی این فریم ورک نیاز داریم. البته به نظر من بهتر بود از یک DSL برای این کار استفاده میشد. من در مورد این فریم ورک می توانم بگویم که برای پروژه های موجود از جنس SPRING با ابزارهای ساده اشاره شده بهتر است استفاده کنید. هر چند خودم از طرفداران متعصب مجموعه Springهستم.

:(

Mule ESB

همانطور که مشخص است می توانید از این فریم ورک برای یک ESB تمام عیار استفاده کنید، اما با این وجود می توانید از این فریم ورک به شکل سبک و ساده نیز همچنان استفاده نمایید. با اینکه این فریم ورک هم مانند Spring Integration از XML برای این یکپارچه سازی استفاده می کند اما به نظر من خوانایی بیشتری را به نسبت آن دارد. ابزار Mule Studio نیز کار را برای انجام یکپارچه سازی نیز بسیار راحت کرده است.

البته لازم بذکر است که این فریم ورک connector های اختصاصی برای اینترفیس های زیر ارائه کرده است.

  • SAP
  • Tibco Rendevous
  • Oracle Siebel CRM
  • Paypal
  • IBM’s CICS Transaction Gateway

راستی برای تکمیل اطلاعات پیشنهاد میکنم در خصوص این فریم ورک به سایت زیر هم سر بزنید.

http://blogs.mulesoft.org/osgi-no-thanks/

Apache Camel

این فریم ورک که توسط غول بزرگ فریم ورک ها یعنی Apacheطراحی و تولید شده از فریم ورک Mule شناخته شده تر است و شرکت های بیشتر در مورد مسیله یکپارچه سازی به سراغ آن میروند. به طور قطع برای هر ابزاری که فکرشو کنید می توانید از این فریم ورک برای مسیله جاری استفاده کنیم. اگر ابزار یا کامپوننت مورد نظر خودتون رو در این فریم ورک پیدا نکردید می تونید به سادگی خودتون اون رو ایجاد کنید.

'
'

خوانایی قابل قبول، ابزار بصری طراحی سناریوهای لازم که توسط FuseSource برای تولید XML مورد نیاز طرح یکپارچه سازی به کار میرود همگی از نقاط قدرت این فریم ورک هستند. اما جالب انگیز ترین مطلب در خصوص مقایسه این فریم ورک بیان این نکته است که شما میتوانید از JAVA, Groovy, Scala نیز به جای XMLاستفاده کنید.

نتیجه گیری لازم نیست برنده این مقایسه معلومه

شاد باشین دوستان عزیزم و برای پیدا کردن سوالات برنامه نویسی و چند تا حوزه دیگه رو کمک من در کانال واتس آپ بنده حساب کنید.

;)

https://chat.whatsapp.com/DmERbiw3rVU42I9uELlMgR

دوستدار شما عزیزان حامد سهامی

javaesb
https://www.linkedin.com/in/hamedsahami/
شاید از این پست‌ها خوشتان بیاید