794x
001921
2024-11-27

API II

Ten artykuł stanowi krótkie wprowadzenie do API II programu RFEM 6.

Czym jest API?

API (Application Programming Interface) to interfejs, za pomocą którego różne aplikacje oprogramowania mogą się ze sobą komunikować. API określa zasady, w jaki sposób informacje są wymieniane między programami.

Dzięki API II możliwe jest więc uzyskanie dostępu do funkcji RFEM 6 / RSTAB 9 za pomocą samodzielnie napisanego oprogramowania. Na przykład, można generować modele, tworzyć obciążenia, uruchamiać obliczenia, a następnie odczytywać wyniki.

W RFEM 6 / RSTAB 9 istnieje już API, czyli interfejs Webservice (API I). Ten interfejs pozostaje w użyciu. Oznacza to, że nie jest konieczne przełączanie wcześniej stworzonego oprogramowania na API II.

Jeśli w RFEM 6 / RSTAB 9 zostaną dodane nowe funkcjonalności, będą one dostępne tylko w API II. API I pozostaje "zamrożone" na obecnym poziomie.

Jakie są techniczne różnice w stosunku do "starego" API?

Na początek obydwa interfejsy opierają się na technologii Webservice. RFEM 6 / RSTAB 9 komunikuje się z oprogramowaniem klienckim za pośrednictwem protokołu HTTP (lub HTTPS).

W API I klient i serwer wymieniają wiadomości w formacie SOAP. W przeciwieństwie do tego, API II używa protokołu gRPC.

Za pomocą SOAP wiadomości są wymieniane w formacie XML. Komunikacja przy użyciu SOAP charakteryzuje się stosunkowo dużym obciążeniem.

W przeciwieństwie do tego, w gRPC wiadomości są wymieniane w lekkim formacie binarnym opartym na paketach protokołów. Jest to znacznie bardziej wydajne niż formaty tekstowe, takie jak XML czy JSON.

gRPC korzysta z nowego protokołu HTTP/2, co również czyni transmisję bardziej wydajną.

W nowym API II można łączyć wiele obiektów w jedną listę i przesyłać je razem. Nie trzeba już wykonywać wielu małych wywołań API, ale tylko kilka, co również zwiększa wydajność. W poniższym przykładzie pokazano, jak działa ta technika wsadowa.

Wszystkie te działania na rzecz zwiększenia wydajności prowadzą do tego, że komunikacja poprzez nowe API II jest około 10 razy szybsza niż poprzez API I.

API II pozwala na uruchomienie tego samego kodu na trzech różnych platformach bez zmian.

  1. Jako samodzielny program w Pythonie, który "z zewnątrz" uzyskuje dostęp do lokalnej lub w sieci zainstalowanej aplikacji RFEM 6.
  2. W wewnętrznej konsoli skryptów RFEM 6.
  3. W chmurze Dlubal.

Samodzielny program

Na Twoim komputerze zainstalowane jest standardowe RFEM 6. Twój program w Pythonie komunikuje się z RFEM za pomocą API II.

Konsola skryptów

Twój skrypt jest uruchamiany bezpośrednio w konsoli skryptów RFEM.

Chmura Dlubal

Dla tego scenariusza nie trzeba instalować RFEM lokalnie. Tworzysz swój program aplikacji, który komunikuje się z serwerem w chmurze Dlubal. Twój program aplikacji generuje dane struktur i obciążeń na serwerze. Obliczenia są wykonywane na serwerze. Twój program aplikacji odczytuje wyniki z obliczeń i je analizuje.

Co się zmienia w rozliczeniach?

Za korzystanie z starego API I była naliczana miesięczna opłata abonamentowa, niezależnie od rzeczywistego użytkowania.

Z nowym API II zmienia się to na model rozliczeniowy zależny od użytkowania. Oznacza to, że wywołanie niektórych funkcji API jest płatne. Opłaty są naliczane w kredytach Dlubal. Kredyty te można zakupić w sklepie internetowym.

Generowanie klucza API

Do korzystania z API II, oprócz abonamentu Webservice, potrzebny jest klucz API. Klucz API to fragment tekstu służący do identyfikacji i uwierzytelniania.

Użytkownik może generować klucze API w ekstranecie.

Każdy z wygenerowanych kluczy API jest przypisany do firmy. To znaczy, że każdy użytkownik, który jest przypisany do firmy, może używać tych kluczy.

Możliwe jest, i często także sensowne, generowanie kilku kluczy API. Nie powoduje to dodatkowych kosztów. Jest to na przykład sensowne, aby wygenerować osobny klucz dla każdego projektu. Użytkownik może dzięki temu odróżniać różne projekty w swoich wewnętrznych rozliczeniach.

Instalacja interfejsu

Pakiet dla interfejsu jest dostępny przez PiPI. Za pomocą poniższego polecenia zainstalujesz pakiet:


pip install dlubal.api

Przykład programu

W małym przykładzie, pokazane jest użycie nowego API II. Utworzony zostanie wspornik złożony z IPE 200.

Oto kod programu:


import dlubal.api.rfem as rfem

with rfem.Application() as rfem_app:

    rfem_app.create_model(name='cantilever')
    rfem_app.delete_all_objects()

    inf = float('inf')

    structure = [
        rfem.structure_core.Material(
            no=1,
            name='S235'
        ),
        rfem.structure_core.Section(
            no=1,
            name='IPE 200',
            material=1
        ),
        rfem.structure_core.Node(
            no=1
        ),
        rfem.structure_core.Node(
            no=2,
            coordinate_1=6.0
        ),
        rfem.structure_core.Line(
            no=1,
            definition_nodes=[1, 2]
        ),
        rfem.structure_core.Member(
            no=1,
            line=1,
            section_start=1
        ),
        rfem.types_for_nodes.NodalSupport(
            no=1,
            nodes=[1],
            spring_x=inf,
            spring_y=inf,
            spring_z=inf,
            rotational_restraint_x=inf,
            rotational_restraint_y=inf,
            rotational_restraint_z=inf
        ),
    ]

    rfem_app.create_object_list(structure)

Na początku importowana jest biblioteka RFEM.

Za pomocą polecenia with tworzona jest instancja rfem_app z tej klasy. Jako argument funkcji rfem.Application() można przekazać klucz API. Ze względów bezpieczeństwa nie zaleca się tego. Zamiast tego klucz API powinien być zapisany w pliku config.ini. Jak dokładnie to działa, opisano w szczegółowej dokumentacji API II:

W następnej linii, za pomocą metody rfem_app.create_model(name='cantilever'), tworzony jest nowy model RFEM. Nazwa modelu może być przekazana jako parametr.

Na kolejnych liniach programu nowe API II zasadniczo różni się od "starego" podejścia w API I. W liście structure najpierw definiowane są elementy konstrukcyjne. Następnie są one przekazywane wspólnie za pomocą polecenia rfem_app.create_object_list(structure).


Autor

Pan Faulstich jest odpowiedzialny za zapewnienie jakości programu RFEM i zapewnia wsparcie klienta.

Odnośniki


;