먼저 "내 기술이 너의 것보다 낫다"라는 유형의 게시물을 찾고 싶지 않다. 이것은 실제 사례 시나리오이며이 결정에 직면 해 있습니다. 이를 염두에두고 설명 드리겠습니다.WebForms/MVC를 Windows Forms 프로그래머
WinForms 응용 프로그램이 있습니다. 초기 .NET 1.0에서 시작되었지만 첫 번째 배송 버전은 .NET 1.1을 사용했습니다. 거기에 은 레이어 (예 : BusinessLayer.dll, Datalayer.dll, Framework.DLL 등)이지만이 응용 프로그램의 "긴"개발주기 중 어느 시점에서는 "프리젠 테이션"계층 (Win Forms)이 일부 따라서 코드와 코드 뒤의 표현 사이의 분리는 일종의 신화입니다. 나쁜 습관이나 무엇이든, 진실은 응용 프로그램이 있고 작동한다는 것입니다.
몇 년이 지났고 .NET 2.0을 사용하여 천천히 마이그레이션했으며 거의 효과가있었습니다. 여기 저기에서 몇 가지 호출을 변경해야했습니다. 마지막 버전은 .NET 3.5sp1에서도 마찬가지였습니다. 우리는 일종의 Webservices 일이 필요했고 대신 WCF를 사용하기로 결정했습니다. 그것은 잘 작동합니다. 그러나 이러한 모든 .NET 업그레이드에도 불구하고 응용 프로그램의 코드베이스는 대부분 5 년 전의 동일한 로큰롤과 동일합니다. 우리는 데이터 객체에 대해 Gentle.NET (이전 및 유지 관리되지 않음)을 사용합니다 (5 년 전의 축복이었습니다!).
우리의 프리젠 테이션 레이어 winforms는 완전히 gdi + 사용자 정의 컨트롤의 90 %를 사용하기 때문에 "보기 좋게"표시됩니다. (가능할 때마다 WinAPI를 해킹 할 필요없이). 응용 프로그램은 터치 기반입니다 (즉, 잉크를 사용하지만 잉크를 사용하지는 않습니다). 그러나 단추, 레이블 등은 모두 촉각 도구와 함께 사용하도록 "설계되었습니다". (TabletPC 또는 터치 스크린). 물론 일부 사용자는 키보드/마우스를 사용합니다.
이 모든 것을 염두에두고 모든 web2.0 및 인터넷 퍼즈 (Jeff의 게시물을 포함))를 사용하여 응용 프로그램을 다시 작성하고 웹 기술을 사용할 가능성을 고려하고 있습니다. 아이디어는 분명히 고객에게 더 많은 가용성을 제공합니다 (시스템을 언제 어디서나 사용할 수 있음). 유지 관리가 적습니다 (업그레이드 할 수 있고 즉시 업그레이드 할 수 있습니다). 인터넷 대 WinApp 문제.
문제는 이것이 의료 산업이라는 점을 감안할 때 모든 고객이 데이터베이스를 서버로 "이동"할 수있는 것은 아니며 수용 가능하며 웹 서버/데이터베이스 설치를 강요합니다. 서버를 자체 서버에 가지고 있으므로 자신의 복사본이 있습니다. 큰 문제는 아니지만 (수동으로 업데이트해야한다는 점을 제외하면 5 년 동안 win32 응용 프로그램을 업데이트 했으므로 문제는 아닙니다!).
이제 기본 '질문'으로 돌아갑니다.
이 팀은 Asp.NET 경험이 거의 없으므로 ASP 2.0 (1999/2000)에서 많은 프로그램을 만들었지 만 HTML + VBScript + CSS의 스파게티 였기 때문에 생각하지 않습니다. 모든 경험 (인터넷 버블!) 후에 우리는 VB6, C# .NET 1x로 돌아 갔고 나머지 이야기를 알고 있습니다. 우리는 WinForms 용 C# 개발자 중 소규모 팀입니다. 우리는 지난 .NET 3.5를 타고 Linq To SQL Experience를 얻었습니다. 우리는 매우 자연스럽고 "5 년전에 그렇게했으면 좋겠다"고 느꼈습니다.
이 모든 것을 감안할 때 응용 프로그램을 다시 작성하는 것은 "간단한 작업"이 아닙니다 (이미 알려진 C# .NET에서 수행하고 싶지는 않습니다). 시간과 계획을 수립 할 수는 있지만 수십 개의 실수를 수정할 수 있습니다 애플리케이션으로 5 년간의 경험을 쌓은 지금 우리는 현재 고객이 소프트웨어를 어떻게 사용하고 싶은지, 현재의 앱을 디자인 할 때 우리가 만든 제한 사항을 더 잘 이해하고 있다고 말할 수 있습니다. 응용 프로그램의 "지식"과 비즈니스의 작동 방식은 모두 디자인과 코드 및 유용성면에서 훨씬 뛰어난 응용 프로그램을 만들기 위해 적용될 수 있습니다. .NET 1.1에서 우리는 제네릭조차 가지고 있지 않았다는 것을 기억하십시오!;) (많은 ArrayList가 여기에 있습니다.)
추가 메모로 Crystal Reports를 사용합니다 (평소와 같이). 우리는 잉크 컨트롤이 반드시 필요하다고 생각하지 않습니다. 우리는 HTML이 WinForms가 아니기 때문에 HTML/CSS가 우리가 원하는 방식으로 보이도록 만들 수 있습니다. 따라서 일부는 재현 할 수 없습니다.
MVC (또는 WebForms)에서 이것을 계획하는 것이 너무 미친 것이라고 생각하십니까? MVC (레일즈상의 루비와 같은) 아이디어 (책의 기본 이상으로 루비 프로그래밍을 한 적이 없다)가 좋기 때문에 우리 팀의 아무도 전문가가 아니지만 언제나 배우고 읽을 수 있습니다. 그것은 "로켓 과학"이되어서는 안됩니다.
이 질문 전체가 다소 주관적 일 수 있지만, 노후화 된 Winforms 응용 프로그램을 새로운 ASP/MVC/XXX 웹 응용 프로그램으로 대체 하시겠습니까? 경험이 있거나 시도 했습니까 (성공했거나 실패 했습니까)?
더 나은 결정을 내리는 데 도움이되는 모든 통찰력이 인정 될 것입니다.
미리 감사드립니다.
업데이트 : 응답 한 모든 사람들 덕분에 우리는 이것이 좋은 움직임인지 아닌지 평가할 것입니다. 분명히 일이지만, 데스크톱 응용 프로그램이 점점 오래 가고 있습니다. (오래된 네트워크를 사용하고 있습니다. 1.1 해킹) 그리고 그것은 Vista와 W7에서 문제없이 다소 효과가 있었고, 미래의 업데이트가 그것을 깨뜨릴 수도 있습니다. 또한 응용 프로그램의 "더 많거나 적은 코어"부분이 심하게 설계된 아이디어를 노출하고 있으며 특정 작업을 수행하기 위해 여기저기서 해킹해야했습니다. 경험이 없으므로 비즈니스가 어떻게 작동했는지에 대한 100 % 지식이 부족합니다 (고객이 원하는 것을 확신하지 못함). 새로운 응용 프로그램 (어떤 형태로든)은 우리가 모든 사용자 지식을 유지하면서 더 나은 기반을 만들 수있게 해줍니다. 하지만, 그것은 일과 중입니다. :) 그래서 우리는이 모든 옵션을 여기에서 고려할 것입니다. 여러분 중 일부는 언급했듯이 더 얇은 클라이언트와 여기에 WCF를 사용하는 것이 더 적절할 수도 있습니다.
다시 한번 감사드립니다!
+1은 무국적입니다. – jao
이것은 첫 번째 답변이며 훌륭한 정보를 제공하기 때문에 받아들이 겠지만 나머지는 모두 감사하겠습니다. 슬프게도 StackOverflow는 정수에 대해서만 처리합니다. 두 가지 좋은 답변을 드릴 수는 없습니다 : S –