# azure-durable-functions-csharp

Задаёт стандарты разработки Azure Durable Functions на C# в изолированной модели воркера. Помогает писать детерминированные оркестраторы и настраивать очереди.

- правило · `type=rule` · GitHub Copilot · ★ 40418
- Автор: github · официальный репозиторий GitHub
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/github/awesome-copilot/tree/HEAD/instructions/azure-durable-functions-csharp.instructions.md
- Обновлён: 2026-10-23
- HTML: https://affpapa.org/nevibecode/rules/azure-durable-functions-csharp

## Что делает

Правило настраивает GitHub Copilot на работу с изолированной моделью воркера через пакет `Microsoft.Azure.Functions.Worker.Extensions.DurableTask`. Код делится на отдельные файлы по фичам. Оркестраторы только координируют шаги. Любая фактическая работа выносится в активности.

Главное требование касается детерминизма. Внутри функций оркестрации Copilot исключает прямые вызовы HTTP и генераторы вроде `Guid.NewGuid()`. Вместо системных часов применяется `context.CurrentUtcDateTime`. Обычный `ILogger` тоже запрещён. Логи пишутся через `context.CreateReplaySafeLogger`, чтобы избежать повторов при воспроизведении шагов.

Конфигурация охватывает `host.json` и `local.settings.json`. Без строки `AzureWebJobsStorage` в эмуляторе Azurite локальный запуск сразу сломается из-за отсутствия хранилища состояний. В правиле также описаны паттерны цепочек функций и разветвления через `Task.WhenAll`.

## Требования
- Работает с: Azure

## Установка

### GitHub Copilot (родная платформа)

**Вручную: положить файлы**
- Файл: `.github/instructions/azure-durable-functions-csharp.instructions.md` — Поле applyTo задаёт, к каким файлам применять

### Claude Code

**Вручную: положить файлы**
- Файл: `.claude/rules/azure-durable-functions-csharp.md` — Поле paths во frontmatter ограничивает файлы: applyTo из источника → paths

### Codex

**AGENTS.md**
- Codex читает AGENTS.md: вставьте текст правила туда

### Cursor

**Вручную: положить файлы**
- Файл: `.cursor/rules/azure-durable-functions-csharp.mdc` — Во frontmatter: description, globs, alwaysApply. applyTo из источника → globs, иначе правило само не подключится

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/rules/azure-durable-functions-csharp.md`

### Cline

**Вручную: положить файлы**
- Файл: `.clinerules/azure-durable-functions-csharp.md`

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/github/awesome-copilot/tree/HEAD/instructions/azure-durable-functions-csharp.instructions.md

## Когда брать
- Настроить изолированную модель воркера с пакетом `Microsoft.Azure.Functions.Worker.Extensions.DurableTask`.
- Исключить недетерминированные вызовы вроде `DateTime.UtcNow` и `Guid.NewGuid()` из оркестраторов.
- Настроить безопасное логирование через `CreateReplaySafeLogger` вместо обычного `ILogger`.
- Задать параметры хабов и очередей в `host.json` и `local.settings.json`.

## Примеры запросов агенту
- Создай оркестратор заказов с вызовом активностей через `CallActivityAsync` в модели `dotnet-isolated`.
- Добавь в `host.json` секцию `durableTask` с настройкой `hubName` и параметрами параллелизма.
- Реализуй ожидание внешнего события с таймаутом через `WaitForExternalEvent` и `CreateTimer`.

Из того же набора: [github/awesome-copilot](https://affpapa.org/nevibecode/by/github/awesome-copilot.md) — 732 карточки

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
