BpNexT.NET

Der typsichere .NET Wrapper für microtech Büro+ - wahlweise über die moderne GraphQL-Schnittstelle oder die COM-Aktiv-Schnittstelle (Legacy).

Weniger Code

Aus rohen GraphQL-Strings wird moderner .NET Code. Mit BpNexT.NET.GraphQL entfällt viel Boilerplate.

Type safety & IntelliSense

Stark typisierte GraphQL-Modelle liefern Vorschläge beim Tippen und minimieren Fehler - schneller zur richtigen API.

Intelligente Abfragen

LINQ-Ausdrücke werden in passende GraphQL-Queries überführt - einfach zu sauberem und wartbarem Code.

Modernes .NET für die microtech GraphQL-Schnittstelle

Queries und Mutations in GraphQL sind oft aufwendig und fehleranfällig. BpNexT.NET.GraphQL abstrahiert diese Eigenheiten und ermöglicht Entwicklung nach modernen .NET Standards.

Direkte GraphQL Query
using var httpClient = new HttpClient
{
    BaseAddress = new Uri("https://api.example.test/graphql/v1")
};
httpClient.DefaultRequestHeaders.Authorization =
    new AuthenticationHeaderValue("Bearer", token);

var query = """
    {
      tblAddresses {
        rowsRead(
          # Range setzen von 'Kunde' bis 'Lieferant'
          allBetween: {
            byStatus: {
              kf1Status: {
                from: { string: "Kunde" }
                to: { string: "Lieferant" }
              }
            }
          }
          # Filter, um genau Kunde ODER Lieferant zuzulassen
          fastFilter: {
            or: [
              { eq: [{ field: fldStatus }, { value: "Kunde" }] }
              { eq: [{ field: fldStatus }, { value: "Lieferant" }] }
            ]
          }
        ) {
          fldID
          fldStatus
          fldBranche
        }
      }
    }
    """;

// Request Payload zusammenbauen
var graphQlRequest = new
{
    query
};

// Query ausführen
var response = await httpClient.PostAsJsonAsync("", graphQlRequest);
response.EnsureSuccessStatusCode();

// JSON lesen und dynamisch in Ergebnisliste mappen
var json = await response.Content.ReadAsStringAsync();
using var document = JsonDocument.Parse(json);

var result = new List<(int ID, string Branche, string Status)>();
var rows = document.RootElement
    .GetProperty("data")
    .GetProperty("tblAddresses")
    .GetProperty("rowsRead");

foreach (var row in rows.EnumerateArray())
{
    result.Add((
        row.GetProperty("fldID").GetInt32(),
        row.GetProperty("fldBranche").GetString() ?? string.Empty,
        row.GetProperty("fldStatus").GetString() ?? string.Empty
    ));
}
BpNexT.NET.GraphQL
var kundenUndLieferanten = bpApp
    .QueryDataSet<Addresses>()
    .Where(a => a.Status == "Kunde" || a.Status == "Lieferant")
    .Select(a => new { a.ID, a.Branche, a.Status })
    .ToList();

Nachteile direkter GraphQL-Nutzung

  • String-basierte Queries/Mutationen sind fehleranfällig
  • Weniger Compile-Time-Sicherheit bei Feld-/Argumentnamen
  • Höherer Pflegeaufwand bei API-Änderungen

Vorteile BpNexT.NET.GraphQL

  • Bis zu 60% weniger Code, deutlich les- und wartbarer
  • Automatische Query-Erstellung via LINQ
  • Type safety und IntelliSense out of the box

Weniger Code

Aus kryptischen COM-Zugriffen wird moderner .NET Code. Mit BpNexT.NET entfällt nahezu jeglicher Boilerplate.

Type safety & IntelliSense

Stark typisierte Models liefern Vorschläge beim Tippen und minimieren Fehler - schneller zur richtigen API.

Intelligente Abfragen

LINQ-Ausdrücke werden auf passende Büro+ Indizes und Filter abgebildet - einfach zu sauberem und wartbarem Code.

Modernes .NET für die klassische COM-Aktiv-Schnittstelle

Bringen Sie Ihre Büro+-Anbindung ins Jahr 2025. BpNexT.NET abstrahiert die COM-Aktiv-Schnittstelle nahezu vollständig und ermöglicht die Entwicklung mit modernen .NET Standards.

Büro+ COM Aktiv Schnittstelle
AutoDataSet ds = bp.DataSetInfos["Adressen"].CreateDataSet();

// Index wählen
ds.Indices["Status"].Select();

// Range setzen (von "Kunde" bis "Lieferant")
ds.SetRangeStart();
ds.KeyFieldCount = 1;
ds.Fields["Status"] = "Kunde";
ds.SetRangeEnd();
ds.KeyFieldCount = 1;
ds.Fields["Status"] = "Lieferant";
ds.ApplyRange();

// Filterstring, um genau Kunde ODER Lieferant zuzulassen
ds.Filter = "Status = 'Kunde' OR Status = 'Lieferant'";
ds.Filtered = true;

var result = new List<(int ID, string Branche, string Status)>();
while (!ds.Eof)
{
    result.Add((
        (int)ds.Fields["ID"].Value,
        (string)ds.Fields["Branche"].Value,
        (string)ds.Fields["Status"].Value
    ));
    ds.Next();
}
BpNexT.NET
var kundenUndLieferanten = bpApp
    .QueryDataSet<Adressen>()
    .Where(a => a.Status == "Kunde" || a.Status == "Lieferant")
    .Select(a => new { a.ID, a.Branche, a.Status })
    .ToList();

Nachteile COM Aktiv Schnittstelle

  • Viel Boilerplate
  • Komplexer und fehleranfälliger Code
  • Keine IntelliSense-Unterstützung

Vorteile BpNexT.NET

  • Bis zu 60% weniger Code, deutlich les- und wartbarer
  • Automatische Index- und Filterwahl via LINQ
  • Type safety und IntelliSense out of the box

Ein API-Modell. Zwei Anbindungen.

COM und GraphQL greifen auf dieselbe komplexe Büro+-Datenwelt zu. BpNexT.NET modernisiert den Zugriff darauf und macht ihn in .NET deutlich einfacher nutzbar.

Lizenz & Kontakt

Lizenzmodelle für unterschiedliche Teamgrößen und Szenarien.

  • OEM: für Softwarehersteller mit eigenem Produktvertrieb
  • Inhouse: für interne Nutzung im eigenen Unternehmen
  • Staffelung: Einzelentwickler • Teams (bis 10) • Enterprise (unbegrenzt)