A little over a month ago, at Kentico Xperience Connection, we had a Q&A panel where a group of the Xperience MVPs got together to discuss some of the questions they had been getting from their colleagues and clients. They had such a good time during this panel, so they wanted to do it again 🙂. Therefore, we decided to bring back the Ask the Experts show.
On Tuesday, December 1, we did a soft relaunch of the show on the Xperience YouTube channel. Compared to the Q&A panel, the format changed a little. Instead of just going around the table and having each MVP give their thoughts on the question, we made it more conversational and let each person speak when they had something to share.
On top of that, we also fielded questions from the chatroom. This is an excellent way for any questions to get answered directly by a group who are in the trenches, day in, day out, using Xperience.
In this episode, we were joined by 3 MVPs, Jeroen Furst, Sean G. Wright, and Trevor Fayas, and discussed several topics.
- Reflections on Connection 2020
- ASP.NET Core MVC vs. ASP.NET MVC 5
- .NET Core in reusable widgets and code
- Deployment and hosting in an Azure Web app and/or an Azure VM
- What’s missing from KX13?
Watch the video below or read on for a recap.
Ask the Experts
Let's talk Kentico Xperience
Reflections on Connection 2020
The first topic we discussed covered the annual Xperience Connection conference. This conference happens three times a year across three different regions, and this year was no exception.
This time, however, it was held virtually (and free for everyone). That presented a great opportunity for many more attendees to join, in contrast with an in-person event, where many more added expenses need to be considered, i.e., conference tickets, travel, and lodging.
During the conference, there were good conversations about .NET Core, the direction and future of the Xperience platform, as well as a chance to pick the brains of the architects who designed the platform.
While virtual does allow us to get together, the in-person connection and the opportunity to hang out, chat, and connect was still missed. Nevertheless, a hybrid option of both virtual and in-person does sound appealing for future Connections.
ASP.NET Core MVC vs. ASP.NET MVC 5
Next, we shifted to the topic of ASP.NET Core MVC versus ASP.NET MVC 5. With the release of Xperience 13, we introduced the ability to develop the frontend website in ASP.NET Core MVC—the recommended development model for the Xperience platform.
According to the MVPs, there seems to be plenty of similarities between them. There are, however, definite differences that can throw you for a loop.
One of the differences highlighted during the discussion was the introduction of Tag Helpers in ASP.NET Core MVC. They make the markup a little cleaner and further enhance the HTML, rather than take it over. As Sean pointed out—this concept shows that ASP.NET Core is following trends already used by developers in other frameworks, not forcing them to lean one way or the other.
Another difference, which really excited Trevor, is Razor Control Libraries in ASP.NET Core. In MVC 5, he had to go through a tremendous amount of work and effort to export widgets into NuGet packages. Within ASP.NET Core, however, this process has been remarkably streamlined and simplified.
Unfortunately, within ASP.NET Core, the output cache is no longer available. It is something on the radar of the Xperience development teams, though. They are hoping to provide a solution to this problem in one of the upcoming Refreshes.
Some of the other differences that will take some getting used to are switching to ViewComponents and the new startup and configuration processes within ASP.NET Core MVC, as well as how middleware allows you to interact with the HTTP request pipeline.
Even though ASP.NET Core has been released for a while, it is still new to Xperience. Therefore, we all have a lot to learn in this area. Nonetheless, the MVPs are excited to see what the Xperience community creates to enhance development within the Xperience platform.
.NET Core in reusable widgets and code
What benefits does .NET Core offer for reusable widgets and code that can be used across multiple sites in a single Kentico (Xperience) instance? That was an exciting question for the MVPs! Mainly because of how things were done in Portal Engine, where a single large code base was used across each site with logic built-in, only to serve up different widgets for specific domains.
With the ASP.NET Core MVC development, you now can have multiple frontends pointing to a single backend. That allows you to create different widgets and have them only installed on those sites that need them while still having the ability to create widgets to share across the sites.
It was also pointed out by Sean, and agreed with by Trevor, that while you can have shared widgets across sites, most of the times, these widgets are specific to a site, with some exceptions—such as a bootstrap layout widget or the text editor.
Deployment and hosting in an Azure Web app and/or an Azure VM
Moving on to deployment and hosting, we talked about how ASP.NET Core is no longer constrained to run in a Windows environment. We can now deploy these sites even to Linux, which can lower the expenses considerably from a business perspective.
We also discussed using Azure DevOps as the way to automate the deployment and testing of your sites between environments and then using deployment slots to help eliminate potential downtime when deploying a new version of your site.
A couple of gotchas were pointed out by the MVPs when using deployment slots. To give an example, the sharing of resources on the resource group (which could potentially lead to resource starvation on resource-intensive websites) and app-setting changes, occurring due to changes or new features. The ability to assign specific settings to a slot—e.g., connection strings—ensuring your site is always hitting the correct external systems is also worth mentioning.
What’s missing from KX13?
Our final topic touched what we believe is missing from Xperience 13.
As mentioned earlier, Trevor believes that a solid caching strategy is essential in pushing Xperience to the next level.
Sean wants to see .NET 5 support brought to Xperience 13. He’d like to skip .NET Core 3.1 and build all their new internal libraries targeting .NET 5. Another thing Sean sees missing is the collective experience to work with .NET Core efficiently. There is a great deal of knowledge, tricks, and solutions for Web Forms built up over Kentico’s lifetime, but utilizing ASP.NET Core MVC in Xperience is still in its infancy.
Jeroen is eager to see a smart alternative to using web farms to handle session state in order to stop using web farms as a cache-busting mechanism.
Several other small issues were also pointed out, but the development team is already actively working on them. They are about to get resolved in some of the upcoming Refreshes
Wrap up
Everyone really enjoyed participating in the show and wants to keep on doing them! So, that’s the plan for the future!
Meanwhile, be sure to download the latest version of Xperience and try it for yourself! Also, don’t forget to subscribe to the Xperience YouTube channel and Developer Newsletter to stay up to date on the latest Xperience technical news and events, like the Ask the Experts show.