지속적인 통합 현황
나뭇가지 | GCC 7.5.0 및 9.4.0 | 비주얼 스튜디오 2019 | |
---|---|---|---|
클랭 9.0 | 비주얼 스튜디오 2022 | ||
엑스코드 15.2 | MinGW-w64 | ||
엑스코드 15.4 | |||
주인 | |||
개발 |
다운로드
C++ 마이크로 서비스 프로젝트는 모듈식 및 동적 서비스 지향 애플리케이션을 구축하기 위한 구성 요소 모음입니다. OSGi를 기반으로 하지만 기본 크로스 플랫폼 솔루션을 지원하도록 맞춤화되었습니다.
C++ 마이크로 서비스 패턴 및 개념을 올바르게 사용하면 다음 속성 중 하나 이상이 포함된 시스템이 생성됩니다.
최신 C++ 컴파일러를 제외하고는 없음. 모든 타사 라이브러리 종속성이 포함되어 있으며 대부분 구현 세부 사항에 사용됩니다.
이 라이브러리는 C++17 언어 및 라이브러리 기능을 활용하고 다양한 플랫폼에서 컴파일됩니다.
권장되는 절대 최소 필수 컴파일러 버전:
명시된 대로 모든 절대 최소 컴파일러 버전이 테스트되는 것은 아닙니다. 우리는 다음 컴파일러를 테스트하고 권장합니다.
권장되는 최소 필수 CMake 버전:
GitHub Actions를 통한 모든 CI 빌드의 경우, 우리가 사용하는 CMake 버전(및 기타 제공된 소프트웨어 버전)은 GitHub 호스팅 실행기에서 제공되는 소프트웨어에 따라 결정됩니다.
주자가 사용하는 특정 소프트웨어 버전에 대한 자세한 내용은 다음 리소스를 참조하세요.
다음은 테스트된 컴파일러/OS 조합 목록입니다.
C++ 마이크로 서비스 프로젝트는 처음에 독일 암 연구 센터에서 개발되었습니다. 소스 코드는 GitHub 프로젝트로 호스팅됩니다. 자세한 저작권 정보는 최상위 디렉토리에 있는 COPYRIGHT 파일을 참조하세요.
이 프로젝트는 Apache License v2.0에 따라 라이센스가 부여됩니다.
CppMicroServices.org는 다양한 배경과 광범위한 경험을 가진 개발자를 환영합니다. 다양하고 포용적인 커뮤니티는 더 훌륭한 아이디어를 창출하고, 더 독특한 관점을 제공하며, 더 뛰어난 코드를 생산할 것입니다. 우리의 목표는 모든 사람을 환영하는 CppMicroServices 커뮤니티를 만드는 것입니다.
회원에게 기대되는 사항을 명확하게 제공하기 위해 CppMicroServices는 contributor-covenant.org에서 정의한 행동 강령을 채택했습니다. 이 문서는 많은 오픈 소스 커뮤니티에서 사용되며 우리의 가치를 잘 표현하고 있다고 믿습니다.
자세한 내용은 :any:`행동강령 <행동강령>` 을 참고하세요.
프로젝트 저장소를 복제하여 시작하세요. 프로젝트가 git 하위 모듈을 활용하므로 --recursive 플래그를 사용하여 저장소를 복제해야 한다는 점에 유의하는 것이 중요합니다. 그러면 하위 모듈도 복제되어 해당 디렉토리에 배치됩니다. git 하위 모듈의 작동 방식과 이를 디스크의 기존 저장소에 복제하는 방법에 대한 자세한 내용은 Git 설명서를 참조하세요.
기본적으로 C++ Micro Services 라이브러리는 관리되는 라이프사이클 외에 강력한 동적 서비스 레지스트리를 제공합니다. 프레임워크는 무엇보다도 공유 또는 정적 라이브러리에 포함된 번들 이라는 논리적 모듈화 단위를 관리합니다. 라이브러리 내의 각 번들은 서비스 레지스트리에 액세스하는 연결된 :any:`cppmicroservices::BundleContext` 객체를 가지고 있습니다.
하나 이상의 특정 인터페이스를 구현하는 서비스 개체에 대해 레지스트리를 쿼리하려면 코드는 다음과 같습니다.
# include " cppmicroservices/BundleContext.h "
# include " SomeInterface.h "
using namespace cppmicroservices ;
void UseService (BundleContext context)
{
auto serviceRef = context. GetServiceReference <SomeInterface>();
if (serviceRef)
{
auto service = context. GetService (serviceRef);
if (service) { /* do something */ }
}
}
특정 인터페이스에 대해 서비스 개체를 등록하는 방법은 다음과 같습니다.
# include " cppmicroservices/BundleContext.h "
# include " SomeInterface.h "
using namespace cppmicroservices ;
void RegisterSomeService (BundleContext context, const std::shared_ptr<SomeInterface>& service)
{
context. RegisterService <SomeInterface>(service);
}
OSGi 서비스 모델을 사용하면 서비스에 속성을 추가로 추가하고 서비스 조회 중에 이러한 속성을 사용할 수 있습니다. 또한 서비스 개체의 수명 주기를 추적할 수도 있습니다. 더 많은 예제와 튜토리얼 및 API 참조는 설명서를 참조하세요. C++용 OSGi Lite에 대한 블로그 게시물도 있습니다.
Git 저장소에는 마스터와 개발이라는 두 개의 영구 분기가 포함되어 있습니다. 마스터 브랜치에는 프로덕션 품질 코드가 포함되어 있으며 해당 HEAD는 최신 릴리스 버전을 가리킵니다. 개발 브랜치는 기본 브랜치이며 현재 개발 상태를 포함합니다. 풀 요청은 기본적으로 개발 브랜치를 대상으로 합니다. 기여 프로세스에 대한 자세한 내용은 :ref:`CONTRIBUTING <contributing>` 파일을 참조하세요.
CppMicroServices 저장소는 .githooks 디렉터리에 git 후크를 정의합니다. 이 디렉터리는 CMakeLists.txt 파일에서 git config core.hooksPath <path>를 실행하여 git 후크용 디렉터리로 설정됩니다.
clang-format이 설치되지 않아 clang-format pre-commit Hook이 실패하는 경우, clang-format을 설치하고 경로에 넣어주세요. 마찬가지로 git-clang-format이 설치되지 않은 경우에도 동일한 작업을 수행합니다. git-clang-format은 clang-format의 LLVM 배포판과 함께 제공됩니다.
이것이 가능하지 않은 경우 변경 사항을 커밋할 때 --no-verify를 지정할 수 있습니다. 이는 권장되지 않으며 커밋 형식을 지정할 수 없는 이유에 대한 정당성을 제공해야 합니다.
우리는 형식이 올바르지 않고 유효한 근거가 지정되지 않은 풀 요청을 거부할 권리가 있습니다.