Restbed는 모바일, 태블릿, 데스크탑 및 임베디드 생산 환경을 대상으로 설계된 다양한 비즈니스 프로세스를 모델링 할 수있는 HTTP를 통해 완벽하고 안전한 통신이 필요한 응용 프로그램을 구축하기위한 포괄적이고 일관된 프로그래밍 모델입니다.
Nginx를 회사 소유 제품 라인에 포함시키는 것과 유사합니다. - 솔루션 아키텍트, Bellrock Technology
| 특징 | 설명 |
|---|---|
| websockets | 단일 TCP 연결을 통한 전이중 통신 채널. |
| 서버에 대한 이벤트 | Server-Sent 이벤트를 사용하면 텍스트 기반 이벤트 데이터의 효율적인 서버 간 스트리밍 (EG, 실시간 알림 또는 서버에서 생성 된 업데이트가 가능합니다. |
| 혜성 | 긴 폴링 모델은 서버에서 클라이언트로 데이터를 푸시하도록 장기 HTTP 요청을 허용합니다. |
| SSL/TLS | 전선 통신을 보장하여 온라인으로 개인 데이터를 전송할 수 있습니다. |
| 세션 관리 | 맞춤형 HTTP 세션 지속성 및 관리 로직을 만듭니다. |
| HTTP 파이프 라인 | 해당 응답을 기다리지 않고 여러 HTTP 요청을 단일 TCP 연결로 전송할 수있는 기술. |
| 경로 매개 변수 | 리소스 키, 개정 등과 같은 사용자 정의 경로 매개 변수로 URI를 주석을 달았습니다. |
| 쿼리 매개 변수 | 자동화 된 쿼리 매개 변수 구문 분석. |
| 헤더 필터 | 헤더로 들어오는 HTTP 요청을 필터링합니다. |
| 벌채 반출 | 로그 항목이 생성되는 방법 및 위치를 사용자 정의하십시오. |
| 다중 경로 자원 | 가독성 향상을 위해 자원의 여러 경로를 제공하십시오. |
| 사용자 정의 가능한 방법 | 자신의 사용자 정의 HTTP 방법을 추가하십시오. |
| 압축 | 모든 형태의 압축 gzip, deflate 등을 해결하기위한 적응성 ... |
| 부호화 | UTF-32, ASCII 등을 인코딩하는 모든 형태를 해결하기위한 적응성 ... |
| 규칙 엔진 | 읽기 가능한 코드 단위로 들어오는 요청을 처리하여 복잡성을 줄입니다. |
| HTTP/HTTPS | 옵션 SSL 피어 인증서 확인을 통해 클라이언트 기능을 구축했습니다. 더 이상 사용되지 않았습니다 |
| IPv4/IPv6 | 인터넷 프로토콜 버전 4/6 네트워크 지원. |
| 건축학 | C10K 문제를 해결할 수있는 비동기 단일 또는 다중 스레드 아키텍처. |
| 변환기 | 기본 데이터 유형에 대한 내장 경로, 쿼리 및 헤더 변환. |
| 입증 | 별도의 서비스 및/또는 자원 수준 인증. |
| 오류 처리 | 별도의 서비스 및/또는 자원 수준 오류 처리. |
| 주소 바인딩 | HTTP 및/또는 HTTPS 서비스를 분리 된 IP 주소에 바인딩하십시오. |
| 신호 처리 | 캡처 OS 생성 프로세스 신호. |
| 선적 서류 비치 | 아키텍처 및 API를 다루는 고품질 문서. |
| 규정 준수 | HTTP 1.0/1.1+ 준수를 해결하는 유연성. |
| 성숙한 | 2013 년 이후 안전하고 안정적이며 광범위하게 테스트되었습니다. |
| 지역 사회 | 활동적이고 활기차고 활기찬 오픈 소스 커뮤니티. |
| 지원하다 | Corvusoft에서 상업적 지원을 제공합니다. |
# include < memory >
# include < cstdlib >
# include < restbed >
using namespace std ;
using namespace restbed ;
void post_method_handler ( const shared_ptr< Session > session )
{
const auto request = session-> get_request ( );
int content_length = request-> get_header ( " Content-Length " , 0 );
session-> fetch ( content_length, [ ]( const shared_ptr< Session > session, const Bytes & body )
{
fprintf ( stdout, " %.*s n " , ( int ) body. size ( ), body. data ( ) );
session-> close ( OK, " Hello, World! " , { { " Content-Length " , " 13 " } } );
} );
}
int main ( const int , const char ** )
{
auto resource = make_shared< Resource >( );
resource-> set_path ( " /resource " );
resource-> set_method_handler ( " POST " , post_method_handler );
auto settings = make_shared< Settings >( );
settings-> set_port ( 1984 );
settings-> set_default_header ( " Connection " , " close " );
Service service;
service. publish ( resource );
service. start ( settings );
return EXIT_SUCCESS;
}더 심층적 인 예는 여기에서 찾을 수 있습니다. 분노에 사용 된 Restbed를 보려면 Corvusoft 's RestQ 프로젝트를 방문하십시오.
© 2013-2020 Corvusoft Limited, 영국. 모든 권리 보유.
Restbed 프레임 워크는 이중 라이센스가 있습니다. 자세한 내용은 라이센스를 참조하십시오.
맞춤형 소프트웨어 개발, 테스트, 설계 상담, 교육, 멘토링 및 코드 검토를 포함한 지원 및 라이센스 옵션은 [email protected]에 문의하십시오.
문제 추적기를 통해 모든 개선 사항, 제안 및 결함을 제출하십시오. 또는 StackoverFlow 태그 #RestBed에 대한 질문을하십시오.
git clone --recursive https://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake [-DBUILD_SSL = NO] [-DBUILD_TESTS = NO] ..
make install
make test이제 배포 서브 폴더에 설치된 모든 필요한 구성 요소가 있습니다.
| 옵션 | 설명 | 기본 |
|---|---|---|
| build_ssl | SSL/TLS 지원을 활성화합니다. | 활성화 |
| build_ipc | UNIX 도메인 소켓을 활성화하십시오. | 장애가 있는 |
| build_tests | 프로젝트 테스트 스위트를 구축하십시오. | 활성화 |
| build_devel_package | 헤더를 cmake_install_prefix에 설치하십시오. | 활성화 |
| build_shared_library | 공유 된 Restbed 빌드를 생성합니다. | 활성화 |
| build_static_library | 정적 인 RESTBED 빌드를 생성합니다. | 활성화 |
전제 조건 : Visual Studio 2022, Cmake, Git, Perl.
X64 Native Tools 명령 프롬프트를 사용하면 필요한 경우 Building OpenSSL에서 시작합니다.
git clone --recursive https://github.com/corvusoft/restbed.git
cd restbeddependencyopenssl
perl Configure [no-]shared
nmake
nmake test기본 OpenSSL 빌드 (공유)를 사용하도록 선택한 경우 환경에 설치 경로를 포함해야합니다.
set PATH = restbeddependencyopenssl; %PATH%정적 OpenSSL 빌드 (공유 없음)를 사용하도록 선택한 경우 애플리케이션 코드를 연결할 때 추가 종속성을 포함해야합니다. Firther 세부 사항은 OpenSSL 프로젝트를 참조하십시오.
target_link_libraries( my_microservice restbed-static.lib ws2_32.lib advapi32.lib crypt32.lib gdi32.lib user32.lib )이제 다음 RESTBED 빌드 지침을 진행하십시오.
mkdir restbedbuild
cd restbedbuild
cmake -G " Visual Studio 17 2022 " [-DBUILD_SSL=NO] [-DBUILD_TESTS=NO] ..
cmake --build . --target ALL_BUILD --config Release
ctestMicrosoft Visual Studio 14 2015 지침 및 자세한 내용은 기능 #17을 참조하십시오.
VCPKG 종속성 관리자를 사용하여 Restbed를 다운로드하여 설치할 수 있습니다.
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install restbedVCPKG의 Restbed Port는 Microsoft 팀원 및 커뮤니티 기고자가 최신 상태로 유지됩니다. 버전이 오래된 경우 VCPKG 저장소에서 문제를 만들거나 요청을 가져 오십시오.
이 코드베이스는 가능한 한 자체 문서화해야합니다. 우리는 개발자를 돕기 위해 많은 사례와 테스트 스위트를 제공했습니다.
최신 디자인 및 API 문서를 여기에서 찾을 수 있습니다.
| 의지 | 요구 사항 |
|---|---|
| 컴파일러 | C ++ 14 준수 이상 |
| OS | BSD, Linux, Mac OSX, Windows, Raspbian |
| 중요한 단계 | 특징 | 상태 |
|---|---|---|
| 0.0 | 비동기 HTTP 서비스 | 완벽한 |
| 1.0 | HTTP 1.0 준수 | 완벽한 |
| 2.0 | HTTP 1.1 준수 | 완벽한 |
| 2.5 | 보안 소켓 레이어 | 완벽한 |
| 2.5 | 동시 네트워크 포트 (HTTP/HTTPS) | 완벽한 |
| 3.0 | 규칙 엔진 | 완벽한 |
| 3.5 | 서비스 런 루프에서 작업을 예약하십시오 | 완벽한 |
| 3.5 | 다중 스레드 서비스 기능 | 완벽한 |
| 3.5 | 특정 주소에 서비스를 바인딩합니다 | 완벽한 |
| 3.5 | 세션 관리 | 완벽한 |
| 4.0 | HTTP 클라이언트 | 완벽한 |
| 4.0 | 신호 처리 | 완벽한 |
| 4.5 | API 문서 | 완벽한 |
| 4.5 | 웹 소켓 | 완벽한 |
| 5.0 | 클라이언트 측 SSL 인증서 | 개발 |
| 5.0 | 자원 캐싱 | 개발 |
| 5.0 | 런타임 수정 | 개발 |
| 5.0 | HTTP 2 준수 | 개발 |
| 5.0 | Refactor, Retening, Reuse | 활동적인 |
| 방법 | 설명 |
|---|---|
| 지저귀다 | 질문 및 기능 요청을 트윗하십시오. |
| [email protected] | 관련 쿼리 지원. |
| [email protected] | 판매 관련 쿼리. |