Sobes.tech
Senior

Ինչպե՞ս կարող է GraphQL-ը ինտեգրվել հեքսագոնալ ճարտարապետությանը։

sobes.tech AI

Պատասխան AI-ից

Հեքսագոնալ ճարտարապետությունում, GraphQL-ը կարող է հանդես գալ որպես դարպաս, որը հեշտացնում է արտաքին միջավայրի և ծրագրի հիմնական միջերեսի փոխազդեցությունը: Այն կարող է իրականացվել որպես՝

  1. Մուտքային ադապտեր: GraphQL API-ն ընդունում է հաճախորդներից (ֆրոնտենդ, այլ ծառայություններ) հարցումները, վերափոխում է դրանք և կանչում համապատասխան դոմենային ծառայություններ ("պորտներ" հիմնականում)՝ բիզնես տրամաբանությունը իրականացնելիս: Դոմենային ծառայությունների արդյունքները հավաքագրվում և վերադարձվում են GraphQL ձևաչափով:

  2. Ելքային ադապտեր (քիչ թե շատ հազվագյուտ): որոշ դեպքերում, GraphQL-ը կարող է օգտագործվել արտաքին ծառայությունների ինտեգրացիայի համար, որոնք նույնպես տրամադրում են GraphQL API: Այդ դեպքում, ծրագրի հիմնական ("պորտ") GraphQL հաճախորդը կանչում է արտաքին ծառայությունը ադապտերով:

Ինտեգրացիան իրականացվում է GraphQL լուծիչների շերտի իրականացման միջոցով: Այս լուծիչները ծառայում են որպես "գետնանցում"՝ GraphQL սխեմայի և ծրագրի հիմնական օբյեկտների/ծառայությունների միջև:

// Node.js-ում GraphQL լուծիչի օրինակ
const resolvers = {
  Query: {
    getUser: async (parent, { id }, { domainServices }) => {
      // Դարպասի միջոցով դոմենային ծառայության կանչում
      const user = await domainServices.userService.findUserById(id);
      return user;
    },
  },
  Mutation: {
    createUser: async (parent, { input }, { domainServices }) => {
      // Բիզնես տրամաբանությունը իրականացնելիս դոմենային ծառայության կանչում
      const newUser = await domainServices.userService.createUser(input);
      return newUser;
    },
  },
};

Այս մոտեցման առավելությունները՝

  • Բաժանարարություն: GraphQL API-ն կարող է փոփոխվել առանց հիմնական բիզնես տրամաբանությանը ազդելու:
  • Թեստավորման հնարավորություն: Դոմենային ծառայությունները կարող են անկախ GraphQL շերտից թեստավորվել:
  • Գործառնականություն: Թեթև է փոխել տեխնոլոգիաները "պորտ" մակարդակում՝ առանց հիմնականին ազդելու:

Այսպիսով, GraphQL-ը դառնում է այն "վահանակներից" մեկը, որի միջոցով արտաքին սպառողները փոխազդում են մեկուսացված և լավ կառուցված ծրագրի հիմնական հետ: