2012-03-27 23 views
8

Ekibim, dahili kullanım için monolitik Raylar uygulamasında bir grup modül geliştiriyor. Modüller örneğin izin talebi, personel bilgisi, görevler/yapılacaklar vb. Içindir. Her modülün kendi amacı vardır, ancak bir şekilde personel profili ve kullanıcı kimlik doğrulaması gibi ortak bilgilere bağlıdır. Her modülün bir geliştirici atanmıştır ve aynı Raylar uygulamasına kodlar verirler. Şu anda, kodu ve ölçeği korumak çok zor. Şimdi, uygulamayı küçük dağıtılmış uygulamalara ayırmak ve onlara ekosistem yapmak için araştırmam yapıyorum.Rails uygulamasının farklı küçük uygulamalar ekosistemine nasıl ayrıştırılacağı

  • diğer istemci uygulamaları görüşlerini sürdürmesine bir ana uygulama olmalıdır: İşte aradığım kavramdır. Daha da iyisi, diğer istemci uygulamalarının ona bağlanabilmesi için bir platform görevi görüyor. Personel, istemci uygulamasına erişmek için bu ana uygulamaya giriş yapar.
  • Ana uygulama, AJAX veya diğer yollarla (karar verilmemiş) istemci uygulaması görünümünü oluşturmalıdır.
  • Ancak, uygulamaları ayrıştırmak istiyorum, ancak her uygulama ekosistemdeki diğer istemci uygulamasından personel profili gibi kaynakları/verileri sorgulayabilmelidir.
  • Aslında, her uygulamanın etkileşimi hakkında karar vermedim. BİZİM İÇİN RESTful Düşünme (kararsız).
  • Her geliştiricinin her uygulamayı bağımsız olarak geliştirebileceği geliştirme ortamını desteklemelidir. Bu nedenle kendi kodlarını kendi git deposunda tutuyorlar. Bu muhtemelen uygulamayı ilk etapta çözmenin temel amacıdır.

Ben Raylar kitap üzerinde Ruby Servis Odaklı Tasarım okuyorum, ama onlar küçük farklı hizmetler içine bir uygulamayı çürüyen odaklanmak gibi küçük farklı uygulamalar istiyorum oysa o, görünüyor. Sadece başka bir yol var mı diye merak ediyorum.

Uzun bir soru için üzgünüm ve çok fazla soru soruyorum. Sadece aynı durumun içinde olup olmadığınızı bilmek istiyorum ve araştırmalarımda daha fazla çalışmaya devam edebilmem için bazı makaleler, topluluklar, kitaplar için bana rehberlik edebilir.

cevap

4

Refactoring'in sevinçleri. Bir uygulamayı mantıksal gruplar halinde yapılandırmaya çalışmak zor bir dans olabilir, böylece parçalar ayrıştırılabilir.

Engines vs Mountable çok bilgilendirici olmak üzere Engines'a bakmanızı şiddetle öneririm. Bu gem olarak paketlenmiş bir mini Raylar uygulaması (aka bir Motor) oluşturmanıza olanak sağlar. Özel Motor taşları, bir Rails uygulamasında bir araya getirilerek, eksiksiz bir yapılandırılabilir işlevsellik seti (modeller, kontrolörler, görünümler, vb.) Sağlanır.

Hizmet Odaklı Mimarinin kullanışlılığı, ne tür veriye bastığınıza ve etrafa çekeceğinize çok bağlıdır. Bu söyleniyor, Rails RESTful için gerçekten kablolu, bu yüzden bu rota ile para için çok fazla patlama olsun.

+0

"Özel Engine taşları, bir yapılandırılabilir işlevsellik seti (modeller, denetleyiciler, görünümler, vb.) Sağlayarak bir Rails uygulamasında paketlenmiştir." Fakat bu Motor parçaları fiziksel olarak ayrı ayrı konuşlandırılabilir mi? Öyleyse nasıl? – richsinn

+1

@theSshow A Rails 'Engine'in mevcut bir Rails uygulamasının içinde kurulması gerekiyor, bağımsız olarak çalışamazlar. Rails'in işlevselliğini gerektiren özelliklerin, yeniden kullanılabilen bir gemide kapsüllenmesini sağlar. Örneğin, bir forum sağlayan bir mücevher, forumu çalıştırmak için gereken denetleyiciler, görünümler ve modellerden oluşacaktır. – mguymon