[Alg/N-tier Framework] Business layer DSL

Pagina: 1
Acties:
  • 376 views sinds 30-01-2008
  • Reageer

  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

Topicstarter
Ik moet binnen +/- een maand een nieuw framework beginnen schrijven, en ik ben op zoek naar inspiratie.
Enkele voorwaarden :
  • Zowel web- als windows based (of eventueel rich-client zoals Laszlo)
  • Flexibele business layer
  • Secure storage
  • Logging
  • ...
Met dit in het achterhoofd was ik dit artikel aan het lezen : Business logic op codeproject.com

Nu heb ik het volgende idee :
Implementeer een DSL in een scripting taal (ik dacht aan ruby omdat dit makkelijk te doen is) specifiek voor 1 welbepaald project.
Schrijf je business rules in deze DSL, en ontwerp ook unit-tests voor deze rules.

Werk effectief met een volledige separatie van je business logic, met slechts in uiterste noodgevallen (performantie, security) een implementatie op de server of de gui.

Voor synchronisatie tussen je business layer en je andere moet je natuurlijk standaard-protocollen gebruiken (XML /SOAP ? 'k heb er mij totaal nog niet op toegelegd :) )

Het grootste voordeel imho van deze aanpak zou zijn dat je een DSL kan gebruiken om je business rules aan te duiden, waardoor je deze misschien zelfs door power users zou kunnen laten implementeren (mits enige begeleiding natuurlijk). Een probleem in een DSL beschrijven is natuurlijk altijd eenvoudiger dan in een standaard programmeertaal...

Het grootste nadeel van deze aanpak is dat je natuurlijk voor elk project je eigen standaard-dsl moet gaan uitbreiden met specifieke rules, maar dit lijkt me niet onoverkomelijk...

Nu komt de vraag : bestaan er al dergelijke frameworks, of heeft er iemand ooit zoiets al eens zelf met succes geïmplementeerd ? Dus een business layer met een specifieke DSL voor elk probleem.

Opm : kom nu niet af met zaken zoals jbeans/struts/[om het even welk non-scripting/non-DSL framework], want die richting wil ik absoluut niet uit ...

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Begrijp ik het goed dat jij een nieuwe taal zo maar even uit de mouw wilt gaan schudden?

[edit]
check verder eens
Language workbench
en
Language oriented programming
en
Meta programming system

[ Voor 64% gewijzigd door Alarmnummer op 23-06-2005 18:28 ]


  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

Topicstarter
Alarmnummer schreef op donderdag 23 juni 2005 @ 18:22:
Begrijp ik het goed dat jij een nieuwe taal zo maar even uit de mouw wilt gaan schudden?
Nee, eerder in de bestaande taal een nieuwe laag toevoegen.
Het voordeel van ruby is dat de syntax 'hanteerbaarder' is.
Die van jetbrains had ik dus al eens gelezen, maar ik had eigenlijk zelf de link nog niet gelegd. Waarschijnlijk dat ik onbewust vandaar met mijn model gekomen ben... MPS lijkt me een beetje overkill, maar anderzijds is het systeem waarmee ge-edit wordt wel über...
Ik dacht eigenlijk aan ruby gezien de eenvoudige syntax (waarvan fowler trouwens blijkbaar zelf ook een voorbeeld geeft).

Wat me ideaal lijkt is een DSL-extensie bovenop ruby geschreven, die ge-edit wordt op basis van het systeem van mps (een soort hierarchische templates). :9~

Aiaiai, dat belooft druk te worden de volgende maanden ;)

[ Voor 5% gewijzigd door D4Skunk op 23-06-2005 19:01 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

D4Skunk schreef op donderdag 23 juni 2005 @ 18:59:
Aiaiai, dat belooft druk te worden de volgende maanden ;)
Hier is een community full time mee bezig en er zijn daar echt een enorme lading knappe koppen. Wat is jouw argument om binnen een afzienbare tijd zoiets voor jezelf in elkaar te kunnen zetten? Ik heb ook een aantal talen in elkaar gezet (voor oa ruleengines en een strakke prolog implementatie), maar hier ben je echt wel even mee bezig. Het probleemgebied waar jij mee te maken krijgt is meerdere orde van grotes groter dan die van mij...

Wil je dit commercieel in gaan zetten (op korte termijn)?

  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

Topicstarter
Alarmnummer schreef op donderdag 23 juni 2005 @ 19:02:
[...]

Hier is een community full time mee bezig en er zijn daar echt een enorme lading knappe koppen. Wat is jouw argument om binnen een afzienbare tijd zoiets voor jezelf in elkaar te kunnen zetten? Ik heb ook een aantal talen in elkaar gezet (voor oa ruleengines en een strakke prolog implementatie), maar hier ben je echt wel even mee bezig. Het probleemgebied waar jij mee te maken krijgt is meerdere orde van grotes groter dan die van mij...

Wil je dit commercieel in gaan zetten (op korte termijn)?
Ik ben momenteel echt nog mijn horizon aan het verruimen. De vraag is natuurlijk in welke mate de taal specifiek naar het domein moet aangepast worden. Ruby is an sich al een prachtige taal om zaken mee te omschrijven, gezien de duidelijke syntax.
Ik dacht bv om de DSL bovenop activerecords te schrijven, gezien de imho prachtige syntax.

Een voorbeeldje uit Ruby wiki forum example :
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class User < ActiveRecord::Base
  has_many :replies
end
class Category < ActiveRecord::Base
  has_many :forums
end
class Forum < ActiveRecord::Base
  belongs_to :category
  has_many   :topics
end
class Message < ActiveRecord::Base
  has_one :author
end
class Topic < Message
  belongs_to :forum
  has_many   :replies
end
class Reply < Message
  belongs_to :topic
end


Zo'n syntax is imho ook begrijpelijk voor een poweruser, dus mocht ik hier nog wat uitbreidingen op kunnen schrijven, dan ben ik op de goede weg...
* D4Skunk vraagt zich wel af hoe het met het performantieverhaal zit....

[edit]
Wat ik trouwens de features vind van ruby om zo'n framework te implementeren :
  • Mixins (+/- = interfaces, maar met code erbij)
  • Closures
  • Continuations (multiple undo's/transacties ?)
  • ???

[ Voor 8% gewijzigd door D4Skunk op 24-06-2005 11:30 ]


  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

Topicstarter
* D4Skunk geeft dit topic een trap onder z'n kont :)

Nog suggesties ?
Pagina: 1