문제

배경

비즈니스 아이디어가 있는데, 그 구성 요소는 웹 페이지를 통해 수천 명의 사용자가 다운로드하고 설치하는 클라이언트와 관련이 있습니다.

응용 프로그램 요구 사항

Version 1:

응용 프로그램은 다음과 같아야합니다.

  • 다음 영역을 모니터링하여 사용자의 데스크탑에서 인터넷 사용을 모니터링하십시오.

    • 사용 된 브라우저,
    • 사용 시간
    • 사이트가 액세스되었습니다
    • 어떤 브라우저 탭이 'Active'인지 고려합니다.
  • 이 사용에 대한 보고서를 작성하십시오 (in CSV 또는 다른 쉽게 수출 가능한 형식)

  • 사용자가 쉽게 모니터링해야합니다 (예 : 시스템 트레이의 아이콘을 통해 Windows에서 사용자가 프로그램을 일시 중지하거나 중지 할 수 있음).
  • 자동 업데이트를 통해 쉽게 업그레이드 할 수 있습니다.
  • 메모리 사용과 관련하여 가벼워 야합니다.
  • 쉽고 신속하게 설치해야합니다.
    • 완전히 제거 할 수 있어야합니다.
  • 브라우저 또는 사용자의 시스템 성능 경험에 부정적인 영향을 줄 수 없습니다.
버전 2 :
  • 그래픽 출력 (Pie & Bar 차트)을 제시 할 수 있습니다.
  • Multi-Platform (버전 1은 Windows 만 대상으로합니다)
  • 온라인 구성 요소를 통합합니다

의문

이러한 요구 사항이 주어지면 어떤 기술 구현을 권장 하시겠습니까? 및 어떤 플랫폼/언어 아키텍처를 추천 하시겠습니까? 주요 측면은 기능이며 사용자에게 큰 영향을 미치는 영향입니다. ETA 또는 비용은 덜 중요합니다.

도움이 되었습니까?

해결책

나는 작년과 매우 유사한 것을 만들었습니다. 나는 c#을 사용했다. 처음에는 3.5 프레임 워크 중 일부를 활용했지만 설치 크기 제한으로 인해 2.0 프레임 워크로 다시 확장해야했습니다. 현재 약 13,000 대의 기계를 모니터링하고 있습니다. 분당 3MB의 데이터 약 3MB의 보고서 서버를 수집하고 다시 보냅니다.

클라이언트 머신은 256MB의 RAM이 XP를 실행하는 256MB의 RAM이있는 Pentium 4 박스에서 듀얼 코어 2GB 머신까지 다양합니다.

내가 구축 한 앱은 최종 사용자가 건드리지 않아야했기 때문에 Windows 서비스와 브라우저 헬퍼 객체 플러그인의 조합으로 실행됩니다. BHO는 브라우저에서 무슨 일이 있었는지 정확히 캡처해야했습니다.

XP와 Vista (모든 서비스 팩 레벨)와 IE 6 및 7에서 작동하는 유일한 과제는 유일한 문제는 IE 6 및 7에서 작동하는 것이 었습니다. XP와 Vista는 고려해야 할 보안 영향이 다릅니다. IE 6과 7에는 다른 액세스 모델도 있습니다.

마지막으로, 우리는 고객이 신경 쓰지 않았기 때문에 Firefox 또는 기타 브라우저를 다루는 데 펀칭했습니다.

업데이트

Firefox는 JavaScript, C ++ 및 XUL 만 지원하여 코드 확장을 지원합니다. C#을 사용하는 것은 완전한 피타입니다. 더 쉽기 때문에 필요한 일을 할 경우 JavaScript를 시도해 볼 것입니다.

Chrome까지, 그들은 최근에만 확장을 지원하기 시작했습니다 (2009 년 3 월 19 일). 바로 가기 시작 속성을 변경하여 실행할 수 있습니다. 그래서 나는 아마도 그 브라우저가 조금 성숙 할 때까지 건너 뛸 것입니다. 내년에 플러그인이 어떻게 만들어 졌는지에 대한 많은 변화가있을 것이라고 생각합니다.

분당 데이터의 양과 관련하여 총 값입니다. 각 개별 클라이언트는 15 분 정도마다 한 번만 체크인합니다. 또는 연결이 끊어 졌을 때 네트워크에 다시 연결하면. 따라서 개별 트래픽은 상당히 낮으며 사용자 경험에 영향을 미치지 않습니다.

방화벽

방화벽이 실제로 우리에게 중요하지 않은 이유는 데이터가 웹 서비스를 사용하여 포트 80을 통해보고 서버로 다시 전송되기 때문입니다. 80이 차단되면 어쨌든 찾아 볼 수 없으므로 수집 할 것이 없습니다. 대역폭까지는 수집 한 내용을 제한하고 다시 방송합니다. 설명 속성이 길고 값 이름이 긴 XML은 친구가 아닙니다.

다른 팁

C#과 같은 소리는 Windows 클라이언트로 제한되는 한 귀하의 요구에 적합합니다.

QT 및 C ++는 크로스 플랫폼 클라이언트에 적합합니다. 그들이 쓰레기 수집 된 언어로 된 해결책이없는 방식으로 "메모리 검소한"이어야한다면 (즉, 기본적으로 다른 모든 것 ;-).

더 많은 정보가 필요합니다.

문제를 개발할 시간입니까? C#을 사용하면 이러한 응용 프로그램을 신속하게 개발할 수 있습니다. 그러나 반드시 C ++와 동일한 수준의 성능을 갖는 것은 아닙니다. C ++ (메모리 집중 비트)와 C#의 특정 부품을 개발할 수 있지만 클라이언트는 .NET 프레임 워크를 설치해야합니다. C# 부품을 쉽게 리버스 엔지니어링 할 수 있습니다.

프로젝트 삼각형이 있으며, 우리는 어느 쪽이 가장 중요한지 알아야합니다.

alt text

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top