나는 SQL Server
과 대화하는 프로젝트를 진행하고 있으며 대부분의 백엔드 코드는 C++
입니다.C#/.Net 또는 C++과 함께 사용해야합니까?
소수의 유체가 캐리어로 적재되는 동안 유체의 흐름을 제어하는 어플리케이션입니다. 유체 흐름을 제어하는 제어기와 통신하는 백엔드 모듈 중 일부는 C++
입니다. 메모리 누수 및 기타 버그가 있으므로 .Net
으로 마이그레이션하려고했습니다.
내가 이해하는 바에는 .Net
을 백엔드 모듈에 사용하면 성능이 떨어집니다. 그래서 내 의견은 이러한 백 엔드 모듈을 .NET으로 변환하지 않고 C++ 자체의 문제를 해결하는 것이 었습니다.
토론중인 코드는 컨트롤러의 펌웨어와 상호 작용하는 응용 프로그램입니다. 기본적으로 몇 가지 명령이 필요하며 컨트롤러에서 응답을받습니다. 이 코드에는 UI가없고 동일한 코드가 SQL
과 상호 작용하여 데이터를 업데이트합니다. 둘 다 하나의 부분입니다 exe .
.Net
은 성능이 엄격하지 않을 것으로 예상되는 경우 양호한 것으로 여겨집니다. 새로운 코드가 작성되어야하고 특히 UI의 디자인과 관련된 경우에 적합했을 것입니다. 또 다른 생각은 .Net은 상위 계층에는 적합하지만 다중 계층 아키텍처에서는 하위 계층에는 적합하지 않습니다.
다른 관점에서 다른 사람들의 의견을 알고 싶습니다. 고려해야 할 측면 중 일부는 다음과 같습니다
미래
- 속도를 기존 코드를 재 작성의 각도에서 의견을주십시오. 우리가 그것을 결정한다면, C++ 라인 변환을 일대일 C#으로 할 것입니다.
O.K. 그러나 질문은 무엇인가? 귀하의 경우에는 C++이 갈 길이라고 생각합니다. 메모리 누수 나 버그가 있기 때문에 C#을 사용하지 않고 생각할 수 없습니다. 제대로 테스트하지 않으면 동일한 버그 (또는 더 나쁜)가 발생할 수 있습니다. C++ 또는 C#은 중요하지 않습니다. 메모리 문제의 경우 'valgrind'(google for more)와 같은 도구를 사용하여 코드를 프로파일하십시오. – Abhay
.NET 응용 프로그램이 잘못 작성된 C++ 응용 프로그램보다 더 잘 실행될 수 있다는 것은 사실입니다. 그러나 여기서는 C++과 같은 방법이 사용됩니다. 특히 직접적인 하드웨어 상호 작용을 참조하는 것이 좋습니다. .NET은 메모리 누수가있을 수 있음을 기억하십시오 (예 : 콜렉션에 무언가를 추가하고 잊어 버림). 그리고 Abhay와 확실히 동의합니다. 왜냐하면/당신 회사의/C++이 지금까지 가난했기 때문에 C++에 보석을해서는 안됩니다. –
나는 "드라이버"가 무슨 뜻인지 몰라 : 보통 "드라이버"와 "펌웨어와의 상호 작용"은 '커널 모드'소프트웨어를 의미하지만, SQL과 상호 작용하는 커널 모드 드라이버에 대해서도 들어 보지 못했습니다. – ChrisW