2010-04-18 6 views
16

어느 것이 더 안정적인지 말해 줄 수 있습니까? 나는 각각 자신의 장단점을 알고 있습니다. 하지만 어느 것이 http 등으로 더 낫습니까? 내 이전 응용 프로그램에서인디 또는 ICS 또는?

나는 Indy9을 사용하지만 가끔 이상한 오류를 얻을 것 같은 나는 그것으로 만족하지 않았다.

누구나 추천 할 수 있습니까?

답변

16

저는 많은 프로젝트에서 인디를 사용합니다. 주로 HTTP 서버와 프록시로 9와 10을 모두 사용했습니다. 프로젝트는 매우 강력한 트래픽 (HTTP)을받습니다. 인디는 절 실망시키지 않았어. 그것은 매우 안정적으로 작동합니다.

그러나 근본적인 문제를 찾기 위해 깊이 파고 들었던 "이상한"상황도있었습니다. 나는 또한 인디가 예외를 통해 많은 것을 처리하는 경향을 좋아하지 않는다. 일반적으로 나는 ICS 코딩 스타일을 더 좋아한다. ICS에 가보겠습니다.

ICS는 비 차단 소켓을 사용하고 indy는 차단을 사용합니다. 비 블로킹은 괜찮아 보이고 첫눈에 더 좋은 것처럼 보이지만 많은 상황에서 자극적 인 것으로 나타났습니다. 문제는 콜백 함수 때문에 코드의 자연스러운 흐름이 손실된다는 것입니다. 따라서 절차 유형의 라이브러리를 작성하는 것이 더 어려워집니다. 게다가 나는 모든 것이 메시지를 통해 어떻게 다루어 지는지 싫어한다. 나를 위해 그것은 멀티 스레딩과 혼합 될 때 지저분해진다. 요즘에는 멀티 스레딩이 주류입니다. 내가 코딩 스타일과 ICS의 코드의 품질을 좋아하면서

그래서, 내가 사용의 단순함과 인디의 차단 모드를 선호합니다. 당신이 더 좋아하는 것은 당신에게 달려 있지만, 두 도서관 모두 성숙하고 안정적입니다.

이들은 두 개의 센트입니다.

+0

나는 또한 인디를 선호하지만, ICS의 우수성이 우수하다고 생각한다. 특히 Indy10 –

+0

모두 동의합니다. Indy10은 예제에서 매우 열악합니다. – Runner

+0

@Runner 그래서 ICS보다 Indy 문제가 더 많이 제기됩니다. 당신은 더 안정된 판사입니다. –

6

저는 Indy 9와 10을 TCP, HTTP 및 FTP에 거의 문제없이 사용했습니다. ICS도 좋은 선택입니다. 비 차단이므로 사용 방법이 바뀝니다.

나는 그것을 사용하지 않은,하지만 난 또한 차단 Synapse에 대해 좋은 것들을 들었습니다. 정말 좋은 하나

2

특정 사용 사례에 따라 달라집니다,하지만 난 HTTP 클라이언트와 같은 인디 불만이었고, ICS 내가 훨씬 덜 임의 단점과 함께 할 그것을 필요로 정확히 었죠.

차단 기능이 없으므로 교체가 간단하지 않습니다.

2

필자는 100 만 명이 넘는 사용자에게 안정적인 릴리스 코드를 제공하기 위해 Indy 9를 사용하며 이상한 오류가 발생하지 않았습니다.

7

또한 Indy와 ICS를 모두 사용합니다.

는 대부분의 시간을 나는 그것과 프로토콜의 연속적인 형태를 구현하는 것은 매우 간단 인디 때문에 선호 (당신은 단순히 읽기 때문에 요청이 자신의 스레드에서 실행/정말 쉽게 연결에 쓰기). Indy를 사용하려면 스레딩 및 동기화에 대한 확실한 지식이 필요합니다. Runner와 달리 Indy가 프로토콜의 정상적인 흐름에 집중할 수 있기 때문에 예외를 사용하여 예외를 처리하는 것을 좋아합니다. 리소스를 할당 해제하기 위해 try-finally 블록을 사용합니다.

은 또한 인디 단순히 실패한 응용 프로그램에서 ICS를 사용 : 나는 TCP/IP 프록시를 구현하는 응용 프로그램을 사용했다. ICS를 사용하는 것은 비 차단 특성으로 인해 더 간단했습니다. 나는 아무것도 알지 못하는 TCP/IP 프로토콜을 "프록시"할 수 있었기 때문에 한쪽 끝에서 다른 쪽 끝으로 바이트가 어떻게 흐를 지 알 수 없었습니다. 인디에서 당신은 에테르 독서이거나 글을 쓰고 있기 때문에 동시에 할 수는 없다.ICS를 사용하여 순차 형식 프로토콜을 구현하는 것은 약간의 고통입니다. 기본적으로 상태 - 기계 논리를 사용해야하고, 작은 비트로 프로토콜을 제동하고, 플래그를 유지하여 프로토콜에있는 위치를 알 수 있어야합니다. 큰 장점 : ICS의 저자 인 François Piette는 많은 포럼과 메일 링리스트에서 적극적으로 도움을 주며 ICS와 관련된 모든 것을 신속하게 도와줍니다.

필자에게 TCP/IP로 뭔가를해야한다면 결정 경로가 매우 간단합니다. Indy로 할 수 있습니까? 그럼 인디 야. 인디와 함께 할 수 없다면 그것은 ICS로 끝날 것입니다!

4

Indy는 항상 베타 단계에 있음을 기억하십시오. 가끔은 야간 작업을해야합니다.

2

답변은 인터넷을 통해 무엇을하고 싶은지에 달려 있습니다. 인디는 그것이 어떻게 작동하는지 이해하는 데 참여할 준비가되어 있고 매우 유능한 사람이라면 괜찮습니다. ICS는 여러 가지 일을 처리하기 위해 여러 연결 시스템에서 효과적으로 사용했습니다. 하지만 일상적으로 "파일을 가져 오거나 전자 메일 보내기"유형의 작업을 수행 할 때 기본 작업을 수행하려는 곳에서는 구성 요소를 만들 때 Clever Components Internet Suite을 사용하므로 거의 옵션을 설정하면 작동합니다. 이 제품군은 매우 포괄적이며 유용한 업데이트를 제공합니다.

4

Indy10 IdTCPClient가 원격 서버에서 비디오 스트림을 수신하는지 테스트합니다. 괜찮습니다. 그러나 스트림을 수신 할 때 같은 시간에 서버에 데이터를 보내면 몇 분 후에 수신 된 스트림 데이터가 데이터 바이트를 잃기 시작합니다. 우리는이 문제를 추적하기 위해 스니퍼 도구를 사용하여 IdTCPClient가 스트림 수신시 일부 바이트를 잃어버린 것을 확인했습니다.

그래서 우리는 Indy9.018을 테스트합니다. 동일한 문제가 발생하지만 VS에 대해서는 몇 번입니다. 인디 10.

관련 문제