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 Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
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

Shipping Address

Billing Address

Shipping Methods
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
Estimated delivery fee Deliver to Latvia

Premium delivery 7 - 10 business days

€25.95
(Includes tracking information)

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 : 9781783986583
Concepts :

What do you get with Print?

Product feature icon Instant access to your digital eBook copy whilst your Print order is Shipped
Product feature icon Paperback book shipped to your preferred address
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

Shipping Address

Billing Address

Shipping Methods
Estimated delivery fee Deliver to Latvia

Premium delivery 7 - 10 business days

€25.95
(Includes tracking information)

Product Details

Publication date : Oct 28, 2015
Length: 216 pages
Edition : 1st
Language : English
ISBN-13 : 9781783986583
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

What is the delivery time and cost of print book? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela
What is custom duty/charge? Chevron down icon Chevron up icon

Customs duty are charges levied on goods when they cross international borders. It is a tax that is imposed on imported goods. These duties are charged by special authorities and bodies created by local governments and are meant to protect local industries, economies, and businesses.

Do I have to pay customs charges for the print book order? Chevron down icon Chevron up icon

The orders shipped to the countries that are listed under EU27 will not bear custom charges. They are paid by Packt as part of the order.

List of EU27 countries: www.gov.uk/eu-eea:

A custom duty or localized taxes may be applicable on the shipment and would be charged by the recipient country outside of the EU27 which should be paid by the customer and these duties are not included in the shipping charges been charged on the order.

How do I know my custom duty charges? Chevron down icon Chevron up icon

The amount of duty payable varies greatly depending on the imported goods, the country of origin and several other factors like the total invoice amount or dimensions like weight, and other such criteria applicable in your country.

For example:

  • If you live in Mexico, and the declared value of your ordered items is over $ 50, for you to receive a package, you will have to pay additional import tax of 19% which will be $ 9.50 to the courier service.
  • Whereas if you live in Turkey, and the declared value of your ordered items is over € 22, for you to receive a package, you will have to pay additional import tax of 18% which will be € 3.96 to the courier service.
How can I cancel my order? Chevron down icon Chevron up icon

Cancellation Policy for Published Printed Books:

You can cancel any order within 1 hour of placing the order. Simply contact customercare@packt.com with your order details or payment transaction id. If your order has already started the shipment process, we will do our best to stop it. However, if it is already on the way to you then when you receive it, you can contact us at customercare@packt.com using the returns and refund process.

Please understand that Packt Publishing cannot provide refunds or cancel any order except for the cases described in our Return Policy (i.e. Packt Publishing agrees to replace your printed book because it arrives damaged or material defect in book), Packt Publishing will not accept returns.

What is your returns and refunds policy? Chevron down icon Chevron up icon

Return Policy:

We want you to be happy with your purchase from Packtpub.com. We will not hassle you with returning print books to us. If the print book you receive from us is incorrect, damaged, doesn't work or is unacceptably late, please contact Customer Relations Team on customercare@packt.com with the order number and issue details as explained below:

  1. If you ordered (eBook, Video or Print Book) incorrectly or accidentally, please contact Customer Relations Team on customercare@packt.com within one hour of placing the order and we will replace/refund you the item cost.
  2. Sadly, if your eBook or Video file is faulty or a fault occurs during the eBook or Video being made available to you, i.e. during download then you should contact Customer Relations Team within 14 days of purchase on customercare@packt.com who will be able to resolve this issue for you.
  3. You will have a choice of replacement or refund of the problem items.(damaged, defective or incorrect)
  4. Once Customer Care Team confirms that you will be refunded, you should receive the refund within 10 to 12 working days.
  5. If you are only requesting a refund of one book from a multiple order, then we will refund you the appropriate single item.
  6. Where the items were shipped under a free shipping offer, there will be no shipping costs to refund.

On the off chance your printed book arrives damaged, with book material defect, contact our Customer Relation Team on customercare@packt.com within 14 days of receipt of the book with appropriate evidence of damage and we will work with you to secure a replacement copy, if necessary. Please note that each printed book you order from us is individually made by Packt's professional book-printing partner which is on a print-on-demand basis.

What tax is charged? Chevron down icon Chevron up icon

Currently, no tax is charged on the purchase of any print book (subject to change based on the laws and regulations). A localized VAT fee is charged only to our European and UK customers on eBooks, Video and subscriptions that they buy. GST is charged to Indian customers for eBooks and video purchases.

What payment methods can I use? Chevron down icon Chevron up icon

You can pay with the following card types:

  1. Visa Debit
  2. Visa Credit
  3. MasterCard
  4. PayPal
What is the delivery time and cost of print books? Chevron down icon Chevron up icon

Shipping Details

USA:

'

Economy: Delivery to most addresses in the US within 10-15 business days

Premium: Trackable Delivery to most addresses in the US within 3-8 business days

UK:

Economy: Delivery to most addresses in the U.K. within 7-9 business days.
Shipments are not trackable

Premium: Trackable delivery to most addresses in the U.K. within 3-4 business days!
Add one extra business day for deliveries to Northern Ireland and Scottish Highlands and islands

EU:

Premium: Trackable delivery to most EU destinations within 4-9 business days.

Australia:

Economy: Can deliver to P. O. Boxes and private residences.
Trackable service with delivery to addresses in Australia only.
Delivery time ranges from 7-9 business days for VIC and 8-10 business days for Interstate metro
Delivery time is up to 15 business days for remote areas of WA, NT & QLD.

Premium: Delivery to addresses in Australia only
Trackable delivery to most P. O. Boxes and private residences in Australia within 4-5 days based on the distance to a destination following dispatch.

India:

Premium: Delivery to most Indian addresses within 5-6 business days

Rest of the World:

Premium: Countries in the American continent: Trackable delivery to most countries within 4-7 business days

Asia:

Premium: Delivery to most Asian addresses within 5-9 business days

Disclaimer:
All orders received before 5 PM U.K time would start printing from the next business day. So the estimated delivery times start from the next day as well. Orders received after 5 PM U.K time (in our internal systems) on a business day or anytime on the weekend will begin printing the second to next business day. For example, an order placed at 11 AM today will begin printing tomorrow, whereas an order placed at 9 PM tonight will begin printing the day after tomorrow.


Unfortunately, due to several restrictions, we are unable to ship to the following countries:

  1. Afghanistan
  2. American Samoa
  3. Belarus
  4. Brunei Darussalam
  5. Central African Republic
  6. The Democratic Republic of Congo
  7. Eritrea
  8. Guinea-bissau
  9. Iran
  10. Lebanon
  11. Libiya Arab Jamahriya
  12. Somalia
  13. Sudan
  14. Russian Federation
  15. Syrian Arab Republic
  16. Ukraine
  17. Venezuela