API do programu WinForms

0

Witam.

Czy jest możliwość, a właściwie jak (bo możliwość pewnie jest) zrobić API do aplikacji WinForms?
Możecie rzucić jakieś hasła z którymi muszę się zapoznać?

Najprostszy przykład:
Mam formę z labelem i w API chce udostępnić możliwość zmiany tekstu tego labela.

Z góry dzięki.

0

Pisząc API masz na myśli jakieś WebAPI czy co konkretnie? Jeśli jakieś WebAPI to możesz wykorzystać do tego np. SignalR Self Host na zasadzie: WebAPI -> SignalR -> WinForm.

0

Nie, nie mam na myśli WebAPI (szukając w Google informacji na ten temat wszędzie znajdowałem właśnie o WebAPI).

Tak jak podałem w przykładzie:
Chce stworzyć program zawierający formę i label na niej.
A następnie udostępnić API tak aby z innego programu (również WinForms) móc zmienić tekst tego labela.

0

No to sprawa się upraszcza, korzystasz z SignalR po prostu.

0

@hipekk: nie masz aby na myśli jakiegoś systemu wtyczek - user pisze dll, który kopiuje do określonego folderu Twojego programu, program ją wczytuje przy starcie i daje jej jakieś możliwości?
Kiedyś na windowsie do czegoś takiego powstało DDE ale nie wiem czy to jeszcze jest "na topie". Np. MS Office do takich rzeczy używa COMów. No i zawsze możesz w aplikacji postawić serwer TCP i tak nią sterować

0

Można to zrobić za pomocą WCF'a i jako kanał komunikacji użyć potoków nazwanych (NetNamedPipeBinding), jeśli ma to być w obrębie jednej maszyny.

więcej można poczytać o tym w książce "Programming WCF Services, 4th Edition":

  • Hosting on the UI Thread strona 452
  • A Form as a Service strona 458
0

@abrakadaber: nie do końca chodzi mi o wtyczki.

W systemie ERP którego używamy jest udostępniana biblioteka dll, importuje się ją do swojego programu i za pomocą jej metod można wpływać na działanie, wygląd programu.
Chciałbym coś takiego zrobić u siebie.

Może działa to na zasadzie serwera tak jak napisaliście - o ile dobrze rozumiem wtedy wireshark powinien mi pokazać taką komunikację między "nakładką" a programem?

0

najprościej postawić serwis wcf na serwerze i komunikować się aplikacjami poprzez owy serwis, jeżeli obie aplikacje będą caly czas uruchomione można użyć duplex channel, jeśli nie to można składować aktualne wartości labelow na serwerze i po każdym wlaczeniu winforma szczytywać je poprzez serwis

1

@asvv: Najprościej to jak nie będzie żadnego serwera i serwisu WCF.

Niech aplikacja WinForms sama sobie hostuje (uruchamia) komunikację (nawet wspominane już NamedPipes albo coś innego, nawet AP.NET API) Albo jakiś lokalny serwis (usługa Windows) z komunikacją. Jeśli to nie musi być natychmiastowe to można to nawet przez DB przepchnąć. Odpalać jakąś infrastrukturę żeby tylko jakiegoś labela zmieniać to IMHO trochę za dużo.

Ten Form to będzie cały czas widoczny (utworzony)?

API do WinForms co do zasady jest chyba bez sensu. API powinno zapewniać dostęp do niższych warstw (serwisów), z których korzysta tez WinForms.

1 użytkowników online, w tym zalogowanych: 0, gości: 1