Pipevine

Framework .NET para escrever APIs e consumidores de mensageria declarativamente, em YAML — validação, mapeamento, persistência, cache, mensageria e integrações outbound, tudo como um pipeline de steps, sem escrever handler nenhum à mão. apiVersion: pipevine.dev/v1 está congelado, ver versionamento.

Por que Pipevine

A maior parte dos serviços HTTP e consumidores de eventos repete a mesma forma: receber dados, validar, consultar o banco, mapear para um modelo, persistir, publicar um evento. O que muda de um serviço para outro são as regras de validação, o formato do mapeamento e os nomes das entidades — não a estrutura. Pipevine deixa você declarar essa estrutura em YAML e mantém o código C# apenas para o que é realmente específico da sua aplicação (ou, no caminho conteinerizado, elimina até isso).

apiVersion: pipevine.dev/v1
kind: Application
metadata: { name: orders, version: 1.0.0 }
spec:
  type: api
  routes:
    - id: createOrder
      method: POST
      path: /orders
      pipeline:
        - type: validate
          rules:
            - { expr: "$count(input.body.items) > 0", code: EMPTY_ORDER, message: "pedido sem itens" }
        - type: map
          id: order
          to: vars.order
          expr: "{ 'id': $uuid(), 'total': $sum(input.body.items.(price * quantity)) }"
        - type: db.persist
          entity: Order
          data: vars.order
        - type: publish
          event: OrderCreated
          payload: vars.order
          mode: outbox
      response: { status: 201, body: vars.order }

Comece aqui

Guia completo

Da validação à observabilidade, um capítulo por assunto — veja o índice em guide/01-introducao.md ou navegue pela barra lateral.

Referência

Extensibilidade

Versionamento