[C#] .net 4에서 async-await 사용

현재 C # 5의 async-await 기능에서 많은 이익을 얻을 수있는 응용 프로그램을 만들기 시작했습니다. 그러나 어떤 버전의 VS와 비동기 런타임을 사용할지 잘 모르겠습니다.

OS 인기 차트를 살펴보면 3 년 정도 더 Windows XP를 지원해야합니다. .net 4.5는 최신 버전의 Windows에서만 실행되는 것처럼 보이므로 .net 4.0을 대상으로해야합니다. 개발 시스템은 Windows 7을 사용하므로 최신 버전의 VS를 사용하는 것은 문제가되지 않습니다.

이제이 작업을 수행하기 위해 먼저 컴파일러를 선택해야합니다.

  • AsyncCTP가있는 VS2010
  • 대상을 .net 4.0으로 설정하는 VS2012 미리보기 (그리고 도착하면 최종)
  • 모노

어느 코드 생성 버그가 적은 것입니까? 보면 존 소총의 블로그 VS2012 미리보기는 CTP보다 결코 코드 생성기를 사용합니다.

더 중요한 것은 어떤 런타임을 사용해야합니까?

VS2012에 .net 4와 함께 사용할 재배포 가능 비동기 런타임이 포함되어 있습니까?

AsyncCTP 런타임을 참조하여 미리보기로 코드를 컴파일했습니다. 그러나 CTP는 라이센스 조건이 이상하므로 장기적인 솔루션으로는 적합하지 않습니다.

아니면 타사 구현을 사용해야합니까? 아마도 모노가 있습니까?

라이브러리를 배포하려면 dll을 응용 프로그램과 같은 디렉토리에 설치하는 것이 좋습니다.

바이너리가 mono + Linux / MacOS에서 변경없이 작동한다면 좋을 것입니다. 따라서 런타임은 내장 된 모노 (2.12)와 호환되거나 비 Windows OS에서 사용할 수 있어야합니다.



답변

Microsoft는 Nuget 을 통해 AsyncCTP 를 대신 하여 Async Targeting Pack (Microsoft.Bcl.Async)출시 했습니다.

자세한 내용은 http://blogs.msdn.com/b/bclteam/archive/2013/04/17/microsoft-bcl-async-is-now-stable.aspx 에서 확인할 수 있습니다 .

http://blogs.msdn.com/b/lucian/archive/2012/04/24/async-targeting-pack.aspx 에서 이전 버전에 대해 읽을 수 있습니다 .

이 팩은 공식적으로 지원되므로 XP + 비동기를 타겟팅하는 가장 좋은 옵션은 Visual Studio 2012 + C # 5 + Async Targeting Pack을 사용하는 것입니다.

그래도 .NET 3.5를 타겟팅해야한다고 생각하면 .NET 3.5 용 (my) AsyncBridge를 계속 사용할 수 있습니다 .


답변

다른 .Net 언어를 고려할 수 있다면 F #로 문제를 해결할 수 있습니다. 수년 동안 async {} 계산 식을 사용했으며 .Net 2.0 과도 호환됩니다. 최소 요구 사항은 Windows XP SP3입니다. 런타임은 여기에서 다운로드 할 수 있습니다 .


답변

VS 12 베타를 사용하여 async / await를 사용하여 .NET 4.0을 대상으로 지정할 수 있습니다.

컴파일러가 의존하는 유형을 제공하는 일부 코드를 프로젝트에 복사해야합니다.

자세한 내용은 여기

편집 : 우리는이 기술을 가져 와서 AsyncBridge라는 오픈 소스 라이브러리로 바꿨습니다 :
https://nuget.org/packages/AsyncBridge


답변

소프트웨어를 배포하려면 현재 Mono 솔루션이 유일한 옵션이라고 생각합니다. 또한 최종 결과는 Linux 및 OS X에서 Mono에서 실행되기를 원한다고 말합니다. Mono를 타겟팅하는 것은 자연스러운 솔루션처럼 보입니다.

다음 문제는 IDE입니다. MonoDevelop는 분명히 잘 작동하지만 Visual Studio를 선호한다고 말합니다.

Greg Hurlman 은 Visual Studio에서 Mono 2.8을 코딩하기 위한 프로필만들었습니다 . 그와 함께 후속 조치를 취하면 Visual Studio에서 Mono 2.11 / 2.12를 개발하기위한 올바른 방향을 제시 할 수 있습니다.

물론 상용 제품인 Visual Studio 용 Mono Tools 도 있습니다. 나는 그것이 여전히 Xamarin에 의해 제공되고 있다고 가정합니다 .

.NET 위에서 Mono에서 필요한 4.5 프로필 어셈블리를 실행할 수도 있지만 시도하지는 않았습니다. 4.5 프로필은 4.0 API의 엄격한 상위 집합입니다. 아마도 그것을 쏴서 다시보고하십시오.

편집 : 아마도 프로덕션 환경에서 Visual Studio Async CTP를 사용할 수있는 것 같습니다.

다운로드 페이지에 다음 과 같이 나와 있습니다 .

프로덕션 사용을위한 새로운 EULA가 포함됩니다. 참고-이 라이센스는 프로덕션 코드에 CTP를 사용하도록 권장하지 않습니다. CTP는 지원되지 않고 위험에 처한 기술 프리뷰로 남아 있습니다. 그러나 개발자로부터 CTP를 사용하여 프로덕션 코드에 대한 많은 요청을 받았으므로이를 허용하도록 라이센스를 변경했습니다.


답변

MS가 C # 5.0을 릴리스 한 후 소프트웨어 배포를 시작하려면 AsycnCTP를 사용하여 개발을 시작할 수 있습니다. 그렇지 않으면 베타 버전이 아니라 CTP이므로 사용하지 않는 것이 좋습니다. 베타 단계와 릴리스에 가깝게 변경할 수 있습니다. 불안정 할 수 있습니다.

응용 프로그램에서 쉬운 비동기 작업을 도입하려면 Reactive Extensions 및 맨 위에 구축 된 항목 (Reactive UI 등)을 사용하는 것이 좋습니다.

VS2012의 경우 // Build / tablet MS가 해당 회의에서 나에게 준 것과 동일한 비동기 CTP도 포함합니다.


답변