문제

우리는 일부 추상 디자이너를 만들기 위해 Microsoft DSL 툴킷을 고려하고 있습니다.이미 몇 가지 POC를 수행했지만 동일한 내용에 대한 의견을 듣고 싶습니다.

Microsoft DSL Toolkit 및 T4 작업 경험을 공유할 사람이 있습니까?또한 오픈 소스 DSL 프로젝트에 대한 조언이 도움이 될 것입니다.Microsoft Service Factory 모델링 에디션은 DSL 도구 키트에 크게 의존합니다.

OSLO/Quadrant가 출시되려면 시간이 좀 걸릴 것이므로 우리가 할 수 있는 유일한 옵션은 Microsoft DSL 디자이너에 의존하는 것입니다.(동일한 내용에 대해서는 Kieth의 블로그를 참조하세요.)

또한 DSL에 대해 이미 알고 있는 정보는 다음과 같습니다.

1 - DSL 도구에 대한 MSDN의 Nice Lab

2 - DSL 툴킷을 사용하는 Codeplex의 프로젝트 목록

도움이 되었습니까?

해결책

우리는 DSL과 상당한 작업을 수행했으며 대부분의 작업을 수행 한 사람은 아니지만 하우스 및 고객 기반 컨설턴트 사용을 위해 많은 작업을 수행했습니다. 일단 당신이 모델링 (작은 위업 없음)을 해결 한 후에는 이것들이 훌륭한 도구라고 말할 것입니다.

나는 어떤 오픈 소스 프로젝트에서 당신을 불안정하게 지적 할 수 없으며, 나는 비 사소한 DSL을 얻고 실행하는 데 투자를 추가 할 것입니다. 그러나 당신이 그것들을 얻는다면 생산성 향상은 인상적입니다.

편집 - 몇 년 동안 경험을 마친 후 다음 관찰을합니다.:

  1. VS DSL에는 시각적 성능이 좋지 않습니다. 큰 다이어그램이 많으므로 모델 요소를 접어야합니다 (숨기기/표시)
  2. 상호 연결된 라인이 많은 대형 다이어그램은 탐색하기 어렵습니다 (레이아웃은 어렵다)
  3. 대형 모델은 코드 gen 등에 대해 적절하게 수행되며, 주로 사제화에 걸린 시간 (예상대로)
  4. 많은 수의지도로 인해 모델 비교가 어렵습니다.
  5. 좋은 개발자 경험을 위해서는 상자 외부 속성 대화 상자에 대한 많은 개발이 필요합니다.
  6. IP를 보호하기 위해 모델을 암호화 할 수 있으므로 나중에 비교를 매우 어렵게 만듭니다 (그러나 이것은 모든 암호화 된 파일에 해당됩니다.)

다른 팁

Visual Studio DSL 툴킷의 사용법을 살펴보았습니다.궁극적으로 나는 이러한 도구가 제한적이지 않다는 것을 알았습니다.기본 텍스트 문법을 쉽게 설명할 수 있는 기능 없이 GUI를 요구하는 것은 나에게는 부적절해 보입니다.GUI 없이 DSL을 쉽게 사용할 수 있는 기능이 필요합니다.

Oslo는 DSL에 대한 모든 메타데이터를 SQL DB에 저장하는 매우 이상한 방향으로 가고 있는 것 같습니다.그것은 나에게 관련이 없는 것처럼 보이며 특히 빠른 IDE 통합을 원하는 경우 속도가 느려질 수 있습니다.물론 깊이 생각해 보지는 않았기 때문에 제가 본 인상보다 더 나을 수도 있습니다.

여담으로, 저는 최근에 다음을 사용하여 DSL을 구현했습니다. 앤틀러.SO에 대한 질문에 대한 답변으로 내 게시물을 찾을 수 있습니다. 여기

위 외에도 노마 Object-Role 모델링 도구는 DSL 도구를 기반으로 구축됩니다. 그것은 그들과 함께 할 수있는 일의 매우 정교한 예이며, 모델 변환 및 코드 생성을 위해 XML 변환을 사용하는 것을 보여줍니다.

나는 확실히 진지한 테이커입니다. IVé는 최근 주문 시스템을위한 주문 처리를 모델링하기 위해 DSL을 만들었습니다. 우리는 특정 행에 어떤 ProcessTatus가 가지고 있는지에 따라 다른 웹 서비스에 연결하는 WindowsService를 사용한 다음 결과에 따라 상태를 변경합니다 (다음, 오류, 거부). DB- 테이블을 수동으로 편집하는 것은 매우 시간이 걸렸으므로 SQL 코드를위한 언어와 생성기를 만들었습니다.

프로젝트에서 코드를 게시 할 수 있는지 확인해야하지만 DB 구조를 게시하여 수동으로 편집하는 이유를 이해할 수 있습니다. Aprox에 대한 데이터를 넣어야합니다. 10 각 5-20 단계의 OrderProcesses는 동작과 모든 것을 갖습니다 (ProcessActionId는 웹 서비스에 대한 굴절입니다).

CREATE TABLE [dbo].[OrderProcessStep](
    [OrderProcessCode] [int] NOT NULL,
    [PreviousProcessStatusCode] [int] NOT NULL,
    [NextProcessStatusCode] [int] NULL,
    [DenialProcessStatusCode] [int] NULL,
    [ErrorProcessStatusCode] [int] NULL,
    [ProcessActionId] [int] NULL,
    [StepComment] [varchar](500) NOT NULL,
    [SecondsToNext] [int] NULL,
    [SecondsToError] [int] NULL,
    [SecondsToDenial] [int] NULL,
 CONSTRAINT [PK_OrderProcess] PRIMARY KEY CLUSTERED 
(
    [OrderProcessCode] ASC,
    [PreviousProcessStatusCode] ASC
)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top