Java Chassis 3의 계약 우선(API 우선) 개발 정보

이 기사는 Huawei Cloud 커뮤니티 " Java Chassis 3 Technology Decryption: Contract First(API First) Development ", 작성자: liubao68 에서 공유되었습니다 .

계약 우선(API First) 개발은 애플리케이션 개발 프로세스에서 API 설계를 최우선 과제로 삼는 것을 의미합니다. 웹 서비스 개념의 발전과 함께 계약 우선 개발이 지속적으로 주목을 받고 있습니다. 특히 마이크로서비스 아키텍처 등장 이후 API 설계는 기능 개방, 성능 최적화 등의 문제에 영향을 미치는 핵심 요소가 되었습니다. 일반적인 계약 우선 개발 프레임워크 및 패턴은 다음과 같습니다.

  • 웹 서비스 기술을 사용하면 디자이너는 먼저 WSDL을 작성하여 웹 서비스 콘텐츠를 설명하고 이를 도구와 결합하여 코드를 생성할 수 있습니다. WSDL을 배포할 수 있으며, 다양한 언어를 WSDL과 결합하여 클라이언트를 생성할 수 있습니다.
  • gRPC 기술을 사용하면 설계자는 먼저 IDL을 작성하여 RPC 서비스 콘텐츠를 설명하고 이를 도구와 결합하여 코드를 생성할 수 있습니다. gRPC는 주로 서비스 간 호출을 해결합니다.
  • Spring Boot를 사용하면 개발자는 Swagger 도구를 사용하여 먼저 Open API 인터페이스를 작성한 다음 도구를 통해 RESTFul 서버 코드를 생성할 수 있습니다.

이러한 기술을 사용하려면 디자이너는 언어 독립적인 설명 언어(WSDL, IDL, Swagger 등)를 마스터하고 도구를 통해 언어별 코드를 생성해야 합니다. 지원하는 애플리케이션 시나리오도 다릅니다. 웹 서비스는 외부 WEB 서비스에 적합하고 gRPC는 내부 RPC 서비스에 적합합니다. Java 섀시 계약 우선 개발은 다음과 같은 개선 사항을 제공합니다.

  • 디자이너가 새로운 설명 언어를 익히지 않고도 Java 언어를 직접 사용하여 서비스 인터페이스를 정의할 수 있습니다.
  • 웹 서비스 인터페이스와 내부 RPC 인터페이스를 동시에 정의합니다.

Spring Boot와 마찬가지로 Java 섀시의 언어 독립적인 설명 언어는 여전히 Open API를 통해 언어 간 및 서비스 배포 요구 사항을 충족할 수 있습니다.

계약 우선순위 개발 프로세스

계약 우선 개발은 설계, 개발, 테스트, 배포, 운영 및 유지 관리 등 소프트웨어 개발의 전체 프로세스를 포괄할 수 있으며 계약을 통해 서로 다른 링크에서 병렬 작업을 수행할 수 있으므로 개발 효율성이 향상됩니다. 간단한 계약 개발 프로세스는 다음과 같습니다.

다음 코드는 Java 의미 체계를 통해 계약을 정의하고 공급자와 소비자를 구현하는 프로세스를 간략하게 보여줍니다.

  • 서비스 계약 정의
@RequestMapping(경로 = "/공급자")
공개 인터페이스 ProviderService {
  @GetMapping("/sayHello")
  String sayHello(@RequestParam("name") 문자열 이름);
}
  • 공급자 정의
@RestSchema(schemaId = "ProviderController", SchemaInterface = ProviderService.class)
공개 클래스 ProviderController는 ProviderService를 구현합니다.
  @우세하다
  public String sayHello(문자열 이름) {
    "안녕하세요" + 이름을 반환합니다.
  }
}
  • 소비자 정의
@구성
공개 클래스 ProviderServiceConfiguration {
  @콩
  공공 ProviderService 공급자 서비스() {
    return Invoker.createProxy("provider", "ProviderController", ProviderService.class);
  }
}

RPC를 사용하여 공급자에 액세스합니다.

@RestSchema(schemaId = "ConsumerController", SchemaInterface = ConsumerService.class)
공개 클래스 ConsumerController는 ConsumerService를 구현합니다.
  개인 ProviderService 공급자 서비스;

  @Autowired
  공공 무효 setProviderService(ProviderService 공급자 서비스) {
    this.providerService = 공급자서비스;
  }

  @우세하다
  public String sayHello(문자열 이름) {
    return 공급자Service.sayHello(이름);
  }
}
  • 서비스 배포 및 웹 서비스 접속

공급자의 서비스 정의는 다음과 같은 Open API 정보를 생성합니다.

오픈파이어: 3.0.1
정보:
  제목: org.apache.servicecomb.samples.api.ProviderService에 대한 swagger 정의
  버전: 1.0.0
서버:
- URL: /공급자
경로:
  /say안녕하세요:
    얻다:
      OperationId: sayHello
      매개변수:
      - 이름 : 이름
        에서: 쿼리
        필수: 사실
        개요:
          유형: 문자열
      응답:
        "200":
          설명: 200의 응답
          콘텐츠:
            애플리케이션/json:
              개요:
                유형: 문자열
            애플리케이션/프로토부프:
              개요:
                유형: 문자열
            텍스트/일반:
              개요:
                유형: 문자열
구성 요소: {}

이 정보는 WEB 서비스 접속에 사용될 수 있습니다. 예를 들어 위의 정보가 사용될 수 있습니다.

GET /providers/sayHello?name=세계

액세스를 위한 HTTP 요청입니다. 다른 프레임워크나 언어의 경우 Open API를 사용하여 액세스를 위한 해당 코드를 생성할 수도 있습니다.

서비스 거버넌스

서비스 거버넌스는 개발 프로세스와 독립적으로 설계되었으며, Open API와 서비스 거버넌스 규칙 설명 언어를 결합하여 API에 대한 서비스 거버넌스를 구성할 수 있습니다.

서비스 빗:
  일치그룹:
    안녕하세요작업: |
      성냥:
        - api 경로:
            접두사: "/provider/sayHello"
  속도 제한:
    ## 현재 제한기는 10밀리초마다 100개의 요청을 허용합니다. 요청이 1000밀리초 이상 수신되지 않으면
    ## 권한이 거부됩니다
    안녕하세요작업: |
      비율: 100
      LimitRefreshPeriod: 10
      시간 초과지속 시간: 1000

위의 규칙은 API 인터페이스의 흐름을 제한합니다.

언약 우선 개발의 다른 측면

테스트 측면에서 API 테스트를 포괄하는 계약을 통해 자동화된 테스트 코드를 생성할 수 있습니다. 배포 및 구현 측면에서 Open API 정보를 게이트웨이로 가져와 API 기능 노출, 인증 및 계정을 실현할 수 있습니다. 또한 문서 생성, 애플리케이션 모니터링 통계 등 다양한 측면에서도 계약을 활용할 수 있습니다.

요약하다

Java Chassis는 JAVA 언어의 인터페이스 정의를 기반으로 하며, 이는 기본 언어와 플랫폼 독립적인 설명 언어의 SDK 배포를 모두 충족할 수 있으며 추가 실행 코드를 생성하기 위한 도구를 사용할 필요가 없으므로 통일되고 일관된 접근 방식을 제공합니다. 외부 서비스 개발 및 내부 서비스 개발 경험. 계약 우선 개발은 서비스 지향/마이크로서비스 지향을 위한 매우 효율적인 프로세스 방법입니다. Java 섀시는 계약 우선 개발을 지원하는 데 유용한 도구 지원을 제공합니다.

 

화웨이 클라우드의 신기술에 대해 빨리 알아보고 팔로우하려면 클릭하세요~

고등학생들이 성인식으로 자신만의 오픈소스 프로그래밍 언어를 만든다 - 네티즌들의 날카로운 논평: 애플은 방어에 의존해 만연한 사기로 인해 국내 서비스가 중단됐다 . 앞으로는 윈도 플랫폼 타오바오(taobao.com)에서 독립 게임을 제작할 계획이다. 웹 버전 최적화 작업을 다시 시작해 프로그래머들의 종착지, 비주얼 스튜디오 코드 1.89에서 가장 많이 쓰이는 자바 LTS 버전인 자바 17이 출시되고, 윈도 10에는 시장 점유율 70%, Windows 11은 계속해서 하락
{{o.이름}}
{{이름}}

추천

출처my.oschina.net/u/4526289/blog/11105461