Avatar billede keepy Seniormester
23. november 2018 - 11:15 Der er 5 kommentarer

WCF kommunikation

Hej

Hvis man skal have en god, stærk og pålidelig WCF kommunikation mellem en server og X antal klinter, hvordan skal sådan en laves ?
Jeg tænker en server der:
Serveren Reager på broadcasts, Subscribe, UnSubscribe og Log
Serveren videre sender data fra alle klienter.
    Serveren kender ikke til oversættelsen af data til/fra andre klienter
Kommunikationen er simple, den er styret af en afsender adresse og en modtager adresse, og der bæres data med i format Json.

    Klinterne har deres eget data interface, sådan at indkommen data kun kan oversættes af den korrekte modtager.

Er der nogle der har gode inputs?

På forhånd tak.
Avatar billede arne_v Ekspert
23. november 2018 - 19:50 #1
Jeg er ikke sikker paa at jeg fortsaar spoergsmaalet.

WCF er rigtigt mange ting.

Du kan bruge HTTP(S), MQ og TCP som transport.

Du kan bruge SOAP XML, XML, JSON og binary som format.

Du kan host i ASP.NET eller i standalone program.

Du skriver at der bruges JSON som format, men har du ogsaa bestemt dog for resten (og i saa fald hvad) eller er det en del af spoergsmaalet?

Hvad betyder "god, stærk og pålidelig" egentligt? Hurtig svartid? Hoej volumen? Hoej oppetid? Kombination?
Avatar billede keepy Seniormester
26. november 2018 - 08:04 #2
Hej Arne
Jeg tænker hurtig svar og oppetid.
Server og klinker bliver lavet som almindelige WPF applicationer.
Transport bliver TCP.
Format JSON
Jeg kunne godt tænke mig at høre om mine tanker er old school, og i så fald hvad skulle man så gøre?
Avatar billede arne_v Ekspert
26. november 2018 - 20:20 #3
I et eller andet omfang er alt andet end JSON/HTTP jo nok old school.

:-)

WCF er generelt ikke superhurtig, men hvis du holder dig under 50000 kald per minut saa gaar det nok.

Og jeg antager at det er alt LAN og saa vil svartid ikke vaere noget problem.

Men jeg er ikke hekt sikker paa at jeg forstaar oppetids problematikken.

Hvis baade server og klienter er WPF applikationer paa forskellige PCere, saa er server vel nede hvis server PC lukkes ned.

Hvis vi taler klienter (WPF applikationer) og en decideret server, saa kan du jo overveje om du kan lave et server cluster for at sikre superhoej opeetid.

Hvis det er et stateless API, saa var det nemt at skifte fra TCP til HTTP og have en loadbalancer foran et server cluster.

Men ogsaa med TCP maa der vaere nogle muligheder. I det tilfaelde vil jeg dog nok haelde mest mod en active/passive loesning, hvor en standby server tager over.

Jeg maa dog indroemme at jeg ikke ved meget om hvordan man saetter saada noget op i Windows.Men jeg mener at det kan goeres.
Avatar billede keepy Seniormester
27. november 2018 - 07:47 #4
OK tak.
Hvad med udveksling af data klienter og server imellem ?
At have en sender og modtager adresse med i kaldet og data kun kan oversættes af modtageren.
Burde man hellere lave metoder med faste parameter man kaldte via serveren?

Min tanke er at gøre server delen let, så alle klienter ikke skal kende til et data interface der sikkert bliver rettet / tilføjet i over tid, så er det kun klienten der bruger det specifikke data der skal have opdateret data interfacet.
Avatar billede arne_v Ekspert
27. november 2018 - 21:39 #5
Jeg bliver mere og mere usikker paa hvad det er du forsoeger at lave.

WCF API er saa vidt jeg ved helt faste.

Er der tale om at klient #1 laver et kald:

string msg = pack(data:o)
send(modtager:"klient #2", payload:msg)

og klient #2 laver et kald:

string msg = get()
o = unpack(payload:msg)

?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester