C# (.NET 기반)이 확실히 레지쓰레기를 덜쓰네요.
2012.11.08 11:55
C# 즉 .Net 기반으로 작성된 App는 이전 Api 기반과 달리 레지스트리가 적게 쓰이는게 맞네요.
전에는 api 프로그램을 설치하면 그안의 모든 클래스는 빠짐없이 레지스트리에 Guid를 생성하며 들어갔고 이는 프로그램 삭제를 해도 그대로 남아있게 됩니다.
문제는 이것이 커질수록 윈도우가 굼뜨게되는 악명높은 현상이 발생하는데요.
때문에 예전에는 웬만한 프로그램은 설치시 엄청난 레지쓰레기 폭탄을 맞게되어 주로 포터블을 찾게 되지만
이제 .Net으로 작성된 코드라면 그럴 필요가 없습니다.
모든 클래스를 레지스트리에 등록하던것을 이제는 .Net CLR이 대신하기 때문 입니다.
꽤 악명 높았던게 대표적으로 Vmware가 있었으나 .Net으로 재코딩 되면서 레지스트리가 현저히 줄었습니다.
이는 리소스가 적은 모바일에서 더욱 치명적인데 이것이 윈모가 실패한 요인이 되기도 했습니다.
결국 WP도 안드로이드의 달빅과 유사한 CLR 도입으로 설치수가 많아지면 느려지는 현상을 해결한것 입니다.
그러나 현재 .NET은 MS플랫폼 상에서만 작동되는게 단점인데 MS가 개방만하면 리눅스와 안드로이드에도 쓸수가 있습니다.
그렇게되면 .net이 자바를 대신하고 윈도우에 이어 개발환경의 천하통일이 가능해지는데 과연 MS의 정책은?
댓글 [5]
-
초월신 2012.11.08 13:21 -
wopd 2012.11.08 13:42
그렇군요, 두분 좋은 글 고맙습니다.
-
오펜하이머 2012.11.08 14:40
예 .net framework의 장점을 말하다려다 마치 C++가 나쁜 코드를 만드는듯한 오해소지가 있었습니다.
실은 C++가 보다 효율적인 코드를 만들어내지만 CLR의 장점에 비하면 사소하고,
문제의 주범은 애초에 잘못 설계된 COM(Component Object Model)에 있었습니다.
-
logo.gif 2012.11.08 15:14
리눅스에서 닷넷 코드를 돌릴 수 있는 mono가 있습니다.
이번에 나온 최신 버전은 아예 마소가 도와준 덕분에 .NET 4.5의 새로운 기능을 이제 그 어떤 브라우저에서도 마음껏 쓸 수 있습니다.
그렇다고 해서 윈도우에 특화된 기능은 말고요.
-
오펜하이머 2012.11.08 15:33
.Net과 C#이 미래에는 태생적 한계를 극복할수 없는 자바를 대신할 강력한 후보지만.
문제는 아직 비 상업적 용도에만 허용돼 있다는게 걸림돌이죠.
현재 그놈이 포팅되고 있다고 하는데 ...
오해하실 분들을 위해 첨언 하자면,
다른 언어나 API로 작성된 프로그램이라고 해도 레지스트리를 무조건 많이 쓰는 건 아닙니다.
레지스트리를 많이 쓰는 것은 COM 기반이죠.
윈도우의 거의 모든 객체는 COM 기반이라고 봐도 됩니다.
COM계열의 가장 악명높은 예가 바로 AcitveX 입니다.
하지만 COM이라는 건 프로그래밍 언어도 아니고, API상의 문제도 아니고,
이미 작성되어 있는 코드를 어떻게 불러다쓰느냐 하는 방식상의 문제일 뿐이죠.
C++/JAVA등의 프로그래밍 언어에서 객채의 개념을 구현하는 '클래스'와
'COM 객체'는 같은 개념이 아닙니다. 이 부분도 오해가 없었으면 하네요.
C++/C/Delphi/Java....같은 프로그램 언어와 COM이라는 플랫폼도
서로 대비되는 개념이 아니라, 각자 개발 방법에서의 한 요소일 뿐입니다.
C로 만들었느냐, C#으로 만들었냐,
혹은 CLR기반의 매니지드 코드이냐 Win32 기반의 네이티브 코드이냐 여부는
레지스트리를 많이 쓰느냐의 문제와는 아무 관련이 없습니다.
네이티브 코드로도 레지스트리 하나도 안 건드리는 프로그램 만드는 거 어렵지 않습니다.