IT

.NET (야수)에 대한 또는 반대 사례 [종료 됨]

lottoking 2020. 9. 1. 07:41
반응형

.NET (야수)에 대한 또는 반대 사례 [종료 됨]


제가 일하는 회사는 C ++ Builder 6을 사용하고 있습니다. 우리는 개념부터 코드를 개발해 왔습니다. 우리의 주력 제품은 코드로 작성되었습니다.

종소리와 휘파람으로 .NET Framework에 들어갑니다. 나는 넘어지고, 훅, 라인과 싱커. 저는 .NET이 모든 새로운 소프트웨어 개발을위한 새로운 프레임 워크가되어야하며 기존 코드 라인을 최대한 빨리 출시해야 할 계획을 설득합니다. 모든 이점으로 인해 많은 설득력이 필요하지 않습니다. 그들이 제안처럼 내 제안을입니다.

이 시점에서 저는 첫 번째 .NET 애플리케이션 개발을 시작합니다. 모든 것이 계획대로 진행되고 있습니다. 이 프로젝트는 우리 제품의 한 구성 요소 일뿐입니다. 그래서 저는이 새로운 구성 요소에 대한 설치 프로그램을 만드는 시점에 도달했습니다. 회사로서 우리는 사용자를 위해 가능한 한 쉽게 일을 만드는 자부심을 가지고 있습니다. 수천 명의 명의 개발자가있는 Microsoft조차도 우리처럼 설치 프로그램을 만들지 만들었습니다. 예를 들어 Microsoft CRM을 설치하기 전에 설치해야하는 오류 및 필수 구성 요소 목록을 작성해야합니다. 우리가 아닙니다. 못. 필요한 것이 설치되어 있습니다.

이것은 우리의 설치를 매우 쉽게 만듭니다. .NET Framework가 설치되어 있지 않습니까? 문제 없어요! 우리는 당신을 위해 그것을 할 것입니다. SQL 외장 클라이언트가 필요하십니까? 좋아!

문제는 솔루션의 단일 구성 요소가 .NET으로 구축되어 설치되고 프로세스를 엄청나게 복잡하게됩니다. 제품을 설치하기 전에 다음을 수행해야합니다.

  • 설치 필수 구성 요소가 설치 감지

  • 설치되지 않은 경우

  • 설치로 설치 확인

  • 다음 전제 조건

.NET Framework를 설치하려면 먼저 Windows Installer 4.5가 필요합니다. 그러나 OS마다 다른 버전이 있으므로 OS 감지를 추가하고 올바른 EXE가 시작됩니다. 오, .NET 프레임 워크는 이미 2k8로 패키지되어 있고 설치 프로그램 exe를 사용할 수 없습니다. 설치되어야하는 변수와 함께 OCSetup.exe를 실행해야합니다.

그리고 그것은 계속됩니다. 그런 다음 SQL Express 2005를 설치해야합니다. 더이 다시 한 번 증가합니다.

나는 마이크로 소프트조차도 사용자를 위해 이렇게 쉽게 만들지 않는다고 주장한다. 이런 식으로 그들보다 나아지지 않을 것입니다. 나는 그들이 존재하는 접근 방식을 따라 간 아주 좋은 이유가 존재한다고 생각할 수 있다는 것이 없습니다.

갑자기 설치 프로그램이 엄청납니다. .NET의 모든 전제 조건은 물론이고, EXE의 전체 범위를 포함하는 64 비트 지원에 대한 이야기하지 않습니다. 이제 사용자가 "빠른"평가판을 다운로드 할 수있는 지점에 도달했습니다. 좋은 농담 이었어. 30MB 애플리케이션을 선택해야합니다. 500MB를 설치해야합니다. 대부분의 설치 패키지는 전제 조건입니다.

의존은 의존성 / 전제 조건이 너무 많다고 느낍니다. 나는 완전히 이해합니다. 그들은 여전히 ​​우리가 .NET 프레임 워크에서 벗어나 설치 땅에서 "쉬운 우리가 돌아갈 것을 제안합니다. 여기에서 저의 한 부분은 큰 그림의 이점, 개발 경험, 더 쉬운 유지 관리 및 전반적인 코드 품질을 설명하면서 .NET을지 지하고 싶어합니다. 나의 다른 부분은 진심으로 동의합니다! .NET에서 개발 계획 설치를 복잡하게 만드는 다른 필수 구성 요소를 너무 많이 설치해야합니다.

예, 일부 .NET 지지자들은 모든 것이 패치되고 업데이트 된 운영 체계에 설치되어야한다고 주장 할 것입니다. 이것이 사실이지만 모든 고객이 "미안합니다."라고 말하지 않습니다. 우리는 전반적인 사용자 경험에 자부심을 느낍니다.

우리는 이제 코드 작성을 다시 고려하고 있고 개발 속도와 .NET의 모든 장점에서 잃고 모든 것을 알고 있습니다. 그러나 우리는이 영역에서 이득을 많이 가지고 있습니다. 큰 그림을 보든 안 보든 작든간에 요. NET이 실제로 우리에게 새로운 기반이 있기 때문에 코드 개발 기술이 있고 의미가 있습니다.

내 질문은 이것이 다 : 어떤 것이 어떤 문제가 있는지가 문제에 대한 가정의 견해는 무엇이며, 모든 제품을 .NET으로 계속 진행하고 싶다고하고 싶다고하는 비즈니스 사례는 어떤 것입니까?


이것은 많은 회사가 홈페이지에서 모든 필수 구성 요소를 즉시 다운로드하는 웹 설치 프로그램으로 전환 한 이유입니다. 대부분의 경우 OS에는 필요한 것의 99 %가 있습니다 (Windows 업데이트를 사용하여 업데이트 된 경우).

x64 및 x32에 대한 모든 것을 설치 프로그램에 넣지는 않을 것입니다. 각 아키텍처에 대해 하나씩 두 개의 설치 프로그램을 만듭니다.


Paint.NET은 기본적으로 .NET 프레임 워크를 많이로 제공하지 않고 필수 구성 요소 설치를 멋지게 래핑합니다. 최종 결과는 관리되지 않는 shim 실행 파일로 .NET 프레임 워크 및 기타 항목을 확인하고 설치 될 때 손을 잡습니다. 모두 필요에 따라 즉시 다운로드됩니다. 그런 다음 MSI로 pInvokes하는 WinForms 응용 프로그램을 실행하여 설치를 면직물로 마무리합니다.

Google 가치가 있습니다.

또한 많은 클라이언트 컴퓨터에 Microsoft Update의 일부인 .NET Framework 버전이 이미 설치되어있어 비즈니스에서 더 쉽게 사용할 수 있습니다.

설치에 대한 Paint.NET 블로그 게시물 :

http://blog.getpaint.net/2008/08/24/the-paintnet-install-experience-part-1-version-3xx/

http://blog.getpaint.net/2008/08/25/the-paintnet-install-experience-part-2-version-40/ (Rup에게 감사드립니다!)

하지만 이제는 "쉬운"것으로 분류되며 이제는 "쉬운"것으로 분류됩니다. 배포에 대해 시간을 할애하고 숨기고 설치가 얼마나 쉬운 지 보여줍니다. :)


처음에 코드로 전환하고 싶었던 이유를 다시 보겠습니다. 프로그래머로서 더 많이입니다. .NET에서는 C ++ (또는 사용중인 모국어)보다 많은 것이 더 쉬우 애플리케이션을 훨씬 빠르게 개발할 수 있습니다.

설치 프로그램을 개발하는 데 소요되는 시간과 비교하여 애플리케이션 개발에 소요되는 시간은 어떻습니까? 설치 프로그램 (체계 프레임 워크 설정 부분)을 결정하는 데 몇 주를 소비해야 그 과정 을 야 하는 유일한 시간 은 그 정도 합니다.

모든 응용 프로그램의 경우 거의 동일한 설치 프로그램을 사용하게됩니다. 모든 필수 구성 요소 검사를 계속 수행하지만 파일을 C : \ Foo에 복사하는 대신 일부 다른 파일을 C : \ bar에 복사합니다.

제 생각에는 경제학에 대한 간단한 질문입니다. 예, .NET 응용 프로그램을위한 (좋은 / 완전한) 설치 프로그램을 개발하는 것은 더 비싸지 만 , 개발 시간을 대폭 개선 하기 위해 한 번만 수행해야하는 단계라면 당연한 일입니다. 투자 수익은 아마도 몇 주 정도일 것입니다.


이 의견에 응답해야 생각합니다.

예, 일부 .NET 지지자들은 모든 것이 패치되고 업데이트 된 운영 체계에 설치되어야한다고 주장 할 것입니다. 이것이 사실이지만 모든 고객이 "미안합니다."라고 말하지 않습니다. 우리는 전반적인 사용자 경험에 자부심을 느낍니다.

사용자가 공급 업체가 더 이상 목적에 적합하지 않다고 알리는 시스템 운영하여 자신의 발을 내딛는 데 집착 한다면, 그들을 '도움'하기 위해 할 수있는 일이별로 없습니다. 나는 이것이 나를 불쾌한 활동가처럼 보이게한다는 것을 알고 있지만, 수동 상인이 할 수있는 것과 같은 방식으로 그것을 봅니다. 그들이 내가 일하기를 원하는 환경이 다음과 같은지 확인하는 것은 고객에게 달려 있습니다. 제품에 적합합니다. 그렇지 않다면, 그 일을하기 위해 더 많은 보수를받을 것입니다.하지만 그들이 구매 한 것을 이해했는지 확인할 수있는 예지력이 없기 때문에 여전히 추가 작업을 유발할 수 있습니다.

나는 소프트웨어 고객들이 충분히 오랫동안 무지한 상태로 남아 있도록 허용되었고 이제 그들이 무엇을 구매하는지 이해해야한다고 믿습니다. 제대로 패치되지 않은 기업 IT 환경을 운영하는 것은 제조업체의 리콜 대상 차량을 계속 운영하는 것과 동일합니다. Windows 서비스 팩은 여러면에서 리콜에 해당합니다. 귀하는 법적으로 리콜을 제출할 의무는 없지만 사업으로서 귀하의 최선의 이익이며 책임 회피로 인한 손해에 대해 책임을 질 수 있습니다.


모든 Visual C ++ 앱에는 런타임 6.0, 2003, 2005, 2008 또는 2010과 같은 필수 구성 요소 / 외부 종속성이 있습니다. SP, SP1 또는 SP2가 없습니까? x86 또는 x64? 2005 SP2에는 어떤 버전의 Windows Installer가 필요합니까? 그리고 2008 SP1은 무엇입니까? 기타 등등.

따라서 그것은 엄청난 논쟁입니다! .NET에 대한 Joel의 불평 처럼 . 그리고 지금 무엇을보세요 !


C ++ Builder보다 .net에 대한 전제 조건이 훨씬 더 많이 있는지 알 수 없습니다. SQL Server에 대해 불평하지만 C ++ 빌더로 데이터베이스를 설치해야한다는 사실도 무시합니다. x64 대 x32에 대해 불평하지만 .NET은 변경이 필요하지 않습니다. 동일한 exe가 둘 다에서 실행됩니다 (두 환경에 대해 최적으로 컴파일 됨). C ++ Builder에 대해서도 마찬가지입니다. 별도의 SQL 서버 버전이 필요할 수 있지만 C ++ 빌더에 적용됩니다 (모든 항목에 x32 만 설치하지 않는 한).

예, 새로운 설치 프로그램 버전 문제가 있지만 이러한 구성 요소는 그다지 크지 않습니다. 그리고 설치 프로그램이 필요한 aprts 만 다운로드하고 설치할 수 있습니다.

좋은 설치 프로그램을 만드는 데 이미 시간을 투자했기 때문에 C ++ 빌더가 더 쉬울 것입니다. .NET에 대해 동일한 작업을 수행해야하며이 작업이 아닌 실제 문제를 기반으로 선택할 수 있습니다.

그건 그렇고, Microsoft가 자신이하는 방식으로 작업을 선택하는 이유는 많은 사용자, 특히 기업 사용자가 자동으로 설치하는 것을 좋아하지 않기 때문입니다 (아마도 특정 버전의 라이브러리에 의존하는 응용 프로그램이 있기 때문일 수 있습니다. 쉽게 제거 할 수없는 새 버전으로 지워 버립니다.)

지식이 부족한 사람들에게 "쉽게 만들기"라고 생각하는 것은 실제로 자신이하는 일을 아는 사람들을 위해 일을 훨씬 더 어렵게 만드는 것입니다.

여기에 좋은 예가 있습니다. 내가 절대적으로 경멸하는 한 가지는 SQL Server가 필요한 앱을 설치하고 SQL Server의 자체 인스턴스를 설치할 때입니다. 이미 사용할 수있는 인스턴스가 여러 개있을 수 있습니다. 초보자에게는 쉽고, 앱이 내 단일 인스턴스와 함께 작동하도록 시도하는 것은 당혹 스럽습니다.


앱이 Mono에서 실행되는 경우 Mono 런타임으로 앱을 배송하는 것이 덜 고통 스러울 수 있습니다.

참고 URL : https://stackoverflow.com/questions/4470131/the-case-for-or-against-net-the-beast

반응형