Sobes.tech
Senior

GraphQL necə altı bucaqlı memarlığa inteqrasiya oluna bilər?

sobes.tech Süni İntellekt

AI-dan cavab

Heksagon arxitekturasında, GraphQL xarici mühit ilə tətbiqin nüvəsi arasında qarşılıqlı əlaqəni təmin edən qapı kimi çıxış edə bilər. Bu, aşağıdakı kimi həyata keçirilə bilər:

  1. Daxili Adaptör: GraphQL API müştərilərdən (ön tərəf, digər xidmətlər) sorğuları qəbul edir, onları çevrir və uyğun domen xidmətlərini çağırır ("nüvənin portları") biznes məntiqini yerinə yetirmək üçün. Domen xidmətlərinin nəticələri toplanır və GraphQL formatında geri qaytarılır.

  2. Xarici Adaptör (daha az tipik): Bəzi hallarda, GraphQL xarici xidmətlərlə inteqrasiya üçün istifadə edilə bilər, hansı ki, həmçinin GraphQL API təqdim edir. Bu halda, tətbiq nüvəsindən ("port") GraphQL müştərisi xarici xidməti adaptör vasitəsilə çağıracaq.

İnteqrasiya, GraphQL-çözücüleri qatının həyata keçirilməsi ilə əldə edilir. Bu çözücülər, GraphQL sxemi ilə nüvənin obyektləri/xidmətləri arasında "körpü" vəzifəsini yerinə yetirir.

// Node.js-də nümunə GraphQL çözücüsü
const resolvers = {
  Query: {
    getUser: async (parent, { id }, { domainServices }) => {
      // "Port" vasitəsilə domen xidmətini çağırma
      const user = await domainServices.userService.findUserById(id);
      return user;
    },
  },
  Mutation: {
    createUser: async (parent, { input }, { domainServices }) => {
      // Biznes məntiqini yerinə yetirmək üçün domen xidmətini çağırma
      const newUser = await domainServices.userService.createUser(input);
      return newUser;
    },
  },
};

Bu yanaşmanın üstünlükləri:

  • İzolyasiya: GraphQL API, nüvədəki biznes məntiqinə təsir etmədən dəyişdirilə bilər.
  • Test ediləbilərlik: Domen xidmətləri, GraphQL qatından müstəqil şəkildə test edilə bilər.
  • Əlçatanlıq: "Port" səviyyəsində texnologiyaları dəyişdirmək, nüvəyə təsir etmədən daha asandır.

Bu şəkildə, GraphQL, xarici istifadəçilərin izolyasiya olunmuş və yaxşı strukturlaşdırılmış tətbiq nüvəsi ilə qarşılıqlı əlaqədə olmasını təmin edən "fasad"lardan biri olur.