Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Mastering ServiceStack
Mastering ServiceStack

Mastering ServiceStack: Utilize ServiceStack as the rock solid foundation of your distributed system

eBook
€8.99 €29.99
Paperback
€36.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Mastering ServiceStack

Chapter 2. ServiceStack as Your Unique Point of Access

An incorporation of ServiceStack that takes advantage of all its features, must be made in your design. This integration can be more challenging in an existing application, where you apply ServiceStack at the top as an additional layer.

One common scenario is adding an API over HTTP to an existing system, in order to provide an abstracted and defined public access to internal functionalities. The next step in most scenarios is to add authentication and authorization, and a session storage.

Before we introduce an example application as our working item, we will discuss the IoC container Funq that comes shipped with ServiceStack to lay a solid foundation for our design.

We will cover the following topics in this chapter:

  • The IoC container
  • Session
  • Cache
  • Authentication providers

The IoC container

Many books and articles have been written on Inversion of Control (IoC) and dependency injection, this minimizes the need for an introduction to these paradigms. In short, it's one of the SOLID principals that talk about how to loosely couple concrete implementations with clients, for example to exchange implementations without needing to modify the clients.

Funq was made the default ServiceStack implementation due to its excellent performance and memory characteristics, as well as the basic and clean API. It's enhanced with expression-based auto-wiring and lifetime scopes. Nevertheless, ServiceStack supports the usage of other IoC containers, which we will cover later in this chapter.

The central access point for dependency registrations is the Container property of your host, which you should only access from within the Configure method to register mappings, as this is guaranteed to make your registration calls thread safe.

Registering dependencies

There are two...

The Ticket application

It is much more advisable to discuss problems and solutions with the help of a working example. Therefore, we will create a basic application to handle tickets (without any workflow), which we will expand throughout the course of this chapter.

The application will initially be implemented by the following RESTful web services:

  1. TicketService: Create, read, update, and delete tickets.
  2. CommentService: Administer comments of tickets (create, read, update, and delete).

    Tip

    Whenever you are dealing with multiple entities it is a good idea to use the rule of thumb and separate the services based on the handled entities.

The implementation of this example has been done by following the Test Driven Development (TDD) approach. It's done by designing the domain layer and then consecutively implementing the subjacent layers based on the red-green-refactor mantra. The implementation phase is covered by Unit Tests against each iteration. The actual code is available in the code...

Sessions

Whenever there's a need to store data that needs the scope of a (browser) session, the ordinary approach is to store data on the server-side, which can be accessed via a session-key that is stored on the client by some mechanism.

Three types of session lifetimes exist within a browser scenario. They are as follows:

  • Temporary sessions: The cookie holding the session key has no explicit expiration timestamp set; hence, it lives only while a browser window is open.
  • Permanent sessions: The session key is stored in a cookie, whose expiration timestamp is set in the far future (ServiceStack uses a lifetime of 20 years from creation as the default).
  • Sliding sessions: The cookie that holds the session key is stored with an expiry in the near future. This expiration date is advanced by every following request; hence, it has the term sliding in its name.

To enable session support in your application, you need to register the session feature:

public override void Configure(Funq.Container container...

Cache

Additional to the session data, any serializable object can be saved in a cache, which is a common technique to speed up applications. Therefore, ServiceStack offers the following cache clients:

  • ServiceStack.Redis.RedisCientManagerCacheClient:
    container.Register<IRedisClientManager>(arg => newPooledRedisClientManager());
    container.Register(arg => arg.Resolve<IRedisClientManager>().GetCacheClient());
  • ServiceStack.Caching.Memcached.MemcachedClientCache:
    container.Register<ICacheClient>(arg => new MemcachedClientCache());
  • ServiceStack.Caching.Azure.AzureCacheClient:
    container.Register<ICacheClient>(arg => new AzureCacheClient());
  • ServiceStack.Caching.AwsDynamoDb.DynamoDbCacheClient:
    container.Register<ICacheClient>(arg => new DynamoDbCacheClient(...));
  • ServiceStack.Caching.OrmLiteCacheClient:
    container.Register<ICacheClient>(arg => new OrmLiteCacheClient())
             .InitializeBy((arg, cacheClient) => cacheClient.InitSchema());
  • ServiceStack...

Authentication and authorization

These two terms are normally applied to sensible endpoints, where "authentication" is all about getting the information about which user executes a requests, and "authorization" checks if the authenticated user is allowed to request a resource.

Authentication providers

Based on your authentication method you can choose from the following available providers (all implementing the ServiceStack.Auth.IAuthProvider interface):

  • Basic providers: These providers depend on a registered ServiceStack.Auth.IAuthRepository implementation to ensure authentication:
    • ServiceStack.Auth.CredentialsProvider: You can obtain an authenticated session, by posting a username and a password (either via query string parameters or JSON payload) to /auth/credentials.
    • ServiceStack.Auth.BasicAuthProvider: Adding an HTTP header Authorization (according to RFC 1945 for HTTP 1.0 and 2617 for HTTP 1.1) to the request triggers the validation of the provided credentials to obtain...

The IoC container


Many books and articles have been written on Inversion of Control (IoC) and dependency injection, this minimizes the need for an introduction to these paradigms. In short, it's one of the SOLID principals that talk about how to loosely couple concrete implementations with clients, for example to exchange implementations without needing to modify the clients.

Funq was made the default ServiceStack implementation due to its excellent performance and memory characteristics, as well as the basic and clean API. It's enhanced with expression-based auto-wiring and lifetime scopes. Nevertheless, ServiceStack supports the usage of other IoC containers, which we will cover later in this chapter.

The central access point for dependency registrations is the Container property of your host, which you should only access from within the Configure method to register mappings, as this is guaranteed to make your registration calls thread safe.

Registering dependencies

There are two ways to register...

Left arrow icon Right arrow icon

Description

Mastering ServiceStack covers real-life problems that occur over the lifetime of a distributed system and how to solve them by deeply understanding the tools of ServiceStack. Distributed systems is the enterprise solution that provide flexibility, reliability, scaling, and performance. ServiceStack is an outstanding tool belt to create such a system in a frictionless manner, especially sophisticated designed and fun to use. The book starts with an introduction covering the essentials, but assumes you are just refreshing, are a very fast learner, or are an expert in building web services. Then, the book explains ServiceStack's data transfer object patterns and teach you how it differs from other methods of building web services with different protocols, such as SOAP and SOA. It also introduces more low-level details such as how to extend the User Auth, message queues and concepts on how the technology works. By the end of this book, you will understand the concepts, framework, issues, and resolutions related to ServiceStack.

Who is this book for?

Mastering ServiceStack is targeted at developers who have already implemented web services with ASMX, WCF, or ServiceStack and want to gain more insight into the possibilities ServiceStack has to offer to build distributed systems of all scales.

What you will learn

  • Design a prudent and resilient API, following the RESTful design
  • Understand the internal processing chain and utilize the provided hooks
  • Incorporate ServiceStack as a full service provider to your existing distributed system
  • Leverage the power of asynchronous processing and add message queues to your architecture
  • Analyze and tune the performance of your service

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Oct 28, 2015
Length: 216 pages
Edition : 1st
Language : English
ISBN-13 : 9781783986590
Concepts :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Oct 28, 2015
Length: 216 pages
Edition : 1st
Language : English
ISBN-13 : 9781783986590
Concepts :

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
€189.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts
€264.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just €5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total 99.97
Mastering ServiceStack
€36.99
Python Web Scraping
€20.99
ServiceStack 4 Cookbook
€41.99
Total 99.97 Stars icon
Banner background image

Table of Contents

7 Chapters
1. Distributed Systems and How ServiceStack Jumps in Chevron down icon Chevron up icon
2. ServiceStack as Your Unique Point of Access Chevron down icon Chevron up icon
3. Asynchronous Communication between Components Chevron down icon Chevron up icon
4. Analyzing and Tuning a Distributed System Chevron down icon Chevron up icon
5. Documentation and Versioning Chevron down icon Chevron up icon
6. Extending ServiceStack Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Half star icon Empty star icon Empty star icon 2.5
(2 Ratings)
5 star 0%
4 star 0%
3 star 50%
2 star 50%
1 star 0%
Alan Taylor Jun 05, 2020
Full star icon Full star icon Full star icon Empty star icon Empty star icon 3
If you are considering purchasing this book, just be aware that it is aimed at an older version of ServiceStack and some things work differently in the current version so you may be hitting StackOverflow quite a bit to figure out what has changed..
Amazon Verified review Amazon
Amazon Customer Apr 26, 2016
Full star icon Full star icon Empty star icon Empty star icon Empty star icon 2
I've been working with ServiceStack for few months and looked at this book to gain the extra "knowledge" and particularly was interested in the section about versioning. Unfortunately, the book did not deliver.There is no denying that the author knows what he is talking but he fails completely in conveying the information in a clear language. Most subjects are covered in short sections with code snippets that (for me) never compiled as is. There is the assumption that that reader is already an expert and can read between the lines, and can fill in the gaps.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.