2008-12-15 28 views
10

Chúng tôi đang xem xét bộ công cụ Microsoft DSL để tạo ra một số nhà thiết kế trừu tượng. Tôi đã làm một số POC, nhưng muốn nhận được một số ý kiến ​​trên cùng.Công cụ DSL của Microsoft Visual Studio SDK - Bất kỳ người dùng nghiêm túc nào?

Bất kỳ ai ở đây để chia sẻ kinh nghiệm của họ khi làm việc với Microsoft DSL Toolkit và T4? Ngoài ra, bất kỳ con trỏ nào để mở các dự án DSL nguồn sẽ giúp - Ví dụ. Phiên bản mô hình hóa Nhà máy Dịch vụ của Microsoft phụ thuộc rất nhiều vào bộ công cụ DSL.

Vì OSLO/Quadrant sẽ mất chút thời gian để phát hành, tôi nghĩ tùy chọn duy nhất chúng tôi có là dựa vào nhà thiết kế Microsoft DSL. (See Kieth's blog on the same)

Ngoài ra, đây là một số thông tin tôi đã có trên DSL:

1 - A Nice Lab in MSDN on DSL tools

2 - A List of Projects in Codeplex using DSL toolkit

+0

Tôi đang cố gắng hiểu cách hoạt động của tất cả. Người dùng có cần phải có một giấy phép cho Visual Studio sau đó sử dụng DSL của bạn? – TimothyP

+1

Để tạo gói DSL, tải xuống và cài đặt Visual Studio SDK. Gói DSL giống như bất kỳ Gói VS nào khác, bạn cần có Khóa tải gói để triển khai. http://msdn.microsoft.com/en-us/library/bb165795(VS.80).aspx – amazedsaint

+1

AFAIK tất cả các công cụ Visual Studio UML được xây dựng với SDK mô hình hóa & trực quan hóa công cộng ... đó là một công cụ đánh giá khá nghiêm túc – Schneider

Trả lời

5

Chúng tôi đã làm công việc đáng kể với DSL và có một số chúng để sử dụng trong nhà và tư vấn dựa trên khách hàng, mặc dù nó không phải là tôi đã làm hầu hết công việc với họ. Một khi bạn đã đưa ra các mô hình (không có kỳ tích nhỏ) tôi sẽ nói rằng đây là những công cụ tuyệt vời.

Tôi không thể chỉ cho bạn bất kỳ dự án mã nguồn mở nào, và tôi sẽ thêm đầu tư vào việc chạy DSL và chạy không nhỏ là khá lớn, tuy nhiên nếu bạn nhận được chúng ngay thì tăng năng suất là ấn tượng.

chỉnh sửa - sau một kinh nghiệm vài năm tôi làm cho các quan sát sau:

  1. Các DSL VS có xấu hiệu suất thị giác sơ đồ lớn, bạn cần gấp các yếu tố mô hình đi (ẩn/hiển thị)
  2. biểu đồ lớn với nhiều đường liên kết khó điều hướng (bố trí khó)
  3. Mô hình lớn hoạt động đầy đủ cho mã gen vv, với thời gian thực hiện chủ yếu trên deserialisation (như mong đợi)
  4. Mô hình so sánh là khó khăn do số lượng lớn GUIDs
  5. Trải nghiệm nhà phát triển tốt đòi hỏi nhiều phát triển hơn trong số các hộp thoại thuộc tính hộp.
  6. Models thể được mã hóa để bảo vệ IP, điều này làm cho chiếu sau này cực kỳ cứng (nhưng điều này là đúng đối với tất cả các file đã được mã hóa.)
0

Tôi đang chắc chắn một taker nghiêm trọng. Ivé gần đây đã thực hiện một dsl để mô hình hóa các quy trình xử lý đơn đặt hàng cho một hệ thống thứ tự. Chúng tôi sử dụng một cửa sổ dịch vụ kết nối với các dịch vụ web khác nhau dựa trên đó processtatus một hàng cụ thể có và sau đó thay đổi trạng thái dựa trên kết quả (Tiếp theo, Lỗi, Từ chối). Nó đã được rất thời gian để chỉnh sửa rằng db-bảng bằng tay, vì vậy tôi đã thực hiện một ngôn ngữ và máy phát điện cho mã sql.

Tôi phải kiểm tra xem tôi có được phép đăng bất kỳ mã nào từ dự án hay không nhưng tôi đăng cấu trúc DB để bạn có thể hiểu tại sao khó chỉnh sửa thủ công. Tôi phải đưa vào dữ liệu cho aprox. 10 quy trình xử lý đơn hàng với 5-20 bước với các hành động và mọi thứ (ProcessActionId là một điều chỉnh cho một webservice).

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 
) 
+0

Âm thanh tuyệt vời. Infact, chúng tôi cũng đã làm một cái gì đó như thế này, chủ yếu là để tạo ra bấm qua nguyên mẫu và các đối tượng dto – amazedsaint

+3

Tất nhiên, bạn chỉ có thể sử dụng một ORM để tạo ra tất cả các mã tiết kiệm Repository .... –

2

Ngoài các công cụ trên, công cụ NORMA để tạo mô hình vai trò-vai trò được xây dựng trên Công cụ DSL.Đó là một ví dụ rất phức tạp về những gì có thể được thực hiện với họ, và thể hiện bằng cách sử dụng các biến đổi XML để chuyển đổi mô hình và tạo mã.

4

Tôi đã xem xét việc sử dụng bộ công cụ bộ ghi hình ảnh DSL. Cuối cùng, tôi đã tìm thấy những công cụ đó để có thể thu hẹp. Để yêu cầu một GUI, không có bất kỳ khả năng dễ dàng mô tả một ngữ pháp văn bản cơ bản, có vẻ như không đủ cho tôi. Tôi yêu cầu khả năng dễ dàng sử dụng DSL mà không cần GUI.

Oslo dường như đang đi theo một hướng rất lạ, lưu trữ tất cả siêu dữ liệu cho DSL trong một DB SQL. Điều đó dường như không liên quan đến tôi, và chắc chắn có thể làm chậm mọi thứ, đặc biệt nếu bạn muốn tích hợp IDE nhanh. Phải thừa nhận rằng tôi đã không nhìn sâu vào nó, vì vậy nó có thể tốt hơn so với ấn tượng của tôi về nó.

Là một sang một bên, gần đây tôi đã triển khai một DSL sử dụng Antlr. Bạn có thể tìm bài đăng của tôi dưới dạng câu trả lời cho một câu hỏi về SO về số điện thoại here

+0

@Darien: câu hỏi này đã được cụ thể về Bộ công cụ DSL. –

+0

Ahh bạn nói đúng, tôi đã hiểu nhầm một phần câu hỏi về các dự án nguồn mở. Cơ thể bài đăng bị xóa –

+0

Thực ra, tôi sẽ chỉnh sửa nó để phản ánh ý kiến ​​của tôi về các công cụ mà MS có. –

Các vấn đề liên quan