+2 امتیاز
قبل در برنامه نویسی توسط (79 امتیاز)
برچسب گذاری دوباره قبل توسط
به نظر شما من برای تولید برنامه های سازمانی برای یک سازمان، از EJB استفاده کنم یا Spring؟

3 پاسخ

+3 امتیاز
قبل توسط (95 امتیاز)
به نظر بنده بسته به ساختار مدیریت پروژه هر سازمانی هردوی آنها مناسب می باشد و در برخی سازمانها ترکیب هردوی EJB برای لایه منطق و spring برای لایه frontend، میتواند معماری کارآمدی باشد.

به دلیل پباده سازی کتابخانه های فوق العاده ای و ساده برای استفاده ای که  spring در بسیاری از مفاهیمی چون WebMVC  Webflow،Schedulling، JMSTemplate و انواع Factory Beanها غیره دارد، نمی توان صرف توسعه ساده و آموزش کم هزینه تر با استفاده EJB در پیاده سازی لایه منطق این دو را با یکدیگر مقایسه کرد.

به عنوان پیشنهاد در صورتیکه توسط آن سازمان  Java EE Application Server خاصی مشخص نشده است و محصول می تواند برروی Tomcat و Jetty نیز در محیط مشتری نصب و راه اندازی شود و همچنین تیم کوچکی از توسعه دهندگان خبره دارید به طور کامل در تمامی لایه ها از spring استفاده کنید.

در غیر اینصورت برای لایه منطق حتما از EJB و استانداردهای وابسته به آن و برای لایه frontend از ترکیب spring و دیگر تکنولوژیهای مناسب این لایه استفاده نمایید.
+3 امتیاز
قبل توسط (1.2هزار امتیاز)
ویرایش شده قبل توسط

با تایید نظرات آقای کابی، بنده یک مورد اضافه می کنم اون هم اینه که آیا scale پروژه شما انقدر بزرگ هست که در زمان deploy در محیط production، نیاز به یک محیط distributed برای اجرا داشته باشه؟

در این صورت بنده اکیدا EJB رو پیشنهاد می کنم زیرا از لحاظ وجودی، ارتباط تنگاتنگی با application server در زمان اجرا دارد و با استفاده ازین platform، شما به بهترین شکل مدیریت resouce های سیستمی و غیر سیستمی مورد نیاز (حتی نمونه سازی و مدیریت life-sycle مربوط به bean ها) را به عهده ejb container می گذارید. بدین صورت شما به طور کامل وظیفه distributing  رو هم به عهده application server قرار داده اید و ازین نظر نگرانی نخواهید داشت.

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

+2 امتیاز
قبل توسط (330 امتیاز)
ویرایش شده قبل توسط

به نظر من مطرح کردن این سوال اینجا اشتباه است،

به چند دلیل :

1- مشخص نبودن scope پروژه شما به عنوان مثال

از نظر نوع معماری، تعداد کاربران، تعداد تراکنش، تعداد سرویس های ارائه شده به سیستم های درحال تعامل با سیستم در حال توسعه، تعداد سرویس هایی که این سیستم می گیرد، سرعت تعامل بین component هایی که در این سیستم تعریف شده چقدر است؟ ،  و از همه مهم تر آیا به این ابزارها شما واقعا احتیاج دارید ؟

2- این سوال مشابه EJB Vs Spring می باشد که سوال درستی نیست

============================================

همان طور که در بالا اشاره شد خیلی بستگی به معماری پروژه دارد.

EJB استاندارد (JSR) در حوزه JEE است که توسط JCP تایید شده است. EJB کار مدیریت Bean های شما را بر عهده می گیرد البته این کار را Spring هم انجام می دهد. Spring قابلیت های خوبی دارد مثل AOP، IOC.

EJB قابلیت خوبی برای برقراری ارتباط با JMS دارد. برای کار با EJB به یک Application Server نیاز است. Application Server ها قابلیت Cluster شدن دارند. امکان مانیتورینگ خوبی بر روی Browser می دهد. در Application Server شما EJB Container  و Web Container (servlet & jsp container) داریم.

برای اجرای پروژه با spring فقط به یک web server احتیاج است.

Spring امکانات خوبی برای integration با Hibernate یا JPA دارد. همچنین Spring MVC امکانات خوبی برای کار با UI دارد.

Spring Security امکاناتی برای قسمت امنیت ارائه داده است.

Spring roo یک امکانی است که کل DB شما را گرفته و پروژه را تا حد Aspect می سازد که اصلا پیشنهاد نمی شود.

EJB مخصوص مدیریت لایه Bean می باشد.

حال باز بسته به نوع کار شما دارد که بخواهید هر قسمت از برنامه شما خاص منظور روی یک کامپیوتر اجرا شود و معماری distributed system داشته باشید یا خیر؟

سازمان شما چقدر حاضر است هزینه کند ؟ (هزینه فرصت ، هزینه امنیت ، هزینه زمانی، هزینه برنامه نویس ، هزینه زیرساخت و ...)

این هزینه ها برای پروژه Spring و EJB متفاوت می باشد.

در این رابطه مقایسه هایی انجام شده است که لینک آنها در زیر آمده است :

http://onjava.com/pub/a/onjava/2005/06/29/spring-ejb3.html?page=1

http://stackoverflow.com/questions/68527/should-i-use-ejb3-or-spring-for-my-business-layer

http://stackoverflow.com/questions/7076144/ejb-3-1-or-spring-3-when-to-choose-which-one

http://stackoverflow.com/questions/1779169/spring-vs-ejb-can-spring-replace-ejb

سوالات مشابه

0 امتیاز
1 پاسخ 367 بازدید
+2 امتیاز
1 پاسخ 543 بازدید
0 امتیاز
2 پاسخ 1.9هزار بازدید
0 امتیاز
1 پاسخ 868 بازدید
+1 امتیاز
2 پاسخ 2.2هزار بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط javaa (127 امتیاز)
+2 امتیاز
3 پاسخ 4.9هزار بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط مسافر (922 امتیاز)
+2 امتیاز
6 پاسخ 11.8هزار بازدید
+3 امتیاز
7 پاسخ 8.9هزار بازدید
0 امتیاز
2 پاسخ 782 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط amin_y64 (50 امتیاز)
...