Первые шаги с Lino
Lino — это инструмент командной строки для создания, развития и стандартизации профессиональных .NET-приложений с четко определенной архитектурой. Он автоматизирует повторяющиеся задачи scaffolding, но его цель выходит за рамки генерации файлов: Lino проводит разработчика через согласованную техническую структуру с разделением обязанностей, явными слоями, моделированием домена, use cases, APIs, интеграциями, событиями, персистентностью, web-приложениями и сквозными возможностями. Цель — ускорить старт и развитие реальных систем без отказа от качества, трассируемости и архитектурной ясности.
Предварительные требования
Перед установкой Lino проверьте, что ваша среда правильно подготовлена:
- ✅ Установлен .NET 10.0 SDK или выше. Скачать .NET
- ✅ .NET CLI доступна в терминале. Проверьте с помощью:
dotnet --version - ✅ Git установлен для контроля версий. Скачать Git
- ✅ Entity Framework Core CLI установлена для поддержки migrations:
dotnet tool install --global dotnet-ef - ✅ Контейнерная среда, совместимая с OCI, например Docker Desktop или Podman.
Совместимость с платформами
Lino является кроссплатформенным и может использоваться в основных операционных системах:
- ✅ Windows
- ✅ macOS
- ✅ Linux
Установка
Lino распространяется как глобальный инструмент .NET. Перед продолжением убедитесь, что установлен .NET 10 SDK или выше.
Чтобы установить последнюю версию, выполните:
dotnet tool install --global Tolitech.Lino
После установки проверьте работу Lino, выполнив:
lino --version
Если установка выполнена успешно, установленная версия будет показана в терминале.
Аутентификация
После установки Lino необходимо выполнить аутентификацию, чтобы получить доступ ко всем возможностям.
Если у вас уже есть учетная запись, войдите с помощью команды:
lino auth login
Вам будет предложено указать:
- Пользователь: ранее зарегистрированный адрес электронной почты.
- Пароль: пароль, связанный с учетной записью.
Если у вас еще нет учетной записи, зарегистрируйтесь напрямую через CLI:
lino user register
Во время регистрации укажите:
- Имя: имя пользователя.
- Фамилия: фамилия пользователя.
- E-mail: адрес электронной почты, который также будет использоваться для входа.
- Пароль: надежный пароль длиной не менее 6 символов.
- Подтверждение пароля: введите пароль еще раз для проверки.
После завершения регистрации пользователь будет автоматически аутентифицирован.
Языковые настройки
По умолчанию Lino CLI отображается на английском языке en, но вы можете изменить язык по своему предпочтению среди доступных вариантов:
en | pt | es | de | fr | it | ja | ko | ru | zh
Чтобы задать новый язык, выполните следующую команду:
lino preferences culture set --name <culture>
Замените <culture> одной из поддерживаемых культур. Например, используйте pt для португальского, en для английского или es для испанского.
Также можно выбрать язык из интерактивного списка:
lino preferences culture set
Настройка кодировки UTF-8 (необязательно)
Для корректного отображения языков со специальными символами (например, японского, корейского, русского или китайского) убедитесь, что ваш терминал настроен на использование кодировки UTF-8.
В Windows PowerShell настройте кодировку, выполнив следующие команды:
[console]::InputEncoding = [System.Text.Encoding]::UTF8
[console]::OutputEncoding = [System.Text.Encoding]::UTF8
Примечание: В Linux, macOS и Windows Terminal поддержка UTF-8 обычно встроена. Тем не менее рекомендуется проверить конфигурацию, если возникают проблемы с отображением символов.
Доступные команды
Lino организует автоматизацию в группы команд. Каждая группа представляет архитектурное намерение: создать solution, добавить сервисы, смоделировать домен, открыть APIs, сгенерировать страницы, настроить интеграции, управлять migrations, версионировать артефакты и подготовить builds.
Самый надежный справочник для вашей машины — помощь самой установленной CLI. Используйте lino --help, чтобы увидеть полное дерево команд, и используйте --help в любой группе, чтобы посмотреть параметры, aliases, обязательные аргументы и примеры.
Поскольку Lino постоянно развивается, между версиями могут появляться новые команды и параметры. Рассматривайте эту документацию как руководство по использованию и подтверждайте точный синтаксис в терминале всякий раз, когда автоматизируете workflow или обучаете кого-то из команды.
Чтобы вывести список доступных команд, выполните корневую команду или явно запросите справку:
lino lino --help
lino --help lino project --help lino database migrations --help lino integration operation --help
Чтобы просмотреть подкоманды и параметры любой группы, используйте имя команды отдельно или сочетайте его с --help:
lino <command> lino <command> --help
Например, при просмотре группы project CLI показывает описание группы, типичные примеры и доступные подкоманды:
lino project --help
ОПИСАНИЕ:
Управляет проектами Lino.
ПРИМЕРЫ:
lino project new --name MyProject
lino project list
КОМАНДЫ:
new Создает новый проект.
list Выводит список созданных проектов.
delete Удаляет существующий проект.В примерах значения между <...> обозначают аргументы, которые нужно заменить реальным значением вашего проекта. Например, <ProjectName> нужно заменить именем solution, <ServiceName> — именем сервиса, а <culture> — поддерживаемой культурой, например pt или en.
Основные группы команд:
| Группа | Основные команды | Использование |
|---|---|---|
project |
new, list, delete |
Создает, перечисляет и удаляет проекты Lino. |
service |
new, list, delete |
Добавляет, перечисляет и удаляет backend-сервисы. |
module |
new, list, delete |
Добавляет, перечисляет и удаляет модули внутри модульных сервисов. |
entity |
new, edit, list, delete |
Создает, редактирует, перечисляет и удаляет доменные сущности. |
shadow-entity (shadow) |
new |
Создает контролируемые локальные копии данных из другого модуля или сервиса. |
enumeration (enum) |
new, edit, list, delete |
Создает, редактирует, перечисляет и удаляет доменные перечисления. |
value-object (vo) |
new, edit, list, delete |
Создает, редактирует, перечисляет и удаляет Value Objects. |
property (prop) |
delete |
Удаляет свойства из доменных сущностей. |
command |
new, list |
Генерирует сценарии записи, обычно связанные с изменениями состояния, транзакционными правилами и проверками намерения. |
query |
new, list |
Генерирует сценарии чтения, обычно ориентированные на запросы, проекции и возврат данных без изменения состояния. |
api |
new, list |
Генерирует и перечисляет API endpoints для use cases. |
web-app (webapp) |
new |
Добавляет web-приложения. |
page |
new, edit, list |
Генерирует, редактирует и перечисляет страницы Blazor. |
event |
new, edit, list |
Создает и поддерживает доменные или интеграционные события. |
event-handler (handler) |
new, list |
Создает и перечисляет обработчики событий. |
error-definition (error) |
new, list |
Создает стандартизированные определения ошибок. |
integration |
new, list, resource (new/list), operation (new/list), consume |
Моделирует интеграции, resources, операции и потребителей. |
feature |
background-job add, auth add, tenant add |
Добавляет сквозные функции, включая фоновые задачи, аутентификацию и мультитенантность. |
database migrations |
add, remove, list, apply, revert |
Управляет migrations Entity Framework Core. |
secret |
list, set, remove, clear |
Управляет локальными secrets проекта. |
plan |
add |
Регистрирует план выполнения с поддержкой ИИ. |
version |
show, list, bump |
Просматривает и повышает версии сервисов и web apps. |
build |
- | Генерирует артефакты и container images. |
user |
register |
Регистрирует пользователя для доступа к аутентифицированным возможностям Lino. |
auth |
login, logout |
Управляет локальной сессией CLI, включая аутентификацию и завершение сеанса. |
preferences |
culture set |
Настраивает локальные предпочтения CLI, например язык, отображаемый в интерактивных командах. |
Некоторые команды для удобства показывают короткий alias в скобках. Исходные имена остаются основной ссылкой для чтения, документации, обучения, автоматизации и поддержки.
Быстрый старт
Быстро создайте современное, масштабируемое .NET-приложение, готовое к постоянному развитию, с помощью следующей команды:
lino project new --name <ProjectName>
Замените <ProjectName> реальным именем вашей solution. Например, чтобы создать проект с именем MyApp, выполните lino project new --name MyApp.
Эта команда генерирует структурированную .NET solution с четким разделением между доменом, приложением, инфраструктурой, персистентностью, API, оркестрацией и тестами. Начальная структура помогает сохранять архитектурные решения видимыми с первого commit, не позволяя смешивать бизнес-правила, доступ к данным, endpoints и операционные детали в одном месте.
Визуально начальную solution с именем MyApp можно представить так:
MyApp/ ├── MyApp.slnx ├── src/ │ ├── Aspire/ │ │ ├── AppHost/ │ │ │ └── MyApp.AppHost.csproj │ │ └── ServiceDefaults/ │ │ └── MyApp.ServiceDefaults.csproj │ └── Services/ │ └── Shared/ │ ├── Api/ │ │ └── MyApp.Shared.Api.csproj │ ├── Application/ │ │ └── MyApp.Shared.Application.csproj │ ├── Domain/ │ │ └── MyApp.Shared.Domain.csproj │ ├── Infrastructure/ │ │ └── MyApp.Shared.Infrastructure.csproj │ └── Infrastructure.Persistence/ │ └── MyApp.Shared.Infrastructure.Persistence.csproj └── tests/
Это дерево является учебным примером структуры, генерируемой для проекта пользователя. Оно показывает, как solution с самого начала разделяет локальное выполнение, сервисы, технические слои и тесты.
Что дает начальный проект
Начальная solution, созданная Lino, сразу организована по техническим обязанностям. Вместо пустого проекта CLI подготавливает основу со слоями и компонентами, подходящими для корпоративных приложений.
| Область | Ответственность |
|---|---|
| Domain | Содержит сущности, Value Objects, enumerations, доменные события, контракты репозиториев и правила, относящиеся к бизнесу. |
| Application | Оркестрирует use cases, commands, queries, валидации, handlers и входные и выходные контракты приложения. |
| Infrastructure | Изолирует внешние детали, такие как вспомогательные сервисы, интеграции, providers, аутентификация, messaging и сквозные возможности. |
| Persistence | Централизует mappings, контекст базы данных, migrations, конкретные репозитории и unit of work. |
| Api | Открывает endpoints, HTTP-контракты, фильтры, аутентификацию, авторизацию и входную документацию для внешних потребителей. |
| Оркестрация | Подготавливает локальный запуск компонентов, базовую observability и интеграцию между сервисами во время разработки. |
| Tests | Организует тесты по ответственности, позволяя постепенно проверять домен, приложение, APIs и интеграции. |
Имя, указанное в <ProjectName>, становится частью технической идентичности solution. Выберите короткое, стабильное и представительное имя, потому что оно будет использоваться в namespaces, assemblies, артефактах, конфигурациях и ссылках между компонентами.
Основные преимущества:
- Явная архитектура: разделение между бизнес-правилами, use cases, инфраструктурой, персистентностью и входными контрактами.
- Модульное развитие: основа подготовлена для традиционных сервисов, модульных монолитов, микросервисов и SaaS-приложений, когда этого требует контекст.
- Согласованные технические стандарты: поддержка DDD, Clean Architecture, CQRS, событий, интеграций, migrations, тестов и observability.
- Меньше механической работы: генерация повторяющихся структур, чтобы разработчик сосредоточился на домене, правилах, контрактах и продуктовых решениях.
- Более предсказуемый код: соглашения об именовании, организация папок и ответственность уменьшают неоднозначность между участниками команды.
С Lino разработчик начинает не с пустой папки и не с generic template. Он начинает с opinionated-основы, рассчитанной на корпоративные системы, где каждый сгенерированный артефакт имеет ясную техническую функцию и может развиваться постепенно.
