[C#] custom Node-Red alternatief - dev tools

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • NicoJuicy
  • Registratie: Januari 2009
  • Laatst online: 19-07 14:33
Mijn vraag:

Ik ben bezig met een dev-assistent applicatie ( nogal breed samengevat).

Enkele dingen die het bv. bevat:
- Feature Toggle integratie
- Settings configuratie (string,int, double, json)
- Settings variaties ( alpha, beta) -> ahv. json patch een "OverwriteEmailTo naar eigen email bv.) om test omgevingen te vereenvoudigen.
- Interfaces => Mapped naar Api Endpoints ( mbv. T4 templates)
- Swagger documentatie ( om uiteindelijk libraries/koppelingen te genereren voor verschillende programming languages)

Kortom, de tool doet al behoorlijk veel wat ik wens. Zo kan ik bv. op de IEmailInterface een AmazonSES implementatie aanmaken. Een andere IntegrationId gebruiken voor de testomgeving en alles wordt geladen in mijn IoC container.

De volgende stap is nu Visual Node-based Programming implementeren à la Node-Red om flows aan te maken ( bv. door een eindklant).

Hierbij zijn de nodes mijn integraties ( bv. IEmailService) en ahv. een ApiKey + IntegrationId wordt de correcte service geladen.

Echter heb ik problemen bij het backend gedeelte, nl. hoe pak ik dit het beste aan.

Eigenlijk heb ik een "Engine" nodig die "Input" & "Output" heeft ( 0 of meerdere).
Alles wordt opgeslaan in een GlobalContext, FlowContext & MessageContext ( à la node-red).

Ik wil gerust iemand betalen om te helpen om een PoC te ontwikkelen, want het lijkt me nu niet zo evident. Ik zie namelijk het "geheel" niet voor me, waardoor ik problemen heb om eraan te beginnen.

Het beste wat ik kon vinden ( qua nuttige code) was NServiceBus ( github ), maar dat is een ServiceBus implementatie en geen Node-Red alternatief.

Tree Expressions leken me ook nuttig om te gebruiken.

Maar momenteel is dat mijn "analyse", als ik het zo mag noemen. Behoorlijk onvoldoende dus.

Ik zou het appreciëren moest iemand andere inzichten / oplossingen kan aanreiken. Want zit momenteel al een maand vast bij de verdere uitwerking hiervan.

Relevante software en hardware die ik gebruik
.Net 4.6

Wat ik al gevonden of geprobeerd heb
- Voornamelijk opzoekingswerk naar eerdere voorbeelden in c#
- IRC-chats ( freenode - no success)
- Stackoverflow / Quora ( no success)
- Upwork ( no success)

[ Voor 8% gewijzigd door NicoJuicy op 17-02-2019 23:59 ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

Met engine bedoel je hetgeen dat daadwerkelijk de code gaat uitvoeren op de backend?

Edit: Het klinkt alsof je zo'n low-code ding aan het bouwen bent.

[ Voor 14% gewijzigd door Sandor_Clegane op 18-02-2019 14:32 ]

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • Batavia
  • Registratie: Mei 2011
  • Laatst online: 21:16
Ik denk dat je nog iets mist.

Service bus is gewoon voor communicatie tussen services. Als je dit wilt laten werken moet je een service draaien. Dit kan bijvoorbeeld een windows service zijn. Dit service luistert dan naar de relevante messages (bijvoorbeeld zet feature toggle x in web.config van project y naar waarde z) en voert deze dan uit.

Je kan er dan ook meerdere hebben. (Bijvoorbeeld een local email service die bepaalde mails afvangt, een certificaat service die het juist localhost certificaat managed, etc)

Voor sommige van deze sersvice lijken windows services mij ideale kanidaten, voor andere is een in node.js geschreven webapi misschien handiger en weer andere wil je misschien juist op een centrale server installeren.

Het 'mooie' is als je dan bijvoorbeeld een service bus gebruikt voor communicatie tussen alle onderdelen je ook dingen kan doen zoals een broadcast om te ontdekken welke services daadwerkelijk geinstalleerd zijn.

Verder heb je al eens gedacht om een aantal van dit soort dingen als 'simpele' visual studio plugins te maken? Als je doel niet een volledige low-code oplossing is dan kan je misschien iets kleiner beginnen als visual studio plugin en dan je mooie grafische node base programming interface daar bovenop maken.

[ Voor 8% gewijzigd door Batavia op 18-02-2019 14:37 ]


Acties:
  • 0 Henk 'm!

  • NicoJuicy
  • Registratie: Januari 2009
  • Laatst online: 19-07 14:33
NServiceBus is een soortgelijk project. Als je de Github bekijkt, dan zie je pipelining en endpoints ( in & out ) die gebruikt worden.

Het is niet hetzelfde als wat ik nodig heb, maar de architectuur van NServiceBus lijkt er wel enorm op.

De Engine zou inderdaad het schema ( json based vermoed ik) moeten uitvoeren. De Engine kan geplaatst worden op de backend, maar in theorie overal waarin het schema kan geladen worden.

Visual Studio Plugins lijken me overbodig, het is de bedoeling om een "WebIDE" te maken à la node-red. Ik veronderstel niet dat diegene die het (in de toekomst) gebruiken, kennis moeten hebben van Visual Studio.

De Feature Toggle implementatie staat los van het node-red alternatief en is enkel bedoeld als hulptool bij het ontwikkelen. Het is gebaseerd op FeatureToggle met een custom IFeatureToggle implementatie.

@Sandor_Clegane het is inderdaad een "low-code engine", maar weet de correcte benaming ook niet echt.

[ Voor 22% gewijzigd door NicoJuicy op 18-02-2019 20:30 ]


Acties:
  • 0 Henk 'm!

  • Sandor_Clegane
  • Registratie: Januari 2012
  • Niet online

Sandor_Clegane

Fancy plans and pants to match

NicoJuicy schreef op maandag 18 februari 2019 @ 20:28:
NServiceBus is een soortgelijk project. Als je de Github bekijkt, dan zie je pipelining en endpoints ( in & out ) die gebruikt worden.

Het is niet hetzelfde als wat ik nodig heb, maar de architectuur van NServiceBus lijkt er wel enorm op.

De Engine zou inderdaad het schema ( json based vermoed ik) moeten uitvoeren. De Engine kan geplaatst worden op de backend, maar in theorie overal waarin het schema kan geladen worden.

Visual Studio Plugins lijken me overbodig, het is de bedoeling om een "WebIDE" te maken à la node-red. Ik veronderstel niet dat diegene die het (in de toekomst) gebruiken, kennis moeten hebben van Visual Studio.

De Feature Toggle implementatie staat los van het node-red alternatief en is enkel bedoeld als hulptool bij het ontwikkelen. Het is gebaseerd op FeatureToggle met een custom IFeatureToggle implementatie.

@Sandor_Clegane het is inderdaad een "low-code engine", maar weet de correcte benaming ook niet echt.
Om eerlijk te zijn vind ik het wel tof. :)

Je hebt dus een aantal interfaces en die kun je met je eigen code "implementeren" en nu zoek je dus een manier om deze te runnen of niet? In een soort van applicatie server die de daadwerkelijke implementaties uitvoert.

Het probleem, als ik het goed begrijp, zit hem in het combineren van deze "applets" met elkaar?

[ Voor 6% gewijzigd door Sandor_Clegane op 18-02-2019 20:57 ]

Less alienation, more cooperation.


Acties:
  • 0 Henk 'm!

  • NicoJuicy
  • Registratie: Januari 2009
  • Laatst online: 19-07 14:33
Dat klopt. Daarvoor had ik graag het concept node Based programming toegepast.

De frontend is simpel, maar de engine is "andere koek".

De interfaces worden geïnitialiseerd ahv. IoC en ik kan ze nu reeds via een API aanroepen. Nu hoef ik ze eigenlijk enkel te hernoemen naar "nodes" en een manier vinden om ze te koppelen.

Bv. Een IOrderService heeft een UpdateOrder trigger. Via de koppeling wil ik controleren of het order werd afgerond. Als dat gebeurd is, wordt een node aanroepen die een pdf genereerd ( pakketbon) en deze e-mailt via de IEmailService + een bericht stuurt op de IMessageService ( MQTT bericht naar mijn gsm bv of een telegram chat bericht).

Voor elke node ( tot nu toe) heb ik enkel een ApiKey en IntegrationId nodig. Dit komt ongeveer overeen met "node properties", aangezien de settings in de web applicatie werden opgeslaan + via IoC geïnitialiseerd in een instance.

De techniek is vooral gekend in IoT, domotica en game development ( Unity).

De bedoeling is dat ik enkel nodes ontwikkel en zo functionaliteit in de backend enorm kan uitbreiden ( de gebruiker past deze aan).

De code voor de nodes is in theorie niets meer dan wrappers voor bestaande .net projecten ( of via Edge en peachpie wrappers voor php/nodjs modules). De methodes die je wilt + een SettingModel ( bv. endpoing:string, gebruikernaam:string, wachtwoord:string)

[ Voor 111% gewijzigd door NicoJuicy op 19-02-2019 00:51 ]

Pagina: 1