2013-08-24 4 views
12

.NET 팀은 Windows 8/Server 2012에 도입 된 RIO 소켓을 .NET에서 사용할 계획을 세우고 있습니까?.NET의 RIO (Registered I/O) 소켓

중간에서 .NET에서 활용할 수있는 옵션은 무엇입니까? 소켓 클래스를 확장 하시겠습니까?

Windows API 설명서, What's New for Windows Sockets 및 Channel9 비디오 외에도 New Techniques to Develop Low-Latency Network Apps을 제외하고 나는 그에 관한 추가 문서를 거의 찾을 수 없습니다.

+1

아마도 [RIO에서이 시리즈를 확인하고 P/Invoke로 시작해보십시오] (http://www.serverframework.com/asynchronousevents/2012/03/windows-8-registered-io-example- udp-servers.html). – user7116

답변

5

원래 코드 here에서 RIO에 대한 초기 조사에 대해 많은 글을 작성했습니다. 원래 질문에 대한 의견 작성자가 지적했듯이.

관리 코드에서 RIO를 사용하여 달성하고자하는 것이 무엇인지 알고 싶습니다. RIO의 잠재 고객은 네트워킹 코드에서 대기 시간을 줄여야하는 개발자입니다. 개인적으로 RIO가 목표로 한 종류의 애플리케이션에 관리 코드가 반드시 이상적이라고 확신하지는 않습니다. 나는 틀릴 수도 있지만, CLR이 가비지 콜렉션을 트리거 할 수있는 기회를 가지면 RIO를 사용하는 누군가가 원하는 종류의 것이 아닐 것이라고 기대합니다.

어쨌든. 만약 당신이 관리 코드에서 RIO를 사용하고 싶다면 단순히 P/Invoke를 사용하지 말고 네이티브 코드에서 RIO 작업을 모두 관리하는 구성 요소를 쓰는 것이 좋습니다. 아마도 다양한 네트워크에서 다시 호출 할 수 있습니다. 이벤트. 그러나 다시, 그게 내가 어떻게 할 것인가 ...

+8

저는 금융 업계에서 일하고 있으며, 네이티브 코드 작성 성능을 조금 더 늘릴 수 있다는 것에 동의하지만, 낮은 지터와 낮은 대기 시간으로 대부분 GC가없는 관리 애플리케이션 스택을 개발할 수있었습니다. RIO를 사용하는 특정 구성 요소는 처리 된 패킷 당 평균 5 분의 대기 시간을 갖지만 커널 모드에서 winsock으로 전환 할 때마다 사용자 당 20 초의 히트가 발생합니다. RIO를 통해 커널 바이 패스 경로를 거치지 않고도 즉각적인 승리를 거둘 수 있다면 그렇게 할 수 있습니다. - 기사에 대한 링크를 가져 주셔서 감사합니다! – TJF

+0

그럴 가치가있는 것 같습니다. –

+1

@TJF 어떻게 서버 GC를 무료로 만들었으며 대기 시간도 줄일 수 있었습니까? – tunafish24

3

RIO는 현재 "채널"API에 대해 실험적으로 조사 중이지만 현재는 시작/탐색 단계에 있지만 여기에서 사용할 수 있습니다 : https://github.com/davidfowl/Channels. 이것은 libuv API와 "채널"기반의 winsock API와 함께 사용됩니다. 소켓 클래스를 확장하는 것에 대한 귀하의 질문과 관련하여, 이러한 API의 본질은 바람직한 접근 방식, 즉 "채널"을 만드는 것처럼 보입니다.

+0

GitHub에는 "RioSharp"프로젝트가 있습니다. https://github.com/aL3891/RioSharp – TJF