SlideShare a Scribd company logo
There is more than just easy
webservices
All the boring stuff you will forget after the slides have passed
•   Stefan Daugaard Poulsen
•   @cyberzeddk
•   AP in Computer Science
•   Developer/Architect at Atea Denmark
    • Currently working on Atea Tele


• .NET developer since 2002
• Silverlight developer back in 2011 with high use of WCF
• “Caught” in a discussion about webservices in November
  2011
• Got annoyed by RPC style, code-gen webservices
Digging deeper into service stack
Digging deeper into service stack
Is it needed? Does it solve anything?
• Code-gen
  • It fails…too often
• Archaic Xml configuration
  • Distribution, misspelling…or even horrible merges
• Defaults that is bound to make you cry
  • Why do I need to set values that should be default!
• Fixed serialization
  • Could be nice to talk to more systems no matter who they are
• RPC style services
  • Maintenance hell
• Chatty services
  • Bulk it!
Digging deeper into service stack
Digging deeper into service stack
• Official subtitle:
    • Web Services done right, REST services done easy :)
•   Simple and model-driven
•   Endpoint ignorant
•   Authentication built-in
•   IoC based
•   Easy access to HTTP
•   Fast as lightning
•   Cross platform
•   Extendable
•   Oh!... And clients are in the box
This is where the most wheels are turning in your development
• IService
• Service
• And a lot more…
•   Conventionbased registrations
•   Throw exceptions and have magic httpstatuscodes
•   Strong typed returns
•   It’s more than CRUD
    • PATCH etc.
• Restrict access to your services
•   JSON
•   Xml
•   JSV
•   CSV
•   SOAP
    • 1.1
    • 1.2
• Custom
Digging deeper into service stack
•   Funq
•   OrmLite
•   ICacheClient
•   MiniProfiler
•   Validation
•   Custom responses
•   Headers
•   It’s dead simple
•   Fullfills the basic needs
•   It’s fast
•   If you don’t like …add an adaptor
•   Do you really need EF?
•   Do you trust your developers to know SQL?
•   Want to get closer to the server?
•   Pragmatic over academic
• You added caching so now you have more problems
• Cachekey generation
• It’s so darn hard!!!
•   Estimates and guesses leaves you nowhere
•   Easy to give response to the average Joe
•   Thank you mr. Saffron and Dixon
•   Don’t reinvent the wheel!!!
• if( request.Id != default(int) )
   • It’s getting boring!
• Leverage the same validation in several places
• Fine grain it where needed
• If you want another content type
• If you need to return an image
• If you want to be a joker?
• CORS
  • Please don’t use AddHeader
• If you want to you can do it
• Location
• …Link?
  • Not sure you want to go that way ;)
Digging deeper into service stack
…unless you want to go all JS on me :)
• Client interfaces
  • IServiceClient
  • IRestClient
  • IRestClientAsync
• Implementations
  •   Soap11ServiceClient (only for IServiceClient)
  •   Soap12ServiceClient (only for IServiceClient)
  •   JsonServiceClient(Async)
  •   JsvServiceClient(Async)
  •   XmlServiceClient(Async)
• Or you can hookup to the XSDs or WSDLs as well
  • Might be handy when delivering services to external partners
If you order now you will get … for only $19.99
• OrmLite                     • Caching
  •   MySQL                     • Memcached
  •   PostgreSQL                • Azure
  •   Sqlite 32 & Sqlite 64   • Protobuf
  •   Firebird                • MessagePack
  •   Oracle
                              • Logging
• Authentication                •   NLog
  •   MongoDB                   •   Log4Net
  •   Nhibernate                •   ELMAH
  •   OpenId                    •   Eventlog
  •   RavenDB
                              • Swagger
• Razor
Digging deeper into service stack
Grab your whiskies and smile
• Fastest JSON serializer
• Burning Monk JSON Benchmarks (19/11/2012)
• Supports ASP.NET and HttpListener hosts
• Runs on Windows with .NET 3.5 and 4.0
  •   IIS 5/6/7 (uses IHttpHandler)
  •   VS.NET WebDev Server (Cassini)
  •   IIS Express
  •   Console App, Windows Gui, Windows Service
• Linux/OSX with Mono
  •   Apache + mod_mono
  •   Nginx + MonoFastCGI
  •   XSP
  •   Console App
• A demo have been done inside iOS with MonoTouch
Hetzner           Windows Azure
•   2.67 GHZ         •   1.67 GHZ
•   2GB RAM          •   1.75GB RAM
•   80GB HDD         •   100GB HDD
•   4TB Traffic      •   2TB Traffic

• €19.90             • €219.50
• €238.80            • €2634
Digging deeper into service stack
Well where I am going I don’t need roads!!!
• Source: https://github.com/ServiceStack
• Wiki: https://github.com/ServiceStack/ServiceStack/wiki
• More docs: http://www.servicestack.net/docs/

• Community resources:
  https://github.com/ServiceStack/ServiceStack/wiki/Comm
  unity-Resources
• Links to InfoQ articles:
  http://www.servicestack.net/mythz_blog/?p=860
• Main contributor: Demis Bellot (@demisbellot)
  • Currently creating awesomeness at StackExchange
• It’s been around for a while
• First commit Dec 21, 2008
• It is well maintained
  •   Currently at version 3.9.37
  •   Jun 6 2012 – 3.9.2
  •   Jan 8 2012 – 3.2.0
  •   Jun 11 2011 – 2.2.0
Digging deeper into service stack
•   Twitter: @cyberzeddk
•   LinkedIn: http://www.linkedin.com/in/cyberzed
•   Blog: http://cyberzed.dk
•   Email: cyberzed@sleddog.dk
•   GitHub: http://github.com/cyberzed/

• Tutorials will be published soon at Tech.Pro
• Book will be started of as an OS project this year

Feel free to contact me with any questions, or if you want
me to come talk more about ServiceStack
Ad

More Related Content

What's hot (20)

Put Your Thinking CAP On
Put Your Thinking CAP OnPut Your Thinking CAP On
Put Your Thinking CAP On
Tomer Gabel
 
Why ruby and rails
Why ruby and railsWhy ruby and rails
Why ruby and rails
Reuven Lerner
 
SFJS 6-19-2012
SFJS 6-19-2012SFJS 6-19-2012
SFJS 6-19-2012
Adam Christian
 
JavaScript State of the Union - Jan 2013
JavaScript State of the Union - Jan 2013JavaScript State of the Union - Jan 2013
JavaScript State of the Union - Jan 2013
Ronald Northrip
 
mongodb-brief-intro-february-2012
mongodb-brief-intro-february-2012mongodb-brief-intro-february-2012
mongodb-brief-intro-february-2012
Chris Westin
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script Applications
Fabian Jakobs
 
[Start] Playing
[Start] Playing[Start] Playing
[Start] Playing
佑介 九岡
 
Ruby Midwest 2010 jRuby by Charles Nutter
Ruby Midwest 2010 jRuby by Charles NutterRuby Midwest 2010 jRuby by Charles Nutter
Ruby Midwest 2010 jRuby by Charles Nutter
Steven Chau
 
2013 spider - LibreOffice QA Community
2013 spider - LibreOffice QA Community2013 spider - LibreOffice QA Community
2013 spider - LibreOffice QA Community
Rob Snelders
 
CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development
LetsConnect
 
Actors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Actors and Microservices - Can two walk together? - Rotem Hermon, GigyaActors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Actors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Codemotion Tel Aviv
 
第5回SCDN - Things that become possible with HTML5
第5回SCDN - Things that become possible with HTML5第5回SCDN - Things that become possible with HTML5
第5回SCDN - Things that become possible with HTML5
scdn
 
Playing with playgrounds
Playing with playgroundsPlaying with playgrounds
Playing with playgrounds
Eurico Doirado
 
DevOps: What is This Puppet You Speak Of?
DevOps: What is This Puppet You Speak Of?DevOps: What is This Puppet You Speak Of?
DevOps: What is This Puppet You Speak Of?
Rob Reynolds
 
Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)
Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)
Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)
Valeri Karpov
 
6 reasons you should program in go
6 reasons you should program in go6 reasons you should program in go
6 reasons you should program in go
Michael Banzon
 
Magento 2 - Meet Magento 2014 DE
Magento 2 - Meet Magento 2014 DEMagento 2 - Meet Magento 2014 DE
Magento 2 - Meet Magento 2014 DE
Tobias Zander
 
2017.09.09 Orbit - Seattle Code Camp
2017.09.09 Orbit - Seattle Code Camp2017.09.09 Orbit - Seattle Code Camp
2017.09.09 Orbit - Seattle Code Camp
Victor Hurdugaci
 
Badass Microservices - deploy, build & scale your apps with Payara Micro
Badass Microservices - deploy, build & scale your apps with Payara MicroBadass Microservices - deploy, build & scale your apps with Payara Micro
Badass Microservices - deploy, build & scale your apps with Payara Micro
Payara
 
Javascript now and in the future
Javascript now and in the futureJavascript now and in the future
Javascript now and in the future
Denis Stoyanov
 
Put Your Thinking CAP On
Put Your Thinking CAP OnPut Your Thinking CAP On
Put Your Thinking CAP On
Tomer Gabel
 
JavaScript State of the Union - Jan 2013
JavaScript State of the Union - Jan 2013JavaScript State of the Union - Jan 2013
JavaScript State of the Union - Jan 2013
Ronald Northrip
 
mongodb-brief-intro-february-2012
mongodb-brief-intro-february-2012mongodb-brief-intro-february-2012
mongodb-brief-intro-february-2012
Chris Westin
 
Masterin Large Scale Java Script Applications
Masterin Large Scale Java Script ApplicationsMasterin Large Scale Java Script Applications
Masterin Large Scale Java Script Applications
Fabian Jakobs
 
Ruby Midwest 2010 jRuby by Charles Nutter
Ruby Midwest 2010 jRuby by Charles NutterRuby Midwest 2010 jRuby by Charles Nutter
Ruby Midwest 2010 jRuby by Charles Nutter
Steven Chau
 
2013 spider - LibreOffice QA Community
2013 spider - LibreOffice QA Community2013 spider - LibreOffice QA Community
2013 spider - LibreOffice QA Community
Rob Snelders
 
CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development CrossWorlds: Unleash the Power of Domino for Connections Development
CrossWorlds: Unleash the Power of Domino for Connections Development
LetsConnect
 
Actors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Actors and Microservices - Can two walk together? - Rotem Hermon, GigyaActors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Actors and Microservices - Can two walk together? - Rotem Hermon, Gigya
Codemotion Tel Aviv
 
第5回SCDN - Things that become possible with HTML5
第5回SCDN - Things that become possible with HTML5第5回SCDN - Things that become possible with HTML5
第5回SCDN - Things that become possible with HTML5
scdn
 
Playing with playgrounds
Playing with playgroundsPlaying with playgrounds
Playing with playgrounds
Eurico Doirado
 
DevOps: What is This Puppet You Speak Of?
DevOps: What is This Puppet You Speak Of?DevOps: What is This Puppet You Speak Of?
DevOps: What is This Puppet You Speak Of?
Rob Reynolds
 
Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)
Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)
Nimrod: MongoDB Shell in NodeJS (JSConfUY 2015)
Valeri Karpov
 
6 reasons you should program in go
6 reasons you should program in go6 reasons you should program in go
6 reasons you should program in go
Michael Banzon
 
Magento 2 - Meet Magento 2014 DE
Magento 2 - Meet Magento 2014 DEMagento 2 - Meet Magento 2014 DE
Magento 2 - Meet Magento 2014 DE
Tobias Zander
 
2017.09.09 Orbit - Seattle Code Camp
2017.09.09 Orbit - Seattle Code Camp2017.09.09 Orbit - Seattle Code Camp
2017.09.09 Orbit - Seattle Code Camp
Victor Hurdugaci
 
Badass Microservices - deploy, build & scale your apps with Payara Micro
Badass Microservices - deploy, build & scale your apps with Payara MicroBadass Microservices - deploy, build & scale your apps with Payara Micro
Badass Microservices - deploy, build & scale your apps with Payara Micro
Payara
 
Javascript now and in the future
Javascript now and in the futureJavascript now and in the future
Javascript now and in the future
Denis Stoyanov
 

Similar to Digging deeper into service stack (20)

Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
Tony Tam
 
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 20185 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
Matthew Groves
 
Node and Azure
Node and AzureNode and Azure
Node and Azure
Jason Gerard
 
RubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipelineRubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipeline
Florian Dutey
 
Be faster then rabbits
Be faster then rabbitsBe faster then rabbits
Be faster then rabbits
Vladislav Bauer
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
Paul Withers
 
Planidoo & Zotonic
Planidoo & ZotonicPlanidoo & Zotonic
Planidoo & Zotonic
David de Boer
 
Windows 8 Apps and the Outside World
Windows 8 Apps and the Outside WorldWindows 8 Apps and the Outside World
Windows 8 Apps and the Outside World
Microsoft Developer Network (MSDN) - Belgium and Luxembourg
 
ekb.py: KISS REST API
ekb.py: KISS REST APIekb.py: KISS REST API
ekb.py: KISS REST API
Yury Yurevich
 
ekbpy'2012- Юрий Юревич - Как сделать REST API на Python
ekbpy'2012- Юрий Юревич - Как сделать REST API на Pythonekbpy'2012- Юрий Юревич - Как сделать REST API на Python
ekbpy'2012- Юрий Юревич - Как сделать REST API на Python
it-people
 
Migration from ASP.NET MVC to ASP.NET Core
Migration from ASP.NET MVC to ASP.NET CoreMigration from ASP.NET MVC to ASP.NET Core
Migration from ASP.NET MVC to ASP.NET Core
Miroslav Popovic
 
Greenfields tech decisions
Greenfields tech decisionsGreenfields tech decisions
Greenfields tech decisions
Trent Hornibrook
 
Rails 3.1
Rails 3.1Rails 3.1
Rails 3.1
Lori Olson
 
Node
NodeNode
Node
Timothy Strimple
 
Rapid Evolution of Web Dev? aka Talking About The Web
Rapid Evolution of Web Dev? aka Talking About The WebRapid Evolution of Web Dev? aka Talking About The Web
Rapid Evolution of Web Dev? aka Talking About The Web
PINT Inc
 
5 Popular Choices for NoSQL on a Microsoft Platform
5 Popular Choices for NoSQL on a Microsoft Platform5 Popular Choices for NoSQL on a Microsoft Platform
5 Popular Choices for NoSQL on a Microsoft Platform
All Things Open
 
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
Matthew Groves
 
Your backend architecture is what matters slideshare
Your backend architecture is what matters slideshareYour backend architecture is what matters slideshare
Your backend architecture is what matters slideshare
Colin Charles
 
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
daylerees
 
Scaling with swagger
Scaling with swaggerScaling with swagger
Scaling with swagger
Tony Tam
 
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 20185 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
5 Popular Choices for NoSQL on a Microsoft Platform - Tulsa - July 2018
Matthew Groves
 
RubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipelineRubyConf China 2015 - Rails off assets pipeline
RubyConf China 2015 - Rails off assets pipeline
Florian Dutey
 
Social Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and DominoSocial Connections 2015 CrossWorlds and Domino
Social Connections 2015 CrossWorlds and Domino
Paul Withers
 
ekb.py: KISS REST API
ekb.py: KISS REST APIekb.py: KISS REST API
ekb.py: KISS REST API
Yury Yurevich
 
ekbpy'2012- Юрий Юревич - Как сделать REST API на Python
ekbpy'2012- Юрий Юревич - Как сделать REST API на Pythonekbpy'2012- Юрий Юревич - Как сделать REST API на Python
ekbpy'2012- Юрий Юревич - Как сделать REST API на Python
it-people
 
Migration from ASP.NET MVC to ASP.NET Core
Migration from ASP.NET MVC to ASP.NET CoreMigration from ASP.NET MVC to ASP.NET Core
Migration from ASP.NET MVC to ASP.NET Core
Miroslav Popovic
 
Greenfields tech decisions
Greenfields tech decisionsGreenfields tech decisions
Greenfields tech decisions
Trent Hornibrook
 
Rapid Evolution of Web Dev? aka Talking About The Web
Rapid Evolution of Web Dev? aka Talking About The WebRapid Evolution of Web Dev? aka Talking About The Web
Rapid Evolution of Web Dev? aka Talking About The Web
PINT Inc
 
5 Popular Choices for NoSQL on a Microsoft Platform
5 Popular Choices for NoSQL on a Microsoft Platform5 Popular Choices for NoSQL on a Microsoft Platform
5 Popular Choices for NoSQL on a Microsoft Platform
All Things Open
 
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
5 Popular Choices for NoSQL on a Microsoft Platform - All Things Open - Octob...
Matthew Groves
 
Your backend architecture is what matters slideshare
Your backend architecture is what matters slideshareYour backend architecture is what matters slideshare
Your backend architecture is what matters slideshare
Colin Charles
 
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
daylerees
 
Ad

Recently uploaded (20)

Image processinglab image processing image processing
Image processinglab image processing  image processingImage processinglab image processing  image processing
Image processinglab image processing image processing
RaghadHany
 
Learn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step GuideLearn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step Guide
Marcel David
 
Leading AI Innovation As A Product Manager - Michael Jidael
Leading AI Innovation As A Product Manager - Michael JidaelLeading AI Innovation As A Product Manager - Michael Jidael
Leading AI Innovation As A Product Manager - Michael Jidael
Michael Jidael
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Automation Dreamin': Capture User Feedback From Anywhere
Automation Dreamin': Capture User Feedback From AnywhereAutomation Dreamin': Capture User Feedback From Anywhere
Automation Dreamin': Capture User Feedback From Anywhere
Lynda Kane
 
Buckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug LogsBuckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug Logs
Lynda Kane
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Datastucture-Unit 4-Linked List Presentation.pptx
Datastucture-Unit 4-Linked List Presentation.pptxDatastucture-Unit 4-Linked List Presentation.pptx
Datastucture-Unit 4-Linked List Presentation.pptx
kaleeswaric3
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Asthma presentación en inglés abril 2025 pdf
Asthma presentación en inglés abril 2025 pdfAsthma presentación en inglés abril 2025 pdf
Asthma presentación en inglés abril 2025 pdf
VanessaRaudez
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko
Fwdays
 
Image processinglab image processing image processing
Image processinglab image processing  image processingImage processinglab image processing  image processing
Image processinglab image processing image processing
RaghadHany
 
Learn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step GuideLearn the Basics of Agile Development: Your Step-by-Step Guide
Learn the Basics of Agile Development: Your Step-by-Step Guide
Marcel David
 
Leading AI Innovation As A Product Manager - Michael Jidael
Leading AI Innovation As A Product Manager - Michael JidaelLeading AI Innovation As A Product Manager - Michael Jidael
Leading AI Innovation As A Product Manager - Michael Jidael
Michael Jidael
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfThe Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdf
Abi john
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
tecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdftecnologias de las primeras civilizaciones.pdf
tecnologias de las primeras civilizaciones.pdf
fjgm517
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...
SOFTTECHHUB
 
Automation Dreamin': Capture User Feedback From Anywhere
Automation Dreamin': Capture User Feedback From AnywhereAutomation Dreamin': Capture User Feedback From Anywhere
Automation Dreamin': Capture User Feedback From Anywhere
Lynda Kane
 
Buckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug LogsBuckeye Dreamin' 2023: De-fogging Debug Logs
Buckeye Dreamin' 2023: De-fogging Debug Logs
Lynda Kane
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxDevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptx
Justin Reock
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Datastucture-Unit 4-Linked List Presentation.pptx
Datastucture-Unit 4-Linked List Presentation.pptxDatastucture-Unit 4-Linked List Presentation.pptx
Datastucture-Unit 4-Linked List Presentation.pptx
kaleeswaric3
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Asthma presentación en inglés abril 2025 pdf
Asthma presentación en inglés abril 2025 pdfAsthma presentación en inglés abril 2025 pdf
Asthma presentación en inglés abril 2025 pdf
VanessaRaudez
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko"Rebranding for Growth", Anna Velykoivanenko
"Rebranding for Growth", Anna Velykoivanenko
Fwdays
 
Ad

Digging deeper into service stack

  • 1. There is more than just easy webservices
  • 2. All the boring stuff you will forget after the slides have passed
  • 3. Stefan Daugaard Poulsen • @cyberzeddk • AP in Computer Science • Developer/Architect at Atea Denmark • Currently working on Atea Tele • .NET developer since 2002 • Silverlight developer back in 2011 with high use of WCF • “Caught” in a discussion about webservices in November 2011 • Got annoyed by RPC style, code-gen webservices
  • 6. Is it needed? Does it solve anything?
  • 7. • Code-gen • It fails…too often • Archaic Xml configuration • Distribution, misspelling…or even horrible merges • Defaults that is bound to make you cry • Why do I need to set values that should be default! • Fixed serialization • Could be nice to talk to more systems no matter who they are • RPC style services • Maintenance hell • Chatty services • Bulk it!
  • 10. • Official subtitle: • Web Services done right, REST services done easy :) • Simple and model-driven • Endpoint ignorant • Authentication built-in • IoC based • Easy access to HTTP • Fast as lightning • Cross platform • Extendable • Oh!... And clients are in the box
  • 11. This is where the most wheels are turning in your development
  • 12. • IService • Service • And a lot more…
  • 13. Conventionbased registrations • Throw exceptions and have magic httpstatuscodes • Strong typed returns • It’s more than CRUD • PATCH etc. • Restrict access to your services
  • 14. JSON • Xml • JSV • CSV • SOAP • 1.1 • 1.2 • Custom
  • 16. Funq • OrmLite • ICacheClient • MiniProfiler • Validation • Custom responses • Headers
  • 17. It’s dead simple • Fullfills the basic needs • It’s fast • If you don’t like …add an adaptor
  • 18. Do you really need EF? • Do you trust your developers to know SQL? • Want to get closer to the server? • Pragmatic over academic
  • 19. • You added caching so now you have more problems • Cachekey generation • It’s so darn hard!!!
  • 20. Estimates and guesses leaves you nowhere • Easy to give response to the average Joe • Thank you mr. Saffron and Dixon • Don’t reinvent the wheel!!!
  • 21. • if( request.Id != default(int) ) • It’s getting boring! • Leverage the same validation in several places • Fine grain it where needed
  • 22. • If you want another content type • If you need to return an image • If you want to be a joker?
  • 23. • CORS • Please don’t use AddHeader • If you want to you can do it • Location • …Link? • Not sure you want to go that way ;)
  • 25. …unless you want to go all JS on me :)
  • 26. • Client interfaces • IServiceClient • IRestClient • IRestClientAsync • Implementations • Soap11ServiceClient (only for IServiceClient) • Soap12ServiceClient (only for IServiceClient) • JsonServiceClient(Async) • JsvServiceClient(Async) • XmlServiceClient(Async) • Or you can hookup to the XSDs or WSDLs as well • Might be handy when delivering services to external partners
  • 27. If you order now you will get … for only $19.99
  • 28. • OrmLite • Caching • MySQL • Memcached • PostgreSQL • Azure • Sqlite 32 & Sqlite 64 • Protobuf • Firebird • MessagePack • Oracle • Logging • Authentication • NLog • MongoDB • Log4Net • Nhibernate • ELMAH • OpenId • Eventlog • RavenDB • Swagger • Razor
  • 30. Grab your whiskies and smile
  • 31. • Fastest JSON serializer • Burning Monk JSON Benchmarks (19/11/2012)
  • 32. • Supports ASP.NET and HttpListener hosts • Runs on Windows with .NET 3.5 and 4.0 • IIS 5/6/7 (uses IHttpHandler) • VS.NET WebDev Server (Cassini) • IIS Express • Console App, Windows Gui, Windows Service • Linux/OSX with Mono • Apache + mod_mono • Nginx + MonoFastCGI • XSP • Console App • A demo have been done inside iOS with MonoTouch
  • 33. Hetzner Windows Azure • 2.67 GHZ • 1.67 GHZ • 2GB RAM • 1.75GB RAM • 80GB HDD • 100GB HDD • 4TB Traffic • 2TB Traffic • €19.90 • €219.50 • €238.80 • €2634
  • 35. Well where I am going I don’t need roads!!!
  • 36. • Source: https://github.com/ServiceStack • Wiki: https://github.com/ServiceStack/ServiceStack/wiki • More docs: http://www.servicestack.net/docs/ • Community resources: https://github.com/ServiceStack/ServiceStack/wiki/Comm unity-Resources • Links to InfoQ articles: http://www.servicestack.net/mythz_blog/?p=860
  • 37. • Main contributor: Demis Bellot (@demisbellot) • Currently creating awesomeness at StackExchange • It’s been around for a while • First commit Dec 21, 2008 • It is well maintained • Currently at version 3.9.37 • Jun 6 2012 – 3.9.2 • Jan 8 2012 – 3.2.0 • Jun 11 2011 – 2.2.0
  • 39. Twitter: @cyberzeddk • LinkedIn: http://www.linkedin.com/in/cyberzed • Blog: http://cyberzed.dk • Email: [email protected] • GitHub: http://github.com/cyberzed/ • Tutorials will be published soon at Tech.Pro • Book will be started of as an OS project this year Feel free to contact me with any questions, or if you want me to come talk more about ServiceStack

Editor's Notes

  • #5: Remember titles aren’t important…passion tightly coupled with curiosity is the important part here