Recent

Author Topic: Datasnap  (Read 1401 times)

dfergfla

  • New Member
  • *
  • Posts: 42
Datasnap
« on: March 27, 2019, 06:40:01 pm »
Hi, just poking in.  I play around with pascal and Lazarus from time to time (I am not a programmer, just a hobbyist)  I have heard of Datasnap and I know it is for Delphi.  What I have not been able to figure out is what makes Datasnap unique?  What does it do exactly?  I am just curious about this, never going to use it.  I just can't find an actual explanation of what it is.

I have played with IBX controls and firebird database. So, how would Datasnap differ from this?

Thanks

Donald

mangakissa

  • Hero Member
  • *****
  • Posts: 935
Re: Datasnap
« Reply #1 on: March 28, 2019, 09:18:26 am »
Not.
If you talk about datasnap, the term n-tier is rising. It means that you create multiple clients without knowledge of the database structucure. All your communication to the database runs with the de server application. The client is doing a request to the serverapp. This is talking to the datebase and other things and give you a result back. Datasnap is working with a tcpip layer of itself.
Now your creating a 'fat client/server' to communicate to the database. Al copies do the same. But using datasnap the communication is put on on application. Advantage: If there's a database structure modify or a function must be programmed differently, only the server has to be updated.

There are a few other n-tier tools for Lazarus: MORMot, Tiopf, RestDB, KBMmw (expirimental) 
Lazarus 1.84 (32b) / FPC 3.0.4
Windows 10

marcov

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 7354
Re: Datasnap
« Reply #2 on: March 28, 2019, 09:46:58 am »
Afaik Datasnap is a bit more dataset oriented than other n-tier networks like KBMW, mormot etc which are a bit more OPF.

Probably due to its age.

Thaddy

  • Hero Member
  • *****
  • Posts: 8673
Re: Datasnap
« Reply #3 on: March 28, 2019, 10:32:29 am »
Indeed, Marco.
Aside:
IIRC we thought during beta-testing it was a real productivity enhancer, but when we tried to use it in production type code, we abandoned it again.
There were quite a few threading issues as well as - more importantly - scaling issues: Datasnap and Oracle didn't like eachother for some reason.
I forgot the reason, but at that point in time (~2010) : if our team couldn't fix it, likely nobody  could.
Most people that want to use threading should learn to patch their jeans first: use a needle.

dfergfla

  • New Member
  • *
  • Posts: 42
Re: Datasnap
« Reply #4 on: March 28, 2019, 07:28:03 pm »
Thanks guys, I was just curious.  Now I know.  :)

I took a look at kbmMW website.  I find this interesting I would love to learn how to do this.  But, it seems over my skill level by...a lot.
« Last Edit: March 28, 2019, 07:31:34 pm by dfergfla »

Thaddy

  • Hero Member
  • *****
  • Posts: 8673
Re: Datasnap
« Reply #5 on: March 28, 2019, 07:58:28 pm »
Don't forget mORMot... That is easy to use.

(Downside: Arnoud tends to write complex examples to prove what can be done, and writes very few simple examples....while that would be easy to do... come on Arnoud!!!   :P )
« Last Edit: March 28, 2019, 08:07:34 pm by Thaddy »
Most people that want to use threading should learn to patch their jeans first: use a needle.

dfergfla

  • New Member
  • *
  • Posts: 42
Re: Datasnap
« Reply #6 on: March 29, 2019, 12:11:19 am »
Ya, when i looked at the mORMot I could not find my way.  Having a beginners guide would be great.  if I may be honest this type of thing is the hardest part about learning pascal right now.  a lot of outdated material, no real beginners guide.  most of the people here have been nice and helpful.  but it is clear most of the people using Lazarus are experienced.  but I am making progress... makes me happy.  Not totally new to pascal, but the last time i really used it regular, Ronald Regan was president.

tatamata

  • Hero Member
  • *****
  • Posts: 693
    • ZMSQL - SQL enhanced in-memory database
Re: Datasnap
« Reply #7 on: March 30, 2019, 10:45:14 am »
I think the easiest one to use and understand is the SQLDBRestBridge:
http://wiki.lazarus.freepascal.org/SQLDBRestBridge