{"id":6436,"date":"2019-02-25T11:24:56","date_gmt":"2019-02-25T19:24:56","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6436"},"modified":"2025-06-13T19:40:22","modified_gmt":"2025-06-14T02:40:22","slug":"session-storage-aspnet-new-tutorial","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/","title":{"rendered":"Session Storage with ASP.NET: New Tutorial"},"content":{"rendered":"<div class=\"paragraph\">\n<p>Session storage is one of the cornerstones of a scalable web application. Couchbase Server is a performant, scalable, and flexible session storage choice. Beyond simply storing and retrieving session quickly, Couchbase Server also provides tools for exploring and mining session data for valuable insights. There are also open-source projects for more easily integrating Couchbase with your web framework of choice. So, if you\u2019re building web applications and need a scalable session store, read on, because we\u2019ve just published a tutorial that will help you <a href=\"https:\/\/docs.couchbase.com\/tutorials\/session-storage\/aspnet.html\">get started with ASP.NET session storage<\/a>.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><em>Side note: the documentation team at Couchbase has been hard at work creating a new searchable <a href=\"https:\/\/docs.couchbase.com\/tutorials\/index.html\">&#8220;tutorials&#8221; section<\/a>. It\u2019s open source, it looks great, and I\u2019m really excited about it! Keep an eye on that page, because there are a lot more tutorials to come this year!<\/em><\/p>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_session_storage\">Session storage<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>When a user logs in to or visits a site, they start a &#8220;session&#8221;. The session and the user are correlated by giving a cookie to the user&#8217;s web browser with a lookup value that directly corresponds to session storage on the server side. ASP.NET and ASP.NET Core often store this data in memory on the web server.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>For small sites and\/or single server deployments, that might be okay. For larger deployments, it could be problematic for at least two reasons:<\/p>\n<\/div>\n<div class=\"ulist\">\n<ul>\n<li>If the web server goes down or is restarted, that session information is wiped out.<\/li>\n<li>&#8220;Sticky sessions&#8221; mean that a user is &#8220;stuck&#8221; to a single server, which can lead to unbalanced loads over time.<\/li>\n<\/ul>\n<\/div>\n<div class=\"paragraph\">\n<p>Another approach is to store session data separately from the web servers.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_web_farm_and_session_storage_architecture\">Web farm and session storage architecture<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>A web farm will sit behind a &#8220;load balancer&#8221;. This load balancer will direct requests to available ASP.NET servers. If session data live elsewhere, the load balancer is free to choose any server to direct the request.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/02\/11901-session-storage-architecture.png\" alt=\"Session storage architecture\" \/><\/span><\/p>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_exploring_session_data\">Exploring session data<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>There are many choices for tools to support session storage, but Couchbase Server offers some unique capabilities:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><strong>Memory-first (or memory only) storage.<\/strong> Once a Session starts, it is often read or written on every page request. With Couchbase, you can read\/write data at the speed of memory.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><strong>Ease of scaling.<\/strong> Couchbase\u2019s shared-nothing architecture means that scaling up is not complicated. There\u2019s no single &#8220;master&#8221; node to constrain operations.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><strong>Data insights.<\/strong> Couchbase\u2019s N1QL query language, as well as the new Analytics service, make it easy for you to analyze your enterprise\u2019s session data in aggregate. You can do this by using the familiar SQL language. Here\u2019s an example from the <a href=\"https:\/\/docs.couchbase.com\/tutorials\/session-storage\/aspnet.html\">session storage tutorial<\/a> of a N1QL query to find the most common items put into a shopping cart:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-SQL\">SELECT\r\n    i.ItemName,\r\n    SUM(i.Quantity) AS totalQuantity\r\nFROM sessionstore s\r\nUNNEST BASE64_DECODE(s.shoppingcart).Items i\r\nWHERE s.shoppingcart IS NOT MISSING\r\nGROUP BY i.ItemName\r\nORDER BY SUM(i.Quantity) DESC<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"sect1\">\n<h2 id=\"_next_steps\">Next Steps<\/h2>\n<div class=\"sectionbody\">\n<div class=\"paragraph\">\n<p>If you are a .NET developer, you can follow along with the <a href=\"https:\/\/docs.couchbase.com\/tutorials\/session-storage\/aspnet.html\">complete session storage tutorial<\/a> right now. If you are using other frameworks or languages, session storage tutorials are coming soon!<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>If you have any questions or feedback about this ASP.NET session management tutorial, you can find me on <a href=\"https:\/\/twitter.com\/mgroves\">Twitter @mgroves<\/a>. As with everything in Couchbase documentation, this tutorial is open source and <a href=\"https:\/\/www.couchbase.com\/blog\/documentation-contribution-improvements\/\">pull requests for improvements<\/a> are welcome!<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Session storage is one of the cornerstones of a scalable web application. Couchbase Server is a performant, scalable, and flexible session storage choice. Beyond simply storing and retrieving session quickly, Couchbase Server also provides tools for exploring and mining session [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":6438,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,10126,1816],"tags":[2024,1500],"ppma_author":[8937],"class_list":["post-6436","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-asp-dotnet","category-couchbase-server","tag-session","tag-tutorial"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>ASP.NET Session Storage Tutorial: Manage Sessions with Couchbase<\/title>\n<meta name=\"description\" content=\"Build scalable web applications with Couchbase Server\u2019s high-performance session storage. Get started today with our ASP.NET session management tutorial.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Session Storage with ASP.NET: New Tutorial\" \/>\n<meta property=\"og:description\" content=\"Build scalable web applications with Couchbase Server\u2019s high-performance session storage. Get started today with our ASP.NET session management tutorial.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-02-25T19:24:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:40:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"700\" \/>\n\t<meta property=\"og:image:height\" content=\"409\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Session Storage with ASP.NET: New Tutorial\",\"datePublished\":\"2019-02-25T19:24:56+00:00\",\"dateModified\":\"2025-06-14T02:40:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/\"},\"wordCount\":538,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg\",\"keywords\":[\"session\",\"tutorial\"],\"articleSection\":[\".NET\",\"ASP.NET\",\"Couchbase Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/\",\"name\":\"ASP.NET Session Storage Tutorial: Manage Sessions with Couchbase\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg\",\"datePublished\":\"2019-02-25T19:24:56+00:00\",\"dateModified\":\"2025-06-14T02:40:22+00:00\",\"description\":\"Build scalable web applications with Couchbase Server\u2019s high-performance session storage. Get started today with our ASP.NET session management tutorial.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg\",\"width\":700,\"height\":409,\"caption\":\"Law Day Mock Trial by USAG-Humphreys, licensed through Creative Commons https:\/\/www.flickr.com\/photos\/usaghumphreys\/8701694888\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Session Storage with ASP.NET: New Tutorial\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ASP.NET Session Storage Tutorial: Manage Sessions with Couchbase","description":"Build scalable web applications with Couchbase Server\u2019s high-performance session storage. Get started today with our ASP.NET session management tutorial.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/","og_locale":"en_US","og_type":"article","og_title":"Session Storage with ASP.NET: New Tutorial","og_description":"Build scalable web applications with Couchbase Server\u2019s high-performance session storage. Get started today with our ASP.NET session management tutorial.","og_url":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-02-25T19:24:56+00:00","article_modified_time":"2025-06-14T02:40:22+00:00","og_image":[{"width":700,"height":409,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg","type":"image\/jpeg"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Session Storage with ASP.NET: New Tutorial","datePublished":"2019-02-25T19:24:56+00:00","dateModified":"2025-06-14T02:40:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/"},"wordCount":538,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg","keywords":["session","tutorial"],"articleSection":[".NET","ASP.NET","Couchbase Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/","url":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/","name":"ASP.NET Session Storage Tutorial: Manage Sessions with Couchbase","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg","datePublished":"2019-02-25T19:24:56+00:00","dateModified":"2025-06-14T02:40:22+00:00","description":"Build scalable web applications with Couchbase Server\u2019s high-performance session storage. Get started today with our ASP.NET session management tutorial.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/02\/119-hero-session.jpg","width":700,"height":409,"caption":"Law Day Mock Trial by USAG-Humphreys, licensed through Creative Commons https:\/\/www.flickr.com\/photos\/usaghumphreys\/8701694888"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/session-storage-aspnet-new-tutorial\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Session Storage with ASP.NET: New Tutorial"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"Matthew D. Groves is a guy who loves to code.  It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything.  He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s.  He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community.  He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/6436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=6436"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/6436\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/6438"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=6436"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=6436"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=6436"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=6436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}