window.pipedriveLeadboosterConfig = { base: pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster on jo olemassa') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Lisätietoja Ruby on Rails with Pub/Sub - The Codest - The Codest:stä
Codest
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Toimialat
    • Fintech & pankkitoiminta
    • E-commerce
    • Adtech
    • Terveysteknologia
    • Valmistus
    • Logistiikka
    • Autoteollisuus
    • IOT
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
  • Tietoa meistä
  • Palvelut
    • Ohjelmistokehitys
      • Frontend-kehitys
      • Backend-kehitys
    • Staff Augmentation
      • Frontend-kehittäjät
      • Backend-kehittäjät
      • Tietoinsinöörit
      • Pilvi-insinöörit
      • QA insinöörit
      • Muut
    • Se neuvoa-antava
      • Tilintarkastus & konsultointi
  • Arvo
    • TOIMITUSJOHTAJA
    • CTO
    • Toimituspäällikkö
  • Tiimimme
  • Tapaustutkimukset
  • Tiedä miten
    • Blogi
    • Tapaamiset
    • Webinaarit
    • Resurssit
Työurat Ota yhteyttä
Takaisin nuoli PALAA TAAKSE
2022-12-07
Ohjelmistokehitys

Lisätietoja Ruby on Rails with Pub/Sub -laitteesta

Codest

Michal Pawlak

Vanhempi Ruby-kehittäjä

Pub/Sub voi tuoda monia etuja projektille - se voi tehdä koodista siistiä, irrottaa palvelut toisistaan ja tehdä niistä helposti skaalautuvia. Lue lisää Pub/Subista seuraavasta artikkelista ja nosta projektisi tasoa!

Ruby on Rails (Rails, RoR) on tunnettu web-sovelluskehys, joka on kirjoitettu kielellä Ruby ohjelmointikieli. Pub/Sub on lyhennetty nimi ohjelmistojen suunnittelumalleille nimeltä Publish-subscribe. Selitän, miten ohjelmistokomponenttien välinen kommunikointi Railsissa voitaisiin hoitaa Pub/Sub-menetelmällä.

Mikä on Pub/sub?

Pub/sub on ohjelmistosuunnittelumalli, joka tarjoaa palveluiden välistä viestintää. Palvelu
liittyy jompaankumpaan kahdesta roolista: julkaisija (joka tuottaa) tai vastaanottaja (joka kuluttaa). Mikä on
tuotetaan kulutettavaksi, määritetään tapahtumaksi, viestiksi tai ilmoitukseksi. Vuonna
Tässä artikkelissa niitä käytetään vaihtelevasti viittaamaan samaan asiaan.
Palvelu, joka tuottaa, ei tiedä, kuka kuluttaa. Palvelu, joka kuluttaa, ei
tietää viestin alkuperän. Ne voivat pysyä toisilleen tuntemattomina. Se eroaa
viestijonot, joissa viestin lähettävä komponentti usein tietää viestin määränpään.
- tämäntyyppisen viestinnän avulla voit lähettää viestejä missä tahansa. Tämä mekanismi on keskeinen
of Pub/sub ja se tarkoittaa, että ne on erotettu toisistaan.

Yhteisten etujensa ilmaiseminen edellyttää yhteistä ymmärrystä. Siksi,
molemmissa rooleissa on implisiittinen mekanismi, jossa viestin tuottaja ja
viestin kuluttaja tapaa. Tätä mekanismia kutsutaan aiheeksi, tilaukseksi tai aiheeksi. Se on
vastaa viestien luokittelusta kohteisiin, se on lähinnä tilaton viestisuodatin.
Aiheet toimivat lähetysasemina. Julkaisija tuottaa viestin aiheeseen,
tilaajat saavat välittömästi viestin aiheesta. Kytkettyjen
palveluissa tehokkain tapa vaihtaa viestejä on käsitellä niitä asynkronisesti.

Rails ilman Pub/Sub

Oletusarvoisesti Railsissa ei ole ohjelmistosuunnittelumallien yleiskustannuksia komponenttien välisessä viestien välittämisessä. Kehittäjät käyttävät standardia oliosuuntautunut ohjelmointi (OOP) paradigma: parametrien välittäminen funktioille, luokkien kysyminen arvoista.

Kun hakemus on melko yksinkertainen, se voi riittää. Kun sovellus kasvaa ja esimerkiksi joitakin toimintoja on suoritettava asynkronisesti, niin silloin projekti tarvitsee abstraktiota, joka ratkaisee tämän tiedonkulun. Sen sijaan, että kehittäjät keksisivät pyörän uudelleen, he voivat toteuttaa Pub/sub täyttämään tämän abstraktion puutteen.

Pub/Subin edut Railsin kanssa

  • Vältä aktiivisen tietueen takaisinkutsuja.
  • Kun järjestelmään lisätään asynkronista rinnakkaiskäsittelyä, suorituskyky, luotettavuus ja skaalautuvuus paranevat.
  • Viestejä voidaan lähettää asynkronisesti järjestelmän eri osiin.
  • Mahdollistaa viestien lähettämisen asynkronisesti järjestelmän eri osiin.
  • Decoupling - toiminnallisuuden lisääminen tai muuttaminen ei vaikuta mihinkään, koska Pub/Sub
    voit muokata kaiken vuorovaikutusta.
  • Viestin kuluttajan ei enää tarvitse tarkistaa säännöllisesti päivityksiä tai uusia viestejä.
    tiedot. Se vähentää toimitusviivettä, joka voi olla erityisen ongelmallista järjestelmissä, joissa
    eikä viivytyksiä siedetä.
  • Järjestelmä voi käsitellä tilaajien määrää ilman rajoituksia, koska se voi muuttua,
    päivittää, lisääntyä tai kadota milloin tahansa.

Pub/Subin ja Railsin haitat

  • Pub/sub-järjestelmien suurin haittapuoli on se, että niissä ei ole kytketty yhteen julkaisijaa ja toimittajaa.
    tilaaja.

Rails Pub/Sub käyttöönotto

Esimerkkejä lähdekoodin Rails kirjoitettiin käyttäen kirjastoa
Pub/Sub on Rails (Rubyn nimikkeistössä kirjasto on nimeltään gem): Löydät lisätietoja gemin readme-tiedostosta. Toteutus koostuu moduuleista:

  1. Alue,
  2. Tapahtuma,
  3. Tapahtuman käsittelijä,
  4. Tapahtuman julkaisija,
  5. Tilaus.

Verkkotunnus

Kuvaa liiketoimintalogiikan, jotta Pub/Subille voidaan tarjota konteksti ja näin ollen tehdä puhtaat koodi.

 moduuli Ilmoitukset
   extend PubSub::Domain
 end
 moduuli Raportit
   extend PubSub::Domain
 end

Tapahtuma

Se on luokka, joka kuvaa, mitä tapahtui. Ilmoita luokan nimi mahdollisimman hyvin itseään kuvaavaksi sen kanssa, mitä tapahtui, esimerkiksi: peruutettu, muutettu, luotu, tuhottu, lähetetty, päivitetty. Tapahtuman nimet voivat näyttää seuraavanlaisilta: ProfitAndLossStatementCreatedEvent, joka tarkoittaa, että tilinpäätös luotiin.

 class Reports::ProfitAndLossStatementCreatedEvent < PubSub::DomainEvent
   attribuutti :profit_and_loss_statement_id, Types::Strict::Integer
 end

Tapahtuman julkaisija

Luokka, joka pystyy lähettämään tapahtumia. Esimerkissä luodaan palveluraportti. Kun raportti on luotu onnistuneesti, lähetetään raportin luomista koskeva tapahtuma.

luokka Raportit::TuloslaskelmaPalvelu
   include PubSub::Emit
    def execute
     emit(:report_profit_and_loss_statement_created, profit_and_loss_statement_id: id) if result.ok?
   end
 end

Tapahtuman käsittelijä

Tämä luokka on suoritettava vastauksena tapahtuman käsittelyyn.

moduuli Ilmoitukset
 class ReportsProfitAndLossStatementCreatedHandler < PubSub::DomainEventHandler
   def call
     ReportMailer.profit_and_loss_statement(profit_and_loss_statement).deliver_now
   end

   private

   def profit_and_loss_statement
     ProfitAndLossStatement.find(event_data.profit_and_loss_statement_id)
   end
 end
end

Tilaus

Tapahtumat sidotaan käsittelijöihinsä tilausten kautta.

ilmoitukset:
 raportteja__profit_and_loss_statement_created: async

Esimerkkejä käyttötapauksista:

  • "Seuraa" -toiminto sosiaalisissa verkostoissa,
  • Esineiden internet,
  • Postitus,
  • Ilmoitus luoduista tiedostoista.

Samankaltaiset kuviot

  1. EventBus - komponentit voivat lähettää tapahtumia EventBusiin tietämättä, kuka ne vastaanottaa tai kuinka monta vastaajaa reagoi,
  2. Tarkkailija - subjekti ylläpitää luetteloa riippuvaisista henkilöistä, joita kutsutaan tarkkailijoiksi, ja ilmoittaa niille aina, kun niiden tila muuttuu,
  3. Pooling - Kyselyssä asiakkaat kysyvät säännöllisesti järjestelmältä, onko uusia tapahtumia tai tietoja.

Jalokivet

  • https://github.com/edisonywh/rocketman

  • https://github.com/krisleech/wisper

  • https://github.com/stevo/pubsubosoitteessakiskot

Yhteenveto

Pub/sub ei ole yleinen lähestymistapa Ruby in Railsissa. Kuten artikkelissa esitellään, tämä malli voi tuoda monia etuja projektille - se voi tehdä koodista siistiä, irrottaa palvelut toisistaan ja tehdä niistä helposti skaalautuvia.

yhteistyöbanneri

Aiheeseen liittyvät artikkelit

Fintech

5 esimerkkiä Rubyn parhaasta käytöstä

Oletko koskaan miettinyt, mitä voimme tehdä Rubylla? No, taivas on luultavasti rajana, mutta puhumme mielellämme muutamista enemmän tai vähemmän tunnetuista tapauksista....

Codest
Pawel Muszynski Software Engineer
Ohjelmistokehitys

Rails-kehitys TMUX, Vim, Fzf + Ripgrep -ohjelmilla

Muutama vuosi sitten grillailin ystävieni kanssa, jotka olivat kaikki Java-kehittäjiä. En ole varma, miten asia tuli puheeksi, mutta aloimme puhua koodausympäristöistämme. I...

Codest
Marcin Doliwa Software Engineer
Ohjelmistokehitys

Tuotekehitys: Python vs. Ruby

Python ja Ruby ovat molemmat yleisimmin käytettyjä backend-ohjelmointikieliä. Python on hieman suositumpi ja sen käyttöalue on laajempi. Ruby tuo kuitenkin myös monia etuja ja...

Codest
Kamil Ferens Kasvupäällikkö
Ohjelmistokehitys

Ruby on Rails:n modulaarisointi Packwerkin avulla Episode I

Ihmisten on vaikea nähdä ongelman kokonaiskuvaa ilman, että he käyttävät paljon aikaa ja vaivaa. Näin tapahtuu erityisesti silloin, kun työskennellään suurten ja monimutkaisten sovellusten parissa.....

Nicolas Nisoria
Ohjelmistokehitys

Rackin rooli Ruby-ekosysteemissä

Lue lisää telineen roolista Rubyn ekosysteemissä asiantuntijaltamme ja paranna ruby-pelisi taitoja.

Nicolas Nisoria

Tilaa tietopankkimme ja pysy ajan tasalla IT-alan asiantuntemuksesta.

    Tietoa meistä

    The Codest - Kansainvälinen ohjelmistokehitysyritys, jolla on teknologiakeskuksia Puolassa.

    Yhdistynyt kuningaskunta - pääkonttori

    • Toimisto 303B, 182-184 High Street North E6 2JA
      Lontoo, Englanti

    Puola - Paikalliset teknologiakeskukset

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Krakova
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsova, Puola

      Codest

    • Etusivu
    • Tietoa meistä
    • Palvelut
    • Tapaustutkimukset
    • Tiedä miten
    • Työurat
    • Sanakirja

      Palvelut

    • Se neuvoa-antava
    • Ohjelmistokehitys
    • Backend-kehitys
    • Frontend-kehitys
    • Staff Augmentation
    • Backend-kehittäjät
    • Pilvi-insinöörit
    • Tietoinsinöörit
    • Muut
    • QA insinöörit

      Resurssit

    • Faktoja ja myyttejä yhteistyöstä ulkoisen ohjelmistokehityskumppanin kanssa
    • Yhdysvalloista Eurooppaan: Miksi amerikkalaiset startup-yritykset päättävät muuttaa Eurooppaan?
    • Tech Offshore -kehityskeskusten vertailu: Tech Offshore Eurooppa (Puola), ASEAN (Filippiinit), Euraasia (Turkki).
    • Mitkä ovat teknologiajohtajien ja tietohallintojohtajien tärkeimmät haasteet?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Verkkosivuston käyttöehdot

    Tekijänoikeus © 2025 by The Codest. Kaikki oikeudet pidätetään.

    fiFinnish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fiFinnish