슈퍼소켓 예제

케리 장: 네, HTTP가 더 인기가 있습니다. 경우에 따라 사용자가 원시 소켓 대신 HTTP를 직접 사용하도록 제안하기도 합니다. 그러나 다른 경우에는 HTTP가 작동하지 않습니다. 예를 들어 서버는 일부 메시지를 클라이언트에 적극적으로 푸시하려고 합니다. HTTP는 이중 실시간 통신을 위해 설계되지 않았지만 원시 소켓을 사용하면 실시간으로 지원할 수 있는 고유한 프로토콜을 설계할 수 있습니다. HTTP는 일부 사용 사례에 대해서도 약간 무겁습니다. 요즘, 사물의 인터넷은 매우 빠르게 발전하고 있습니다. 일부 장치는 전력 및 네트워크 사용량을 낮추기 위해 몇 바이트를 보내려고 합니다. HTTP의 헤더와 텍스트 인코딩은 더 많은 리소스를 소비하므로 이 요구 사항을 충족할 수 없습니다. 이 예제는 „Key”를 사용하지 않고 전송된 전체 메시지를 얻기 위해 „CustomStringParser” 클래스를 만들었습니다. .NET의 HTTP 프로그래밍은 해마다 점점 더 쉬워지고 있지만 Microsoft는 소켓 기반 프로그램에 많은 관심을 기울이지 않았습니다. 케리 장의 슈퍼 소켓과 같은 오픈 소스 프로젝트가 시작됩니다.

InfoQ: 요즘 가장 중요한 것은 비동기 프로그래밍입니다. SuperSocket은 비동기 / 대기를 지원합니까 그리고 그렇다면 그 모습은 무엇입니까? . 메시지가 조정을 기다리고 있습니다. 토론에 참여해 주셔서 감사합니다. InfoQ: 왜 모노와 리눅스를 지원하기로 선택했습니까? InfoQ: 모노 버전을 구현할 때 문제가 발생했습니까? 또는 모노의 구현에 의해 덮여 있었다. NET의 내장 소켓 API? 질문은 간단합니다 : 전체 SuperSocket 문서를 읽었지만 프로토콜을 구현하지 않고 사용할 수있는 방법이 있는지 이해가 되지 않습니다. 케리 장: 분명히, 리눅스 + 모노는 낮은 비용을 가지고 있으며 순수 .NET 응용 프로그램에 대한 모노 / 리눅스를 지원하는 것은 매우 쉽습니다. .NET 4.5와 같은 일부 고급 .NET 버전은 Windows Server 2008 r2가 필요하며 일반 사용자에게는 비용이 많이 듭니다. 그러나 리눅스에서, 당신은 그것을 지원하기 위해 모노의 최신 버전을 설치할 수 있습니다. 텔넷 클라이언트를 열어 위의 코드를 확인할 수 있습니다. requestInfo.Key는 요청 명령줄의 첫 번째 세그먼트 공간에 의해 구분, requestInfo.Parameters는 왼쪽으로 구분 공간에 의해 구분 그래서 먼저 아래와 같은 사용자 지정 RequestInfo 클래스를 만들: 당신의 최종 사용자 경험을 최적화 하 여 향상 응용 프로그램 성능에 대한 이의를 다할 수 Site24x7을 통해 응용 프로그램 동작을 전체적으로 볼 수 있습니다. ***MQ를 사용하면 동일한 레이어에서 작동하지 않습니다.

SuperSocket은 네트워크 프로토콜에 대해 열려 있습니다. 아마 자바 세계에서 미나와 네티와 비슷합니다. 그리고 마지막 단계는 사용자 정의 AppServer 케리 장 만드는 것입니다: 예, SuperSocket의 소켓 송신 및 수신 항상 비동기. 그러나 지금은 비동기 / 대기 키워드를 지원하지 않습니다. 이후 버전에서는 추가하겠습니다. 지금은 .NET 4.0 지원이 필요하며 프로젝트를 복잡하게 만들기 위해 너무 많은 분기를 만들고 싶지 않습니다. 물론 런타임 검색을 사용하는 경우 서로 다른 플랫폼에 대해 두 개의 서로 다른 어셈블리를 제공하는 대신 이진 수준 호환성을 보장할 수 있습니다.

슈퍼소켓 예제