Sobes.tech
Senior

Kuidas saab GraphQL-i integreerida kuuekandilise arhitektuuriga?

sobes.tech AI

Vastus AI-lt

Heksagona arhitektuuris võib GraphQL toimida kui värav, mis tagab suhtluse väliskeskkonna ja rakenduse tuuma vahel. Seda saab rakendada järgmiselt:

  1. Sissepääsu adapter: GraphQL API võtab klientidelt (frontend, teised teenused) päringud vastu, teisendab need ja kutsub välja vastavaid domeeni teenuseid (tuumasisene "värav") äriloogika täitmiseks. Tulemused kogutakse ja tagastatakse GraphQL formaadis.

  2. Väljundi adapter (vähem tüüpiline): Mõnel juhul võib GraphQL kasutada ka väliste teenustega integreerimiseks, mis samuti pakuvad GraphQL API-d. Sellisel juhul kutsub rakenduse tuuma ("värava") GraphQL-klient välja välise teenuse adapteri kaudu.

Integreerimine saavutatakse GraphQL resolvrite kihi rakendamisega. Need resolverid toimivad kui "ülekandepunkt" GraphQL-i skeemi ja tuumaobjektide/teenuste vahel.

// Näide Node.js GraphQL resolvrist
const resolvers = {
  Query: {
    getUser: async (parent, { id }, { domainServices }) => {
      // Kutse domeeniteenusele "värava" kaudu
      const user = await domainServices.userService.findUserById(id);
      return user;
    },
  },
  Mutation: {
    createUser: async (parent, { input }, { domainServices }) => {
      // Kutse domeeniteenusele äriloogika täitmiseks
      const newUser = await domainServices.userService.createUser(input);
      return newUser;
    },
  },
};

Sellise lähenemise eelised:

  • Isolatsioon: GraphQL API võib muutuda ilma, et see mõjutaks äriloogikat.
  • Testitavus: Domeeni teenused saab testida sõltumatult GraphQL-kihist.
  • Paindlikkus: Tehnoloogiate vahetamine "väravate" tasemel on lihtne.

Seega, GraphQL muutub üheks "fassaadiks", mille kaudu väliskasutajad suhtlevad isoleeritud ja hästi struktureeritud tuumaga.