2010-04-14 5 views
5

필자는 이미 엔터프라이즈 급이 아닌 협업 응용 프로그램 (엔터프라이즈 급이 아닌, 규모가 크게 성장할 가능성이있는 작은 프로젝트)을 위해 새로운 아키텍처를 개발하고 있습니다. 이미 IOC를 사용하도록 스스로를 규율하려고 노력하고 있습니다. Extend, TDD, WF가 WF4 (Windows Workflow 4.0, .NET 4.0의 일부)를 배우고 통합하는 데 관심이 있는지, 또는 WF가 말 그대로, 전체 응용 프로그램의 컨트롤러, 즉 "MVC"(ASP.NET MVC가 아니라 패턴)의 실용적인 C입니다. 따라서 은 WF4의 워크 플로우 활동이 고도로 확장 가능/확장 가능한 웹 기반 공동 작업 애플리케이션의 기본 컨트롤러가되어야합니까?? 아니면 완전히 잘못된 질문을하고 있습니까?.NET WF4 : 모든 작업을 처리해야합니까?

이것은 막연한 질문입니다. 그렇기 때문에 추상적 인 답변은 특정 질문만큼 환영받을 것입니다.

WF4는 WF3의 중요한 재 작업 및 재 설계로, WF3를 열악한 기술로 선택하게 만든 많은 부분이 WF4에서 정리되었음을 알고 있습니다. 예를 들어 내가 말할 수있는 한 (비록 내가 열심히 보지 않았지만 이것에 대해 거의 다루지 않았지만) WF4 활동은 [TestMethod]로 모의 테스트를하고 을 조롱한다. WF의 테스트 가능성은 우리에게 큰 관심사입니다.). 저는 WF를 사용하여 XML을 통해 다이어그램 작성 또는 늦은로드에 관심이 거의 없으며 구체적인 C# 워크 플로 선언을 작성하는 것을 선호하지만 워크 플로를 컴파일 언어로 간결하게 작성하고 테스트 할 수 있다면 유료로 유혹을받습니다. 그것에주의를 기울이십시오. 그래서 이러한 개선이 있다면, 성능 향상과 같은 다른 것들 중에서도이 기술에 대한 내 관심을 다시 얻었습니다. 이전에 WF3을 푸우 푸시 했었습니다.

또한 Microsoft에 따르면 WF4는 Microsoft CRM, MS SharePoint 등에서 서로 다른 워크 플로 기술을 사용하여 얻은 교훈을 바탕으로 앞으로 Microsoft에서 모든 워크 플로 기반 제품에 대해 표준화하고자하는 것입니다. 하나의 크기에 맞는 모든 기능에 베팅하는 것에 대해 궁금한 점이 있지만, 구현이 간결하고, 컴파일 타임에 유형을 검사하고, 테스트 할 수 있고 유지 보수 가능한 경우에만 가능합니다.

편집 : WF4 (WF3 아님)를 아는 사람들의 답변 만 "대답"으로 간주됩니다.

+0

당신의 질문은 블랙 애더 (Black Adder)의이 장면을 생각하게 만들었습니다. http://www.youtube.com/watch?v=UK7ci6UDBeQ –

+0

@greg - 문화적인 것이어야합니다. –

+0

이 질문에 대한 후속 조치로이 프로젝트는 부수적 인 프로젝트였으며이 질문에 대한 답을 얻을 때까지 또는 프로그래밍 방식의 WF를 핵심으로 탐험 할 때가 지 기다렸습니다 (물론 높은 이 시점에서 -risk 개념). –

답변

2

아니요, 나는 모든 것을 놓치지 않을 것입니다.

저는 현재 워크 플로우 3을 광범위하게 사용하는 프로젝트에 참여하고 있습니다. 워크 플로우 4가 아니며 WF4에서 많은 개선이 있었음을 이해하지만 워크 플로우는 워크 플로우입니다.

저는 일반적으로 재미 있고 흥미롭고 새로운 기술을 배우는 데 유익하다고 말합니다. 새로운 시각과 이해를 얻을 수 있습니다. 그러나 제 의견으로는 제가 일하고있는 프로젝트는 워크 플로우를 과도하게 사용하고 있습니다. 객체 지속성, 타이머 기반 이벤트 및 프로세스 상태 추적에 사용됩니다. 이 모든 것을 할 수 있지만 시스템에 아무 것도 추가하지 않는다고 저는 믿습니다.

필자는 자신의 워크 플로우 3 경험을 바탕으로 확실히 냉소적인데, 지금까지는 워크 플로우가 디버깅하기 어렵고, 통합하기가 어려웠으며 여러 워크 플로우가있는 많은 경쟁 조건 시나리오를 도입 할 가능성이 높습니다. 내 과정의 다른 부분에서 독립적으로 활동합니다.

워크 플로우를 사용할 필요가 없다면 특정 워크 플로를 사용하여 확실한 이점을 얻지 못하고 시스템에 더 많은 복잡성과 위험을 추가하는 이유는 무엇입니까? '할 수있다'또는 '할 수있다'라는 이유로 워크 플로를 사용하는 것만으로는 충분하지 않습니다. 그것을 탐구하고 싶다면 그것을 사용하여 장난감을 만들거나 중요하지 않은 역할로 시스템에 하나 또는 두 개의 워크 플로우를 던져보십시오.

워크 플로의 고유하고 고유 한 기능을 사용하고 있는지 고려하십시오. 예 : 테스트 할 수 있다는 것은 워크 플로우의 특징이 아닙니다. 워크 플로 테스트는 코드 블록보다 쉽지 않습니다.

워크 플로에서 수행 할 수있는 작업이 일반 코드로 수행 할 수있는 작업은 거의 없습니다 (일부는 확실하지만 어떤 것도 알지 못하기 때문에 '극 소수'라고 말함). 당신은 당신의 이익과 손실을 재검토하고 개념 증명을 구축해야합니다.

+0

"워크 플로우를 사용할 필요가 없다면 특정 워크 플로를 사용할 때 얻을 수있는 실질적인 혜택을 얻지 못하면 시스템에 더 많은 복잡성과 위험을 추가하는 이유는 무엇입니까?" 실제로, 나의 의도는 WF4를 사용하여 내 노력을 통합하고 복잡성과 위험을 줄이는 것이 었습니다. 그것은 유일하고 구체적인 이점이었습니다. 당신의 대답에 감사드립니다. 그러나 WF3에 대한 경험은 거의 모든 사람의 경험이었습니다. 그래서 나는 그것을 피했습니다. WF4가 근본적으로 다른 접근 방식 (??)으로 채택 된 것이 이상적인 컨트롤러 코어가 될지 궁금하다. 그러나 나는 분명히 한알의 소금으로 조언을 구할 것입니다. –

+0

물론 - 내 답변은 매우 주관적입니다. 제가 WF3에서 약간 상처를 입었습니다. 그러나 저의 경험은 저에게이 위대한 견적을 상기시켜주었습니다. "컴퓨터 시스템의 가장 저렴하고, 빠르고, 가장 신뢰할 수있는 구성 요소는 거기에없는 구성 요소입니다." –

관련 문제