Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Koppling source & destination

Postades av 2008-11-26 20:12:53 - Martin Adrian, i forum arkitektur, Tråden har 3 Kommentarer och lästs av 1708 personer

Jag bygger olika applikationer som oftast ser ut ungefär på följande sätt:

class Source {
JobData GetJobData();
JobDone(Result);
};

class Destination {
Result DoJob(JobData);
};

Source och destination kan vara databaser, filer, webbservice, special api:er etc
Triggningen av jobb kan ske via knapp i GUI, med timer, filesystemwatcher etc

Principen är enkel:
- Hämta jobb (Source.GetJobData)
- Utför jobb (Destination.DoJob)
- Rapportera jobb klart (Source.JobDone)

Frågan är hur jag bygger ihop ett system av det hela.

Kan tänka mig två olika vägar:

1. Särskild klass med oberoende source & destination
Main() {
jobdata = source.GetJobData();
result = destination.DoJob(jobdata);
source.JobDone(result)
}

2. Beroende source och destination (troligen med Interface)
Main() {
destination.DoJob(new Source);
eller
source.DoJob(new Destination);
}

I mina applikationer är jobdata/result alltid olika så source & destination delar på datatyper men anropar inte varandra.

När jag bygger applikationerna börjar jag enligt metod 1 ovan. Det blir då lätt att ta fram source och destinaton och de går att testa var för sig utan alltför mycket simulerande.

Tyvärr finns det nästan alltid något som stör symmetrin i systemet. Destination behöver fråga source om mer data för att kunna utföra jobbet eller måste rapportera tillbaka delar av jobbet innan allt är klart. Ibland finns det 2 source och/eller destination. Varje gång blir Main rutinen inbland.

Det blir då ungefär så här:
Source.GetJobData1();
Destination.DoJob();
if (Destination.Moredataneeded) {
Source.GetMoreJobData();
Destination.DoJobPart2();
}
...

Plötsligt blir det en massa svårtestad kod bara för att hålla isär source och destination. Speciellt krånglig blir felhanteringen. Om destination kastar ett undantag måste ändå den delen av jobbet som är klar rapporteras tillbaka till source (eller rapportera det som inte blev klart). Än värre blir det om source kastar undantag i GetMoreJobData...

Får alltid ihop det till slut men det blir aldrig några riktiga enhetstester av Main delen vilket irriterar mig
Har aldrig provat 2 för den känns så jobbig från början när man måste skapa interface och simulera source eller destination för att testa. Projekten är oftast små (10-20 timmar) så jag kan inte lägga för mycket tid på att bygga mocks.

Hoppas på att det finns någon smart lösning som jag inte tänkt på.


Svara

Sv: Koppling source & destination

Postades av 2008-11-27 10:00:30 - Fredrik Normén

När jag snabbt läste genom ditt inlägg så ser det ut som att du skapar olika flöden. Har du funderat över att använda dig av Microsoft Workflow Foundation för detta?

Du skriver att du inte hinner skapa Mocks.. men du nämner att du skriver tester.. så med andra ord har du integration tester och det kräver ofta mer tid och erfarenhet att hanter dom rätt än att skapa stubbar och mock, bara en tanke ;)

När det gäller att skicka in fler source/destination, så kan du använda dig av Abstract Factory pattern http://www.dofactory.com/Patterns/PatternAbstract.aspx. Du kan använda dig av ett Dependecny Injection ramverk för att enkelt skapa upp dina beroenden och få automatiskt injection av sources och destinations.


Svara

Sv: Koppling source & destination

Postades av 2008-11-27 18:38:26 - Andreas Öhlund

Låter lite grann som "Saga:s" i NServiceBus...

http://www.udidahan.com/2008/02/04/sagas-and-unit-testing-business-process-verification-made-easy/


Svara

Sv:Koppling source & destination

Postades av 2008-11-27 21:57:50 - Martin Adrian

Tack för förslagen. WF kanske är det jag skall titta på. Det är iallafall en ny infallsvinkel.

Tidigare när jag tittat lite på WF har det dock känts lite omständigt. Skicka parametrar i dictionarys, skriva villkor i dialogrutor och sånt. För tillståndsmaskiner är det nog bra men för rena sekvenser vet jag inte.

Jag skall dock ta och prova med ett litet projekt jag har på gång och se var jag hamnar.

Någon som kan rekommendera en bok om WF.


Svara

Nyligen

  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 894
27 965
271 778
664
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies