Wprowadzenie do języków domeny
W tym temacie wyjaśniono podstawowe pojęcia, w celu zdefiniowania i przy użyciu języka specyficzne dla domeny (DSL).
Jeśli korzystasz z DSLs, firma Microsoft zaleca pracy poprzez DSL Tools Lab, który można znaleźć w tej witrynie: Visualizaton i modelowania SDK
Język specyficzne dla domeny jest notacji, zwykle graficzny, który jest przeznaczony do użytku dla określonego celu.Z drugiej strony języki, takie jak UML są ogólnego przeznaczenia.W DSL można zdefiniować typy element modelu i ich relacji i jak są prezentowane na ekranie.
Po zaprojektowaniu DSL można rozpowszechniać go jako część pakietu Visual Studio Integration Extension (VSIX).Użytkownicy pracują z DSL w Visual Studio:
Notacja jest tylko część DSL.Wraz z notacji pakietu VSIX zawiera narzędzia, które użytkownicy mogą stosować, aby pomóc im w edycji i wygenerować materiału z ich modeli.
Jest jednym z głównych wniosków DSLs do generowania kodu programu, pliki konfiguracyjne i innych artefakty.Szczególnie w dużych projektów i linii produktów, gdy kilka wariantów produktu zostanie utworzony, generowanie wielu aspektów zmiennej z DSLs może zapewnić znaczny wzrost niezawodności i bardzo szybkiego reagowania na zmiany wymagań.
Reszta ten przegląd jest instruktażu, który wprowadza podstawowe operacje tworzenia i korzystania z języka specyficzne dla domeny, w Visual Studio.
Aby zdefiniować DSL, musisz mieć zainstalowane następujące składniki:
Visual Studio |
|
Visual Studio SDK |
|
Visual Studio, wizualizacji i modelowanie SDK |
Aby utworzyć nowy język specyficzne dla domeny, użytkownik utworzy nowy Visual Studio roztwór za pomocą szablonu Projekt języka specyficzne dla domeny.
Na pliku menu, wskaż Nowy, a następnie kliknij przycisk Projekt.
W obszarze typów projektów, rozwiń węzeł Inne typy projektów węzeł, a następnie kliknij przycisk rozszerzalności.
Kliknij przycisk Projektant języka specyficzne dla domeny.
W Nazwa polu, należy wpisać FamilyTree.Click OK.
Specyficzne dla domeny, Kreator języka otwiera i wyświetla listę rozwiązań DSL szablonu.
Każdy szablon, aby wyświetlić opis, kliknij
Szablony są użyteczne punktów początkowych.Każdy z nich zawiera zakończenie pracy DSL, które można edytować do własnych potrzeb.Zazwyczaj należy wybrać szablon najbliższego chcesz utworzyć.
W tym instruktażu, wybierz Minimalne języka szablonu.
Wprowadź rozszerzenie nazwy pliku dla linii DSL w odpowiedniej strony w kreatorze.Jest to rozszerzenie, które będzie używać plików zawierających wystąpień linii DSL.
Wybierz rozszerzenie nie jest skojarzony z dowolnej aplikacji w komputerze lub w dowolnym komputerze, na którym chcesz zainstalować modem DSL.Na przykład docx i htm byłby niedopuszczalny pliku rozszerzeń nazw.
Kreator wyświetli ostrzeżenie, jeśli rozszerzenie, które zostały wprowadzone, jest używany jako DSL.Rozważ rozszerzenie nazwy pliku innej.Można także zresetować Visual Studio SDK doświadczalnych instancji, aby wyczyścić stare projektanci doświadczalnych.Kliknij przycisk uruchomić, kliknij przycisk Wszystkie programy, Zestawu SDK programu Microsoft Visual Studio 2010, Narzędzia, a następnie zresetować instancji programu Microsoft Visual Studio 2010 doświadczalnych.
Sprawdź inne strony, a następnie kliknij przycisk Zakończenie.
Rozwiązanie jest generowany, który zawiera dwa projekty.Są one nazywane Dsl i DslPackage.Plik diagramu otwiera to jest nazwany DslDefinition.dsl.
[!UWAGA]
Większość kodu, który można wyświetlić w folderach w dwóch projektów jest generowany na podstawie DslDefinition.dsl.Z tego powodu większość do linii DSL są zmiany w tym pliku.
Interfejs użytkownika teraz podobna do poniższej ilustracji.
Roztwór ten definiuje język określonej domeny.Aby uzyskać więcej informacji, zobacz Omówienie specyficzne dla domeny język interfejsu użytkownika narzędzia.
Zawiadomienie następujące aspekty nowe rozwiązanie.
Dsl\DslDefinition.DSL jest to plik, zobacz podczas tworzenia rozwiązania DSL.Niemal cały kod w roztworze jest generowany na podstawie tego pliku, a większość zmiany wprowadzone w definicji DSL są dokonywane w tym miejscu.Aby uzyskać więcej informacji, zobacz Praca z Praca z diagramu definicji DSL.
Projekt DSL ten projekt zawiera kod definiujący język specyficzne dla domeny.
Projekt DslPackage ten projekt zawiera kod, który umożliwia wystąpień DSL, aby go otworzyć i edytować w Visual Studio.
Roztwór DSL można uruchomić zaraz po jej utworzeniu.Później można zmodyfikować definicję DSL stopniowo, uruchomiony roztwór ponownie po każdej zmianie.
Kliknij przycisk Transform wszystkie szablony na pasku narzędziowym panelu Solution Explorer.Regeneruje ten większość kodu źródłowego z DslDefinition.dsl.
[!UWAGA]
Przy każdej zmianie DslDefinition.dsl, należy kliknąć przycisk Transform wszystkie szablony przed przystąpieniem do odbudowywania roztworu.Można zautomatyzować ten krok.Aby uzyskać więcej informacji, zobacz Jak zautomatyzować przekształcenia wszystkich szablonów.
Naciśnij klawisz F5, lub na debugowania menu, kliknij przycisk Start Debugging.
Modem DSL opiera się i jest zainstalowany w instancji doświadczalnych Visual Studio.
Wystąpienie doświadczalnych Visual Studio rozpoczyna się.Wystąpienie doświadczalnych przyjmuje swoje ustawienia z oddzielnych poddrzewa rejestru, gdzie Visual Studio rozszerzenia są zarejestrowane na potrzeby debugowania.Normalna wystąpienia Visual Studio nie mają dostępu do rozszerzeń tam zarejestrowanych.
W wystąpieniu doświadczalnych Visual Studio, otwórz plik modelu o nazwie Test z Solution Explorer.
- lub -
Kliknij prawym przyciskiem myszy projekt debugowanie, wskaż polecenie Dodaj, a następnie kliknij przycisk elementu.W Dodaj element okno dialogowe, wybierz typ pliku z linii DSL.
Plik modelu jest otwierany jako pusty diagram.
Przybornik otwiera i wyświetla narzędzia odpowiednie do typu diagramu.
Narzędzia do tworzenia kształtów i łączników na diagramie.
Aby utworzyć kształty, przeciągnij z narzędzia przykład kształt na diagram.
Aby połączyć dwa kształty, kliknij narzędzie łącznik na przykład, kliknij pierwszy kształt, a następnie kliknij drugi kształt.
Kliknij etykiety kształty, aby je zmienić.
Twoje doświadczalnych Visual Studio będą podobne do następujących:
Zawartość pliku, który jest wystąpieniem DSL jest nazywany model.Model zawiera modelelementów i łącza między elementami.Określa, jakie typy elementów modelu definicji DSL i łącza mogą istnieć w modelu.Na przykład w DSL, utworzony na podstawie szablonu języka minimalne, istnieje jeden typ elementu modelu i jeden typ łącza.
Definicja DSL można określić, jak pojawia się na diagramie modelu.Można wybierać różne style kształtów i łączników.Można określić, że niektóre kształty są wyświetlane wewnątrz innych kształtów.
Można wyświetlić model jako drzewo w Explorer przeglądać podczas edytowania modelu.Jak dodawać kształty do diagramu, elementy modelu są wyświetlane w Eksploratorze.Eksplorator można nawet, jeśli nie ma żadnych diagramu.
Nie widać Explorer w instancji debugowania Visual Studio, z widoku menu wskaż Other Windows, a następnie kliknij przycisk < swój język >Explorer.
Modem DSL generuje interfejs API, który umożliwia odczytywanie i Aktualizuj modele, które są wystąpieniami DSL.Stosowanie jednego interfejsu API jest do generowania plików tekstowych z modelu.Aby uzyskać więcej informacji, zobacz Generowanie kodu czasu projektowania przy użyciu szablonów tekst T4.
W roztworze debugowanie Otwórz pliki szablonów z rozszerzeniem ".tt".Próbki te wykazują, jak można generować tekst z modeli i pozwalają na przetestowanie API linii DSL.Jedna z tych próbek jest napisany w Visual Basic, inne w Visual C#.
Na podstawie każdego szablonu plik jest plikiem, który generuje.Rozwiń plik szablonu w oknie Solution Explorer i Otwórz plik wygenerowany.
Plik szablonu zawiera krótkiego segmentu kodu, który zawiera listę wszystkich elementów w modelu.
Wygenerowany plik zawiera wynik.
Po zmianie pliku modelu zobaczysz odpowiednich zmian w plikach generowane po ponownie wygenerować pliki.
W wystąpieniu doświadczalnych Visual Studio, Zapisz plik modelu.
Upewnij się, że parametr nazwy pliku w każdym pliku .tt odnosi się do pliku modelu, używanym do doświadczeń.Zapisz plik .tt.
Kliknij przycisk Transform wszystkie szablony na pasku narzędzi Solution Explorer.
- lub -
Kliknij prawym przyciskiem myszy Szablony, które chcesz ponownie wygenerować, a następnie kliknij przycisk Uruchomić narzędzie niestandardowe.
Można dodać dowolną liczbę plików tekstowych w szablonie projektu.Każdy szablon generuje jednego pliku wynikowego.
[!UWAGA]
Po zmianie definicji DSL kod przykładowy tekst szablonu nie będzie działać, dopóki nie zaktualizujesz go.
Aby uzyskać więcej informacji, zobacz Generowanie kodu w języku specyficzne dla domeny i Pisanie kodu, aby dostosować język specyficzne dla domeny.
Jeśli chcesz zmodyfikować definicję DSL, zamknij instancji eksperymentalnych i aktualizacji definicji w głównym Visual Studio instancji.
[!UWAGA]
Po zmodyfikowaniu definicji DSL, może spowodować utratę informacji w modelach badania, utworzone za pomocą wcześniejszych wersji.Na przykład debugowania roztwór zawiera plik o nazwie próbki, która zawiera niektóre kształty i łączniki.Po uruchomieniu rozwijać swoje definicji DSL, nie będą widoczne, a te zostaną utracone podczas zapisywania pliku.
Można utworzyć szeroką gamę rozszerzeń do linii DSL.Następujące przykłady da wrażenie możliwości.
Po każdej zmianie, Zapisz definicję DSL, kliknij Transform wszystkie szablony w Solution Explorer, a następnie naciśnij klawisz F5 do eksperymentowania z zmienionych DSL.
Zmień nazwę istniejącej klasy domeny i relacje.Na przykład począwszy od definicji Dsl, utworzony na podstawie szablonu minimalne języka, może wykonać następujące operacje zmiany nazwy, aby DSL, reprezentują drzew rodziny.
Na diagramie DslDefinition, Zmień nazwę ExampleModel na FamilyTreeModel, ExampleElement do osoby, cele do rodziców i dzieci źródeł.Można kliknąć każdej etykiety, aby ją zmienić.
Zmień nazwę elementu i łącznika narzędzia.
Otwórz okno Eksploratora DSL, klikając kartę w panelu Solution Explorer.Jeśli nie jest widoczny, na widoku menu wskaż Other Windows , a następnie kliknij przycisk DSL Explorer.DSL Explorer jest widoczny tylko wtedy, gdy diagram definicji DSL jest oknem aktywnym.
Otwórz okno właściwości i ustaw go tak, aby w tym samym czasie można zobaczyć DSL Explorer i właściwości.
W Eksploratorze DSL, rozwiń węzeł edytora, Karty przybornik, < DSL >, a następnie Narzędzia.
Kliknij przycisk ExampleElement.Jest to element przybornika, który jest używany do tworzenia elementów.
W oknie Właściwości zmień Nazwa właściwość, aby osoby.
Warto zauważyć, że Caption właściwość również się zmienia.
W ten sam sposób należy zmienić nazwę narzędzia ExampleConnector do ParentLink.Zmiana Caption właściwość, tak że nie jest kopią właściwość Name.Na przykład wprowadź łącze nadrzędne.
Odbuduj DSL.
Zapisz plik definicji DSL.
Kliknij przycisk Transform wszystkie szablony na pasku narzędziowym panelu Solution Explorer
Naciśnij klawisz F5.Poczekaj doświadczalnych wystąpienie Visual Studio jest wyświetlany.
W roztworze debugowanie w wystąpieniu doświadczalnych Visual Studio, otwórz plik modelu badania.Przeciągnij elementy go z przybornika.Należy zauważyć, że podpisy narzędzie i nazwy typu w Eksploratorze DSL uległy zmianie.
Zapisz plik modelu.
Otwórz plik .tt i zastąp stare nazwy typu i właściwości wystąpień nowe nazwy.
Upewnij się, że nazwa pliku, który jest określony w pliku .tt Określa model badania.
Zapisz plik .tt.Otwórz plik wygenerowany, aby wyświetlić wynik działania kodu w pliku .tt.Sprawdź, czy jest poprawna.
Dodaj właściwości do klasy domeny, na przykład do reprezentowania roku urodzenia i śmierci osoby.
Aby nowe właściwości widoczne na diagramie, należy dodać dekoratorów do kształtu, który wyświetla element modelu.Właściwości musi być również mapowane do dekoratorów.
Dodawanie właściwości.
Na diagramie definicji DSL, kliknij prawym przyciskiem myszy klasę domeny osoby, wskaż polecenie Dodaj, a następnie kliknij przycisk Domen właściwość.
Wpisz listę nowych nazw właściwości, takie jak urodzenia i śmierci.Naciśnij klawisz Enter po każdego z nich.
Dodać dekoratorów, które będą wyświetlane właściwości kształtu.
Wykonaj szara linia, która rozciąga się od klasy domeny osoby do drugiej stronie diagramu.To jest mapa elementu diagramu.Klasa domeny łączy do klasy shape.
Kliknij prawym przyciskiem myszy ten kształt klasy, wskaż polecenie Dodaj, a następnie kliknij przycisk Dekorator tekst.
Dodać dwie dekoratorów o nazwach takich jak BirthDecorator i DeathDecorator.
Zaznacz każdy nowy dekorator i w oknie dialogowym właściwości ustaw stanowisko pola.Określa, gdzie wartość właściwości domeny zostaną wyświetlone na kształcie.Na przykład ustawić InnerBottomLeft i InnerBottomRight.
Mapować dekoratorów właściwości.
Otwórz okno Szczegóły DSL.Zazwyczaj jest w zakładce obok okna dane wyjściowe.Jeśli nie jest widoczny, na widoku menu, wskaż Other Windows, a następnie kliknij przycisk Szczegóły DSL.
Na diagramie definicji DSL kliknij linię, którą łączy się klasy domeny osoby z klasy shape.
W Szczegóły DSL, z Mapy Dekorator kartę, kliknij pole wyboru na dekorator wyłączane.W Właściwości wyświetlania, wybierz właściwości domeny, z którym chcesz go mapowane.Na przykład mapować BirthDecorator urodzenia.
Zapisz DSL, kliknij przycisk Przekształć wszystkie szablony i naciśnij klawisz F5.
Przykładowy diagram modelu Sprawdź, czy można teraz kliknij wybrane pozycje i wpisz wartości w nich.Ponadto po zaznaczeniu kształtu osoby, okno właściwości wyświetla nowe właściwości urodzenia i śmierci.
W pliku .tt można dodać kod, który uzyskuje właściwości każdej osoby.
Klasy domeny i relacje można dodać do modelu.Na przykład można utworzyć nową klasę do reprezentowania miast i nowej relacji do reprezentowania, że osoba mieszkała w mieście.
Aby różne typy odrębne na diagramie modelu, można mapować klas domeny różnego rodzaju kształt lub kształty z inną geometrię i kolory.
Add class domeny i stał się elementem podrzędnym katalogu głównego modelu.
W diagramie definicji DSL, kliknij Osadzanie relacji narzędzie, kliknij główny klasy FamilyTreeModel, a następnie kliknij w pustym część diagramu.
Nowa klasa domeny wyowietlony, jest połączony z FamilyTreeModel z relacją osadzania.
Na przykład ustawić jego nazwę miasta.
[!UWAGA]
Każdej klasy domeny, z wyjątkiem głównego modelu muszą być cel co najmniej jedna relacja osadzania lub musi dziedziczyć z klasy, która jest przedmiotem osadzanie.Z tego powodu jest często wygodne utworzyć klasę domeny przy użyciu narzędzia osadzanie relacji.
Dodaj właściwość domeny do nowej klasy, na przykład nazwa.
Dodaj odwołanie relację między osobą i Miasto.
Kliknij przycisk Relacji odniesienia narzędzie, kliknij osobę, a następnie kliknij Miasto.
[!UWAGA]
Relacje odniesienia reprezentują odsyłacze z jednej części drzewa modelu do innego.
Dodawanie kształtu do reprezentowania miast na diagramach modelu.
Przeciągnij Geometrii kształtu z przybornika do diagramu i zmień go, na przykład TownShape.
W oknie dialogowym właściwości należy ustawić pola wyglądu nowego kształtu, takie jak kolor wypełnienia i geometrii.
Dodać Dekorator, aby wyświetlić nazwę miasta i zmień jego nazwę na NameDecorator.Ustaw jego właściwość Position.
Mapę miasta klasy domeny do TownShape.
Kliknij przycisk Mapę elementu diagramu narzędzie, a następnie kliknij przycisk klasy domeny Miasto i TownShape klasy shape.
W Mapy Dekorator na karcie Szczegóły DSL zaznaczone okno z łącznika mapę, sprawdzanie NameDecorator i ustawić Właściwości wyświetlania do nazwy.
Tworzenie łącznika do wyświetlania relacji między miastami i osoby.
Przeciągnij łącznik z przybornika do diagramu.Zmień nazwę i ustawić jej właściwości wyglądu.
Użyj Mapę elementu diagramu narzędzie, aby połączyć nowy łącznik relacji między osobą i Miasto.
Utworzyć narzędzie element dokonywania nowych miast.
W DSL Explorer, rozwiń węzeł edytora następnie Karty przybornik.
Kliknij prawym przyciskiem myszy < DSL > , a następnie kliknij przycisk Dodać nowe narzędzie elementu.
Ustaw Nazwa właściwości nowego narzędzia i zestaw jej klasy właściwość do miasta.
Ustaw Ikonę przybornika właściwości.Click [...] i w nazwę pliku pól, wybierz plik ikony.
Utworzyć narzędzie Łącznik dokonywania łącze między miastami i osób.
Kliknij prawym przyciskiem myszy < DSL > , a następnie kliknij przycisk Dodać nowe narzędzie Łącznik.
Właściwość Nazwa nowego narzędzia.
W ConnectionBuilder właściwość, zaznacz konstruktora, zawierający nazwę relacji Miasto osoby.
Ustaw ikonę przybornika.
Zapisz definicję DSL, kliknij Transform wszystkie szablony, a następnie naciśnij klawisz F5.
W wystąpieniu doświadczalnych Visual Studio, otwórz plik modelu badania.Używać nowych narzędzi do tworzenia miast i powiązań między miastami i osób.Zawiadomienie o tylko można utworzyć łącza między prawidłowe typy elementu.
Tworzenie kodu, który wyświetla miasta, w którym mieszka każdej osoby.Tekst szablony są jednym z miejsc, gdzie można uruchomić takiego kodu.Na przykład można zmodyfikować istniejący plik Sample.tt w roztworze debugowanie, aby zawierał następujący kod:
<#@ template inherits="Microsoft.VisualStudio.TextTemplating.VSHost.ModelingTextTransformation" debug="true" #> <#@ output extension=".txt" #> <#@ FamilyTree processor="FamilyTreeDirectiveProcessor" requires="fileName='Sample.ftree'" #> <# foreach (Person person in this.FamilyTreeModel.People) { #> <#= person.Name #><#if (person.Town != null) {#> of <#= person.Town.Name #> <#}#> <# foreach (Person child in person.Children) { #> <#= child.Name #> <# } } #>
Podczas zapisywania pliku *.tt, utworzy uzupełniającej plik, który zawiera listę osób i ich mieszkaniowej.Aby uzyskać więcej informacji, zobacz Generowanie kodu w języku specyficzne dla domeny.
Dalsze to DSL można rozwijać dodając ograniczeń sprawdzania poprawności.Te ograniczenia są metody, które można zdefiniować, które upewnij się, że model jest w odpowiednim stanie.Na przykład może zdefiniować ograniczenie, aby upewnić się, data urodzenia dziecka jest późniejsza niż jego rodziców.Funkcja sprawdzania poprawności wyświetla ostrzeżenie, jeśli użytkownik DSL podejmie próbę zapisania łamiącą ograniczeń modelu.Aby uzyskać więcej informacji, zobacz Sprawdzanie poprawności w języku specyficzne dla domeny.
Można także zdefiniować poleceń menu, które mogą być wywoływane przez użytkownika.Poleceń można modyfikować modelu.Można również interakcyjnie pracować z innych modeli w Visual Studio i z zasobów zewnętrznych.Aby uzyskać więcej informacji, zobacz Jak: Modyfikowanie standardowego polecenia Menu w języku specyficzne dla domeny.
Aby zezwolić innym użytkownikom użyć języka specyficzne dla domeny, rozpowszechniać Visual Studio pliku rozszerzenia (VSIX).To jest tworzony podczas konstruowania roztwór DSL.
Zlokalizuj plik .vsix w folderze bin rozwiązania.Skopiuj go do komputera, na którym chcesz go zainstalować.Na tym komputerze kliknij dwukrotnie plik VSIX.Modem DSL mogą być używane w wszystkie wystąpienia Visual Studio na tym komputerze.
Tą samą procedurą można użyć, aby zainstalować modem DSL na własnym komputerze, dzięki czemu nie trzeba używać doświadczalnych wystąpienie Visual Studio.
Aby uzyskać więcej informacji, zobacz Wdrażanie rozwiązań języka specyficzne dla domeny.
Jeśli została utworzona doświadczalnych DSLs nie jest już potrzebne, można je usunąć z komputera przez zresetowanie Visual Studio instancji doświadczalnych.
Spowoduje to usunięcie z komputera, wszystkie DSLs do celów doświadczalnych i innych celów doświadczalnych Visual Studio rozszerzeń.To są rozszerzenia, które zostały wykonane w trybie debugowania.
Ta procedura nie usuwa DSLs lub innych Visual Studio rozszerzeń, które zostały w pełni zainstalowane przez wykonywanie pliku VSIX.
Kliknij przycisk uruchomić, kliknij przycisk Wszystkie programy, Zestawu SDK programu Microsoft Visual Studio 2010, Narzędzia, a następnie zresetować instancji programu Microsoft Visual Studio 2010 doświadczalnych.
Odbuduj wszelkich DSLs doświadczalnych lub innych celów doświadczalnych Visual Studio rozszerzeń, które chcesz nadal używać.
Zrozumienia modeli, klasy i relacje