Quantcast
Channel: Telerik Blogs | .NET
Viewing all 1954 articles
Browse latest View live

RadControls for WPF/Silverlight Q3 Beta 2 release is live!

$
0
0

Hey everyone, start your morning off right by heading to your client account and downloading the new beta releases for RadControls for WPF and RadControls for Silverlight. Or you can start at Telerik Labs and work your way from there. :)

In our RadControls for WPF suite, you now have access to exciting new controls like RadRibbonBar and first looks at the WPF versions of RadMenu and RadContextMenu.  Check out the browser based demo, or better yet download the beta bits and see it for yourself. 

With RadControls for Silverlight, you get updates to RadTileView, RadOutlookBar, RadRibbonBar, and more- all based on community feedback we have received since releasing the first beta in September.  Check out the live demos here and downloads the betas to start playing with the controls.

But of course, since we still have the benefits of a shared codebase between our Silverlight and WPF controls, you can enjoy some of the following improvements across both suites:

  • RadGridView
    • First look at our new Horizontal and Vertical UI virtualization with container recycling
    • GridViewDynamicHyperlink, GridViewHyperlink, and GridViewImageColumns
    • Improved selection behavior through SelectionMode
  • RadChart
  • RadScheduler
    • New default resources provided out of the box
    • Improvements for read only scheduler views
    • New properties to handle brushes in grouping scenarios

But I can't possible list all the new features here, so for more info check out the full release notes to see all the improvements for the Silverlight and WPF betas that you can start playing with.  As always, we value your feedback on these beta releases after all, we put them out for the community to ensure the full releases are top quality and are filled with as many of the features you request and require as possible.

Have fun!


New Feature: Silverlight RIA services compression with Telerik RadControls Q3 2009

$
0
0

With our upcoming Q3 2009 release you can use RadCompression (part of Telerik.Web.UI.dll) to compress your RIA services:

Without compression:

Before

With compression:

After

Check the numbers :)

Enjoy!

[Download]

The Telerik Menu

$
0
0

The Telerik Visual Studio Extensions are now included in the RadControls for ASP.NET AJAX and RadControls for Silverlight installers in order to make the development of applications with Telerik RadControls faster and easier.

The main entry point for the Visual Studio Extensions is the Telerik menu. It is context sensitive and changes its state depending on the projects you are working on.

1) Create New Telerik Project menu item

WebUI_Create

SL_Create

This state can be observed when no solution is opened or the currently selected project is not suitable for use with RadControls.

Using the Create New Telerik Project menu item you can create a new Telerik Project with the provided New Project Templates.

2) Convert to Telerik Project menu item, other menu items disabled

WebUI_Convert

SL_Convert

This state can be observed when the currently selected project is suitable for use with RadControls and it has no reference to RadControls or that reference is broken.

Using the Convert to Project menu item you can:

  • Telerik-Enable your application (add references to the RadControls assemblies)
  • Fix your broken references

3) Upgrade Wizard, Configure Project and Add RadControls Template menu items

WebUI_Upgrade

SL_Upgrade

This state can be observed when the currently selected project has a working reference to RadControls.
Using the Configure Project you can configure your existing project's RadControls related settings.

Using the Upgrade Wizard menu item you can:

  • Check and retrieve the latest available RadControls release;
  • Change the version of RadControls the project uses.

Using the rest of the menu items you can deploy predefined templates with the most common scenarios in the development with RadControls.

4) Add RadControls Template menu items

WebUI_Add

This state can be observed when the currently selected project is a Telerik-enabled project and the item selected in the solution explorer is a project item rather than a project itself.

The menu items' purpose is the same as in the previous state.

Cheers
the Telerik VSXTeam

Thoughts on Being Awarded Microsoft Silverlight MVP

$
0
0

This isn't going to be your typical code sample-heavy blog post, but rather I wanted to reflect on something that arrived at my doorstep about two weeks ago...

Microsoft MVP Award

That is correct, I was awarded the Microsoft Silverlight MVP award for the past year of work around this fantastic platform.  So let me start by saying thanks for both the nomination as well as the award - while it was never the goal of helping the community to grow and learn, it is certainly a nice perk. ;)

And of course things are just getting started, as we saw at the Silverlight Firestarter, since Microsoft has been listening and Silverlight 5 is shaping up to be an even more impressive version of the platform.  Not only that, but we saw the launch of Windows Phone 7 late last year, a platform based on Silverlight and XNA, which has definitely landed a sweet spot in my heart since I've always wanted to get into mobile development and the platform has caught up for me.  Thanks to Microsoft for that - I'd go 'Windows 7' and say that was my idea, but it's just a nice touch to have two incredibly powerful platforms, both chocked full of .Net goodness, being the platforms for phone development. 

Now getting more to the point of this post - now that I am a Microsoft MVP, what do I plan on doing to ensure that when 2012 rolls around it is an easy choice to re-award this honor to me?  Well, over the last few weeks, I have...

  • Started on the engine for a WP7 XNA game
  • Helped plan a baby shower (for my lovely wife :D)
  • Worked out a template for my own website (finally)
  • Installed insulation in 2/3 of my basement
  • Started learning how to use Fruity Loops (for making music for my WP7 game)
  • Gotten completely lost on snowy roads and found my way back to safety courtesy of WP7 Maps in a matter of 5 minutes
  • Painted... and primed... and painted more
  • Wrote up general architecture for an upcoming WP7 Silverlight app (which you all must buy)
  • Built 3 computers (I <3 MicroCenter)

But that leaves ~49 more weeks of the year that I have yet to plan, but you better believe that, among housework and this brand new endeavor of parenting which I will be getting into come this April, a whole lot of that is going to involve Silverlight, both on the desktop and on the Windows Phone platform.  Keep on the lookout for even more resources, videos, learning guides, and other assorted resources that will help you to not only maximize your learning and adoption of the platform, but even better, doing so using the Telerik RadControls for Silverlight, WPF, and Windows Phone 7.  Speaking of which, add making 15 new RadControls for WP7 videos to that list above.

So look forward to more great things in the Xaml and overall .Net space from me (I've got a newfound fondness for MVC, and MVC3/Razor makes that even better).  I'm working on a few of them right now, but you're going to have to wait until the February/March area to see when everything has come together.  Until then, look forward to about 45 more Silverlight, WPF, and WP7 videos making their way over to Telerik TV over the next few weeks as I work on them between my other super-secret tasks.  Stay tuned. :)

Telerik XAML controls Q2 2011 SP1

$
0
0
The Service Packs of Telerik XAML controls (Silverlight, WPF and Windows Phone) are out. 

You can find a bunch of improvements and fixes in the service packs that are currently available for download under your accounts. You can check the updated demos at: 

Silverlight demos

WPF demos

Some of the high spots for Silverlight and WPF are: 

  • Improved QCV performance when having lots of groups on many levels (LinqToEntities) in the GridView.
  • Added UI Layers API and allowed more than one style (Bold, Italic, Underline, FontSize) to be set on an empty span while editing a document in the RichTextBox.
  • Optimized memory and performance of the TreeListView.
  • Added declarative support for SqlGeospatialDataReader in the Map.
  • Added support for millisecond-intervals in the TimeBar.

For Windows Phone:

  • In this Service Pack we included a beta version of new BulletGraph control
  • The Chart control is enhanced with 2 new built-in palettes - Contrast and Warm, support for negative values in Polar Charts

For more details and high spots of the SP1 of our Windows Phone controls check Deyan Ginev's post.

The full release notes can be found at:

RadControls for Silverlight | RadControls for WPF | RadControls for Windows Phone

Icenium + Kendo UI = Awesome

$
0
0

Today is a big day for Team Telerik (makers of Kendo UI)! After years of planning and production, today marks the official release of our newest product, Icenium.

And it's awesome.

Icenium is the industry’s first end-to-end, Integrated Cloud Environment (ICE), designed to revolutionize the development of hybrid mobile apps. It combines a powerful set of development tools, mobile simulators, and cloud services in an integrated package that makes it easy for anyone to jump-in to mobile app dev. Today's release ships both the desktop PC development client (Graphite) and the browser-based development client (Mist), along with a companion app for iOS that assists with app development (Ion).

If you did not get to check-out Icenium during the private beta (or even if you did), you've got to check it out today. Right now!

For Kendo UI fans and customers, today's release is interesting for a couple of reasons:

  1. Icenium is an amazing tool to use for Kendo UI Mobile development, and
  2. Icenium Mist is actually built using a lot of Kendo UI Web!

Kendo UI Mobile in Icenium

Kendo UI Mobile and Icenium were made for each other (literally). As this audience should know, Kendo UI Mobile is a collection of HTML5 and JavaScript widgets designed to help developers build native app experiences using web standards. Kendo UI Mobile is unique in its ability to automatically adapt to different mobile platforms, precisely matching the native UX of platforms like iOS and Android. It's the fastest way for developers to build apps that reach the largest number of people. Apps built with Kendo UI can be deployed via the mobile browser or packaged with tools like Cordova and deployed via traditional App Stores.

If you elect to package a Kendo UI Mobile app, normally that means a number new challenges:
  • You've got to download a packaging framework (like Cordova)
  • You've got to setup the Cordova app shells for each target platform
  • You've got setup different IDEs (like Xcode and Eclipse)
  • (And if you're on Windows) You've got to get a Mac to build apps for iOS

With Icenium, all of that hassle goes away.

In an Integrated Cloud Environment, everything from your files and projects to your build tools and frameworks are ready to go wherever and whenever you are. Simply open Icenium, do some development with Kendo UI Mobile, and deploy your app to iOS and Android devices. All of the normal complexity associated with hybrid apps is abstracted away to the cloud.

And since Icenium is from Telerik, we've gone one step further and included access to Kendo UI Mobile in every Icenium subscription! There's even a default project template that can have you up and running with Kendo UI Mobile dev in seconds. More on this special access to Kendo UI in a minute.

Kendo UI in action in Mist

The Icenium Mist development client is a super helpful tool. It gives you access to all of your Icenium projects in any capable HTML5 browser, and it includes many of the Icenium tools (code editor, project build, version control, and more). 

It's also built using Kendo UI Web!

If you look closely, you'll see that the Mist client is using many of the Kendo UI Web widgets, including Splitter, Treeview, TabStrip, Menu, Upload, and ListView. It's also using pieces of the Kendo UI framework, like MVVM, under the covers to provide a modern, responsive, and cross-browser ready HTML5 tool.

What does this mean to you? Two things:
  1. This is some serious dog fooding. Having an internal team at Telerik consume Kendo UI to power such an important, customer-facing piece of Icenium only helps make Kendo UI a better product. All of the feedback and lessons we learn from supporting Icenium go directly in to make Kendo UI a better, faster toolset for your next HTML and JavaScript project.

  2. This is a great "reference" implementation of Kendo UI Web. If you've ever wanted to see how some seriously talented engineers would use Kendo UI Web to build a modern web-based interface, here's your chance to "View Source" and see exactly how it's done.

Mobile License Details

One of the cool things about Icenium, as mentioned previously, is that it includes access to Kendo UI Mobile 

out of the box. This access is usable for any project you develop using Icenium, and it gives you full access to all of Kendo UI Mobile. It is not a complete unrestricted license, though.

If you want access to Kendo UI's professional support, you still need to purchase a normal Kendo UI Mobile ($199) commercial license. That license will give you support, access to incremental builds, and a royalty free license you can use in any of your projects.

Bottom line: If you've already got a Kendo UI Mobile license, you're good to go! If you decide to subscribe to Icenium and use Kendo UI Mobile, that's awesome! If you want the benefits of a full license (like support), though, consider upgrading to a Kendo UI Mobile license purchase.

Next Steps

There's really only one thing left to do: go try the official release of Icenium today!

You should also take a couple of minutes and watch the new "Introducing Icenium" video. You might spot my cameo in there in a couple of places. We hope you enjoy Icenium as much as we do. Stay tuned for much more coverage of Icenium and Kendo UI working together in the coming months.

5 Things everyone should be Aware of in RadControls for Windows Phone

$
0
0

Introduction

Telerik’s RadControls for Windows Phone was officially released in early 2011. We were the first vendor to support Microsoft new mobile platform and have continued to invest in new controls and features ever since. Even though our controls suite has been out since 2011, I’ve found several people at conferences or on webinars that were not aware of what exactly our controls are capable of. That is where we will get begin today.

5 Things you should be aware of.

#1: A new template called, “RadControls for Windows Phone” is added to Visual Studio that allows you to customize your project to fit your needs.

The default Windows Phone Template provided by Microsoft offers no additional configuration options besides the project type. Once the project is created, then you are left on your own to figure out what to do next.

If you select the RadControls for Windows Phone project template, then you will see the project configuration wizard shown in Figure 1 after adding in any additional assemblies.

1

Figure 1: Project Configuration Wizard in a new RadControls for Windows Phone App.

You can easily select a different project type, such as the standard Windows Phone App, Databound App, Pivot or Panorama App as well as add the application bar back. The default Windows Phone template removes the application bar boilerplate code.

Next, we see several common pages found in any professional Windows Phone apps such as the “About” screen and “How to” screen. You can let RadControls for Windows Phone, generate those pages for you as well as structure them properly using the MVVM pattern.

We finally get to Building blocks, which allows us to add common functionality that we typically code in every app with a single checkmark. Let’s examine each of them briefly:

  • Diagnostics: If your application crashes, then it allows you to collect the error information and email it to the author.
  • Trial application reminder: Will remind your user that the application is a trial and prompt them to purchase it. You can specify when the reminder will display in a variety of ways.
  • Rate application reminder: Will remind your user to rate the application in the store marketplace. There is also many different configuration options available.

Once you select finish on the project configuration wizard (using the default options), then you will see the project structure as shown in Figure 2.

2

Figure 2: Project Solution for a new RadControls for Windows Phone App.

Besides the additional references to Telerik’s controls and our new “About” page, you will see several new folders automatically created. But more importantly are the ones called “Commands” and “ViewModels”. Here you can see the project is already structured using the MVVM architectural pattern. If you’re not familiar with the pattern, then the stubbed out code provides a great way to get up to speed quickly. You can also review some of our sample apps mentioned later in the article.

#2: Error Diagnostics – Part of the Building Blocks in RadControls for Windows Phone.

After you have placed a checkmark in Diagnostics in the project configuration wizard or added it through the design templates, we automatically add several lines of code in your App.xaml.cs file to help you analyze where the error occurred. The end-user is presented with the following screen shown in Figure 3.

3

Figure 3: The Application Error Dialog being displayed.

Instead of a normal crash, where the app just exits out, by using our controls the end-user receives a dialog prompt that gently provides what just happened and a way to submit the report via email. You may also receive anonymous crash reports without user interaction as described in this post.

The error report looks like the following:

[ExceptionMessage]:[FormatException]
[StackTrace]:[
   at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
   at Treadmill_Assistant.Views.AddItem.OnNavigatedTo(NavigationEventArgs e)
   at Microsoft.Phone.Controls.PhoneApplicationPage.InternalOnNavigatedTo(NavigationEventArgs e)
   at System.Windows.Navigation.NavigationService.RaiseNavigated(Object content, Uri uri, NavigationMode mode, Boolean isNavigationInitiator, PhoneApplicationPage existingContentPage, PhoneApplicationPage newContentPage)
   at System.Windows.Navigation.NavigationService.Journal_NavigatedExternally(Object sender, JournalEventArgs args)
   at System.Windows.Navigation.Journal.OnNavigatedExternally(String name, Uri uri, NavigationMode mode)
   at System.Windows.Navigation.Journal.ShellPage_NavigatedTo(Object sender, NavigateToEventArgs args)
   at Microsoft.Phone.Shell.Interop.ShellPageCallback.FireOnNavigateTo(IntPtr thisPage, Direction direction, IntPtr pagePrevious)
]
[OccurrenceDate]:[Sun, 17 Mar 2013 21:44:20 GMT]
[AppInstallDate]:[Sun, 17 Mar 2013 21:41:10 GMT]
[AppTotalRuns]:[2]
[AppRunsAfterLastUpdate]:[2]
[AppPreviousRunDate]:[17-03-2013 18:41:10]
[AppVersion]:[1.3.0.0]
[Culture]:[es-CL]
[CurrentPageSource]:[/Views/AddItem.xaml?date=3-20-2013]
[NavigationStack]:[
/MainPage.xaml]
[DeviceManufacturer]:[NOKIA]
[DeviceModel]:[Lumia 610]
[DeviceHardwareVersion]:[112.1569.1.0]
[DeviceFirmwareVersion]:[1066.0000.8773.12160]
[OSVersion]:[Microsoft Windows CE 7.10.8773]
[CLRVersion]:[3.7.11140.0]
[DeviceType]:[Device]
[NetworkType]:[Wireless80211]
[DeviceTotalMemory(Mb)]:[165,5859]
[AppPeakMemoryUsage(Mb)]:[18,88672]
[AppCurrentMemoryUsage(Mb)]:[12,8125]
[IsoStorageAvailableSpace(Mb)]:[4454]
*[ScreenshotBase64String]:[
/9j/4AAQSkZJRgABAQEBBgEGAAD/2wBDAFA3PEY8MlBGQUZaVVBfeMiCeG5uePWvuZHI]
[DecodeScreenshotHere]:[http://www.motobit.com/util/base64-decoder-encoder.asp]

*Field truncated due to length.

As you can see, it provides vital information that will help you diagnose the error. From the stack trace, device info, to memory usage and much more.

Another excellent feature to call out is that it provides the Base64 string of where the error occurred. You can then decode the screenshot and see exactly what the user saw at the time of the error.

#3: Built-in Design Templates – 50+ Available in RadControls for Windows Phone.

I think that it is safe to say that a majority of us would love to have a designer at our own disposal. Someone who understands the design principals and guidelines behind a Windows Phone app. Thankfully, with RadControls for Windows Phone you have that at your fingertips.

If you simply right click on your solution and select “Add New Item”, you will see “Telerik item” listed. If you click on the “Add” button then you will be presented with the screen shown in Figure 4.

4

Figure 4: The 50+ design templates available with RadControls for Windows Phone.

You will see a variety of different templates created by our designer, that will that create pages in your application ranging from:

  • Charts and Dashboards – to visualize your data in a variety of different ways.
  • Navigation – from image carousel to expanding list and much more.
  • Pages – Common static pages such as an “About” or “How To” to input forums such as user login information.
  • Search, Sort and Filter – provides pages that helps your user find what they are looking for fast.
  • Tables –is great for displaying list in a variety of ways.

For example, if I took the “Sign-up” form template found under Pages, the necessary references are automatically added to my project as well as the Commands, Helper classes (to perform validation on input – such as password length) as well as my DataModel is created. An example of this page is shown in Figure 5.

5

Figure 5: The Sign-Up page created by using the Design Template in RadControls for Windows Phone.

Again, we have not written one line of code and we have a MVVM friendly sign-up form with data validation baked in. Remember that this is just one of the 50+ design templates available at your disposal.

#4: Powerful Charts with just One-Click

From your Visual Studio Toolbox, you can simply drag and drop a Chart onto your designer and get a SmartTag that allows you to select from a variety of pre-built charts as shown in Figure 6.

6

Figure 6: The Smart Tag that allows you to pick from a variety of Chart Types.

Once you click on the SmartTag a variety of chart types appear as shown in Figure 7.

7

Figure 7: The variety of chart types that you may select.

Upon selecting a chart type, the XAML will be auto-generated for you including design-time data support as shown in Figure 8.

8

Figure 8: The Area Chart Type which is part of the RadControls for Windows Phone.

As you can see, it is very easy to see the different types of charts available in your phone app without writing one line of code.

#5: The Most Powerful and Flexible ListBox on the Market. Period.

It is hard to find a Windows Phone app that doesn’t include some sort of ListBox. It is the core control of almost any Windows Phone app. Not only is ours blazing fast and support three modes of data virtualization, but it includes features such as item animations as items are adding or removing from the ListBox. It also includes “Pull to Refresh” functionality that refreshes any given item list with a scroll command and is highly customizable. An example of “Pull to Refresh” can be found in Figure 9.

9

Figure 9: The “Pull to Refresh” option in DataBoundListBox.

We have a vast variety of other features available in this control that you may want to examine more carefully.

#6: Bonus Feature!Sample Apps Build by the Pros including a Whitepaper on “How to Market Your App”.

Everyone wants to see the code behind some of the most popular apps in the Windows Phone marketplace and Telerik provides the full-source to them.

    a. ToDoList– Shows how we built our ToDoList application as well as a series on creating the wireframes and building the actual app.

    b. Picture Gallery– Demonstrates how to create a native Windows Phone client for Flickr or another image service.

    c. How to promote your Windows Phone app on a budget whitepaper.– Once your app is built, you will need to learn how to market it. This whitepaper offers tips and tricks from both the developer and marketing perspective. It is something you will definitely want to read.

Conclusion

To recap the “5 Things Everyone Should be Aware of in RadControls for Windows Phone”:

  • A new template called, “RadControls for Windows Phone” is added to Visual Studio that allows you to customize your project to fit your needs.
  • Error Diagnostics – Part of the Building Blocks in RadControls for Windows Phone.
  • Built-in Design Templates – 50+ Available in RadControls for Windows Phone.
  • Powerful Charts with Just One-Click.
  • The Most Powerful and Flexible ListBox on the Market.
  • Bonus Feature! Sample App Build by the Pros including a Whitepaper on How to Market Your App.

Even with that said, we have barely scratched the surface of what you get out-of-the-box with RadControls for Windows Phone. I’d encourage to take a look around the product page and also check out what our customers are building using our controls. On a side note, if you join the Nokia Premium Developer Program, than you get our controls for free.

If you have any questions or comments, then please leave them below.

Happy Windows Phone Dev’ing!

-Michael Crump (@mbcrump)

image

Level up Your Apps with Telerik’s ASP.NET AJAX Q1 2013 SP1 Version

$
0
0

As of yesterday Q1 2013 SP1 is available for download! Service packs are usually maintenance releases with lots of fixes, however this is not all we’ve cooked with this version. There are interesting stuff marked with the tag “New” that will help you level up.

What’s Inside?

The Persistence Framework now supports more controls and persists more client settings out of the box (actually almost all settings that we think make sense). Full list of the items is available in its Supported Controls help article. It now has a design-time wizard for easier configuration and a set of demos showing the basic, but most important features, and how to use them.

The jQuery built in the Telerik.Web.UI assembly was upgraded to version 1.9.1 so the controls and you leverage the latest and greatest.

Another new control from Q1, the DropDownTree, got many new useful and important properties and features. You’ll find them all in the release notes and don’t miss to check the component’s demos.

The last thing I’ll mention before letting you go, is the fact that we added the commonly requested Pinterest network button to our Social Share control.

Go Try It

Now see the full list of items added and improved for the RadControls for ASP.NET AJAX here. Play with the demos. Upgrade to make your apps better. Give us feedback by leaving a comment.


Building an Appointment Tracking App by using Telerik’s WP Cloud Components - Part 1

$
0
0

[Part 1Part 2Part 3Part 4Part 5]

Hello everyone,

With the recent release of our cloud-powered controls for Windows Phone 8, now is a great time to begin using them. Using these components, they can help you create an application that stores its data in the cloud that can be easily accessed by multiple users on multiple devices. In this blog post, I will walk you through several of the cloud-powered controls currently available and teach you how to use them in your app. We’ll create an app called “AppointmentTracker”, which allows users to store information about upcoming appointments and so forth.

Getting Setup

Before we can get started, make sure that you have the latest bits installed. The Q3 2013 release contains both our traditional components as well as our cloud components.

After you have installed our controls, you will find several new templates. The one we are interested in working with today is called “Telerik Cloud Powered Windows Phone App” as shown in Figure 1.

1

Figure 1: The new cloud template installed with RadControls for Windows Phone 8.

The “Telerik Cloud Powered Windows Phone App” template is where we are going to begin, so select it and give it a name and press OK.

After doing so, you will be presented with a Cloud Services Configuration dialog, where you will need to enter your username and password and accept the terms and conditions. From this screen you can either select an existing project or create a new one. Let’s create a new one as shown in Figure 2. This information will carry over to our Everlive account which we will take a look at shortly.

2

Figure 2: Creating a new project with our Cloud Controls.

From here, we can simply click the “Create” button, then finish and our project will be loaded in Visual Studio 2012 or 2013.

Changing the Configuration Type

Launch the Configuration Manager and change the “Active Solution Platform” to x86 instead of ARM, where we can test this on an emulator instead of a device as shown in Figure 3.

3

Figure 3: Changing the Configuration Manager.

The Appointment Tracker App

Now that the app is created and connected to the cloud service, let’s add three Windows Phone Portrait pages. First add a folder called “Views” and then add three pages Login.xaml, Registration.xaml and Appointment.xaml inside this folder. You can go ahead and change the TitlePanel in the Registration.xaml and Appointment.xaml to something more appropriate instead of the default text.
Next, you may go ahead and delete the MainPage.xaml file and edit the WMAppManifest.xml to start the Navigation Page to /Views/Login.xaml.

Login.xaml Page

We are going to begin by editing our Login.xaml page by replacing the ContentPanel with the following XAML.

<!--ContentPanel - place additional content here-->
<Gridx:Name="ContentPanel"Grid.Row="1"Margin="12,0,12,0">
<telerikCloudControls:RadCloudLogin
x:Name="cloudLogin"
SuccessNavigationUri="/Views/Appointment.xaml"
RegisterNavigationUri="/Views/Registration.xaml"><telerikCloudControls:RadCloudLogin.LoginProviders>
<telerikCloudControls:FacebookLoginProvider
ClientId="YOUR_CLIENT_ID"
ClientSecret="YOUR_CLIENT_SECRET"/>
<telerikCloudControls:GoogleLoginProvider
ClientId="YOUR_CLIENT_ID "
ClientSecret="YOUR_CLIENT_SECRET "/>
<telerikCloudControls:LiveIDLoginProvider
ClientId="YOUR_CLIENT_ID "
ClientSecret="YOUR_CLIENT_SECRET "/>
</telerikCloudControls:RadCloudLogin.LoginProviders>
</telerikCloudControls:RadCloudLogin>
</Grid>

While we are here, let’s map the telerikCloudControls prefix to the Telerik.Windows.Controls.Cloud namespace on all pages:

xmlns:telerikCloud="clr-namespace:Telerik.Windows.Controls.Cloud;assembly=Telerik.Windows.Controls.Cloud"

Let’s examine what we’ve done so far, we’ve used one cloud-control called RadCloudLogin and provided the path to two pages if the registration succeeds or if they need to register. After that we’ve used our new Social LoginProviders to make registration even simpler by adding in support for FaceBook, Google and LiveID. You will need to create an app on the social network in order to get the ClientID and ClientSecret. A page in our help documentation describes this in more detail. In my example, I’m using Facebook, so I headed to https://developers.facebook.com/apps and created a new app as shown below. Now I have my ClientId and ClientSecret.

8

If we look at our designer, we should have the following screen as shown in Figure 4.

4

Figure 4: RadCloudLogin with the various social providers.

Please note that Google and LiveID you will need to setup an app similar to the one we did for Facebook.

Let’s switch over to everlive.com and log into our AppointmentTracker instance and go to settings, then user authentication. Make sure you have a check mark in Facebook, Google and Windows Live as shown in Figure 5. This will give our app more flexibility in the future if we chose to add Google and the the Live ID providers.

5

Figure 5: Adding Everlive permissions to the various social providers.

If we run our app with a valid Client ID and Client Secret for Facebook, we would see the following screen after the user touches the Facebook provider as shown in Figure 6.

6

Figure 6: Using Facebook instead of creating another username and password.

As you can see we can now log in using Facebook and after a successful login, it will take us to our stubbed out “Appointment.xaml” page as shown in Figure 7.

7

Figure 7: Stubbed out Appointment.xaml page.

If we look at our Users table, which was automatically generated for us in Everlive. You will see our user has been added as shown in Figure 8.

9

Figure 8: The User Table in Everlive showing the user we just added and Facebook being a provider.

What’s next?

So far, we’ve started an app that uses Everlive as its backend storage mechanism, modified the user permissions to use social logins, created our first Facebook app and used our first cloud component control called RadCloudLogin. In the next part of the series, we will fill in the gaps, by adding in the Login.xaml page as well as begin to use other cloud-powered component such as RadCloudRegistration (in case they choose not to use a social provider) as well as tie in our RadCloudCalendar control. All of this is coming in part 2, so stay tuned!

Thanks,

Michael Crump
@mbcrump

Kendo UI Tooling – which productivity tools do you use?

$
0
0

While building web or mobile experiences with html and javascript, it is great to have not only the robust framework and UI components to get the job one, but also the appropriate tooling that supercharges your productivity. Shortcuts for easy visual styling customization, boilerplates for project types, interactive online playground for code snippets, or debugging via browser DevTools extensions and the likes. 

When it comes to Kendo UI and its tooling belt, we can proudly say that we have all the goodies mentioned above covered.

Styling Tools

If you are in need of point-and-click appearance customization, this is where our Web and Mobile Theme Builders come into place. With a couple of easy steps these styling configurators give the power to modify the look and feel for Kendo UI Web and Mobile widgets to your heart’s content, and then embed/export these styles as ready-to-use in your projects.

WebThemeBuilder

MobileThemeBuilder

Interactive code editing/sharing

Need to quickly test one of the existing Kendo UI online demos and tweak it a bit in par with your preferences, validate something additional or implement a simple test case/proof of concept? No problem. Our interactive Dojo environment is fine-tuned to do just that. Further, you can select your own code editing configuration via the Options menu, as well as define and reuse your code snippets, choose Kendo UI version to run the code against, or select getting-started tutorials to complete in the Dojo.

Dojo

Browser DevTools Extension

Ever wanted to easily inspect and debug the Kendo UI-specific html rendering and javascript execution via the Chrome browser DevTools? This is where Kendo UI’s Chrome Inspector shines.  When installed, the tool becomes part of the standard Chrome DevTools toolbar and can be directly utilized from there. Thus it allows you to perform various actions and have the “Kendo UI code goggles” at any given moment on pages hosting Kendo UI widgets and framework components.

ChromeInspector

Project Templates and Code Analysis

Finally, in cases when you would want to make use of basic Kendo UI project boilerplates, perform code analysis, minification or bundling, or get direct access to relevant documentation, there are several options:

Each of them aims at delivering the foundation for creating web and mobile solutions with Kendo UI, and make the recommended code and performance optimizations during the process.



Which one of these tools have you used so far? What you like or dislike about them, and what you would like to see improved in terms of existing or new functionality? Do you utilize any other productivity tools with Kendo UI, and if so which ones?

I encourage you to share your input in the comments. This will help us prioritize features or pinpoint directions where these gadgets are going to be heading in the future, to make you even more productive as developers.

Mastering the Essentials of UI Automation—Webinar Q&A Follow Up

$
0
0

Wednesday, March 25, Dave Haeffner, joined me (Jim Holmes) for a webinar targeted at helping teams and organizations start up successful UI test automation projects. This webinar was based on a series of blogposts on the same topic hosted here on the Telerik blogs.

You can find the recording of the webinar hosted online and you can sign up to receive a copy of an eBook assembled from those same blogposts.

We had a very interactive audience for the webinar. Unfortunately we couldn’t answer all questions during the webinar itself. We’ve addressed quite a few of the unanswered questions below.

Q: Companies think that automation will make development results better. Not actually true because you cannot test in quality.

A: Absolutely true. “Quality” is a whole team effort. Automation is only part of the equation.

Q: Do we have a way to measure the quality of automation itself? Is it just the same as measuring manual tests, like using some metrics?

A: Metrics are always a tricky thing because too often they drive bad behavior or measure the wrong things. Some metrics I’ve found useful at the team (not organizational level) are number of bugs found by automation, and number of automation scripts written as a result of input from support or other up-stream organizations.

Q: Hi! Currently we're using UFT. Our devs use Jenkins as well. Can we integrate UFT automation scripts to be integrated with Jenkins?

A: I don’t have experience with HP’s UFT, however, I’m certain it can integrate with Jenkins—nearly every test automation toolset has some form of Jenkins integration. Hit up your UFT support folks, UFT’s documentation, or good old Google/Bing.

Q: How do we evaluate which tool we need to use..??

A: The eBook I mentioned at the top of this post will have some very helpful info. Also, I can’t over-recommend Elisabeth Hendrickson’s wonderful post on choosing the right tool.

Q: If all else fails, bribe with FOOD or DRINK!

A: (This comment was in response to a discussion around developer-tester collaboration.) Absolutely. There’s no better way to bring your team together than over food and beverages, adult beverages or not. Struggling to get your team to gel? Throw a lunch and learn, but buy the team food!

Q: My company currently has only manual testers--no automated tests. I am a technical tester and I plan to own Selenium integration tests on a new software product we are planning. How do you recommend I work with development as they write the application code and I write integration tests? How do you identify business value that needs integration tests on a new product when you don't have past data on what has been broken or what has been used the most?

A: First off, you’re not alone! Secondly, your mantra should be “Business value, business value, business value!” Don’t worry about past metrics—focus on what the stakeholder/customer/sponsor has identified as their primary goals moving forward. Get great tests around that, then have the conversation about whether or not it makes sense to test (or even build!) lower value pieces.

Q: Should any project ever have a goal of zero manual testing?

A: No. Next question.

Seriously, automation has a place in an overall test strategy. It is not an overall test strategy by itself. Automation frees testers from burdensome regression and acceptance testing and lets them use their intuition, domain knowledge and skill to evaluate other areas of the system.

Automation plus great testers makes for awesome value delivered to customers.

Q: UI automation is fragile, what are important factors to be considered?

A: A top priority is to work tightly with developers whenever possible. They’ll help with gradually adjusting the UI into a much more testable component.

I’ve always felt teams, with or without tight developer collaboration, need to focus on these factors for less-brittle automation. (Note I didn’t say anything about eliminating fragility of tests, just making it less fragile!)

  • Good locators/find logic
  • Clearly understood async actions (AJAX, etc.)
  • Solid backing APIs for configuration, setup and oracles/heuristics

Q: What are some essentials for any manual testers to know or learn before jumping in to automation?

A: Learn the concepts in the question above about UI automation fragility. Understand that test code is dramatically different from system code. Learn to work with the rest of your team. Perhaps most importantly, learn to focus on value before look and feel.

Q: What components should an Automation Framework have?

A: “Components” can mean lots of different things to different people! Here’s what I’d start out with:

  • Solves the business-level problems you’re trying to fix
  • Can be easily learned and supported by your team/organization over the lifetime of the tests
  • Support for some form of page objects/page repository for centralized element definition
  • Enables your testers and developers to work closely together
  • Enables you to write as much or little code as you need to effectively tie into your system
  • Easy support for handling asynchronous operations in your application
  • Easy way to remotely execute your test suites in a distributed fashion
  • Ease of integrating into systems like TFS, Jenkins, Team City, etc.

Q: What's the most common thing that results into a dropped/killed automation framework?

A: In my experience it’s low value and high cost of maintenance. Few issues are discovered or prevented, but the team needs a huge amount of time to build and maintain the tests.

Q: Where do you draw the line between adding code to a product for automation testability?

A: The line moves from project to project! My line is when the work to make a system more testable outweighs the value (and opportunity cost) of time needed to get that particular aspect of the system tested. Testability is wonderful, but not at the cost of continuing to move forward with delivering value!

Q: With companies going to an agile world, where do automation developers fit in? When do they step in? Do they develop tests for screens being built or screens that have been built already?

A: Teams should focus on writing tests for features in development. A well-functioning team should be able to write automation for features that are currently in development. If you’re not able to do that, it’s an indication you’ve got too few testers, a poor toolset (either for automation or your system), or perhaps your team isn’t collaborating effectively.

As your team improves, you should look at writing automation to backfill functionality that was built before you got adept. Do NOT automate everything. Instead, focus on the high-risk, high-value pieces that don’t have testing around them

Q: Won’t automation help reduce testing efforts which will eventually help reduce testing resources?

A: Perhaps, but using automation to reduce headcount of testers is generally the wrong way to approach the effort. Instead, you should focus on solving other business problems: long ship cycles due to long testing efforts, escaped bugs, high support ticket costs, fear of changing a brittle system, etc.

Q: Can you give some examples of good tests vs bad tests?

A: Bad tests are unclear, mix or conflate test cases, are overly complex, contain duplication and use brittle locators/async handling. Good tests are short, concise, focused, clear and aren’t brittle due to duplication, etc.

Q: Can you link us to the books?

A: Dave’s books, Java and Ruby editions, can be found at http://seleniumguidebook.com/. Jim’s book on Leadership can be found at https://leanpub.com/theleadershipjourney

Q: Can you post a link to the newsletter?

A: Dave’s newsletter is at http://elementalselenium.com/

Q: Do you think it's a good idea to keep automated Cucumber acceptance tests separate from automated Selenium integration/acceptance tests?

A: My (Jim’s) opinion is yes. I prefer to keep different test domains separated. Unit, integration, and acceptance are all best kept separate for two reasons: clarity, and ease of tool support.

Q: I am in charge of GUI testing on our agile team using Telerik Testing Framework on a WPF application and I am trying to find a way to efficiently contribute within the sprint.

A: Read the blog series and eBook! You can best contribute by having early conversations and making sure you’re focusing on writing high-value tests. Early conversations means it’s also easier for you to write GUI tests since you can ask devs for help with a testable UI!

Q: Does a UI tester contribute at the start of an iteration when the GUI isn’t built or after the iteration is done?

A: Start at the start! Work as early in the iteration as possible. All good automation tools let you build your tests ahead of the GUI (now including Test Studio, too! See what’s included in the latest release here), so there’s no reason not to work alongside the development of the feature!

Q: Is automation applicable only to “test driven development” for unit tests, or can it be used for functional tests by an outside tester too?

A: Automation is applicable to unit, integration, functional and other types of testing too.

Q: Our company isn’t supportive of tester/developer collaboration. How can we change that?

A: That’s not uncommon, unfortunately. First, step back and make sure you have a problem that really needs solving. (Read back through the blogpost and eBook for some help.) If you feel you do have a problem that needs addressing, try a couple different approaches.

  • Assemble some cost data around current impacts of your poor quality issues. (Think cost of time to fix issues, customer support impacts, etc.) Give some estimates on how you might reduce those costs while perhaps increasing revenue (higher sales, faster delivery of releases, etc.).
  • Run a short spike to implement a few automated tests around your highest value features, or those which have the most regressions. Collect data around bugs caught by those automated tests.

These approaches help you get hard facts in place to help convince your leadership of the need for and benefits of automated testing.

I can personally attest to the value of the second approach. I once went guerilla and built 50 or so automated tests in secret without my boss’s permission. He was anti-automation until I showed him reports of how many bugs I’d detected while running those tests on a scheduled job over a week’s time.

Q: Is it mandatory for developers to create more test-friendly HTML? I’m often missing good IDs.

A: No. Nor is it mandatory to avoid hitting yourself in the head with a rock; however, both test-friendly HTML and avoiding striking oneself in the head with a rock are much less painful approaches to life.

You can always fall back to combinations of other locator strategies in the situations where developers won’t or can’t get you testable UI. It’s not as fun or easy, but it’s absolutely workable.

Thank you all for your interest! For upcoming webinars, visit this page.

What's Cooking for Q3 2015 in Telerik UI for WinForms

$
0
0

With this post, I want to announce what we are planning for the upcoming Q3 2015 release. There is a lot of stuff in the works, and here are the highlights:

  • We are planning to release a brand-new control called RadDataLayout, which is the natural extension of RadLayoutControl. It will combine the layout flexibilities delivered by RadLayoutControl and the data binding abilities that RadDataEntry provides. In other words, you will be able to display your data objects for editing, and you will be able to customize the layout or allow your end users to do it according to their preferences.
    whats-cooking-for-q3-2015-in-telerik-ui-for-winforms001
  • The next big thing for Q3 is the official release of RadDiagram. After putting great effort into this control, there are a few missing pieces that we are planning to deliver, namely Path and Pencil functionality, information and property editing tools, data binding and localization support.
  • We will also continue on our quest ​to adopt our very own Document Processing Libraries, by introducing new export provides in the suite, ​such as export of RadPivotGrid to excel and .pdf, RadListView to Excel and more.
  • Another interesting thing we are working on is ​improving the RadGridView’s columns group view definition. We plan to introduce a nice and user-friendly UI to assist you in arranging the desired columns layout.
  • Last but not least, with Visual Studio 2015 just out, we will be adding some nice additions to our docking controls, namely:
    • Pinned tabs and preview tab
      whats-cooking-for-q3-2015-in-telerik-ui-for-winforms002
    • Extended docking guides for ToolWindows, which allow docking a certain ToolWindow either as a tool window or as a document window.
      whats-cooking-for-q3-2015-in-telerik-ui-for-winforms003

This should keep us busy for a while. Make sure to share your comments below. As always, you can use our feedback portal to submit your ideas for additions to the suite.

What's New in Telerik Reporting and Telerik Report Server R2 2019

$
0
0
Our second release is here, and we are excited to share all the latest updates across Telerik Reporting and Telerik Report Server. Check out how to generate PDF documents with all applicable accessibility standards, fetch JSON-formatted data or how to use desktop viewers in .NET Core applications. 

The next major versions of Telerik Reporting and Telerik Report Server products have been just published. Now, it's time to introduce the latest features and improvements packed into the R2 2019 release. 

Here’s a quick look at the things we are most excited about: 

PDF Documents Accessibility 

As we keep striving to provide the best user experience for all end-users, it is essential that we can reach out to a wider audience. PDF export format is the most used one in our product, so in this release we decided to continue to push forward our efforts to introduce accessibility support for the exported PDF documents. This improvement is especially important for organizations who broadly use this format like banks, government institutions and big enterprises, where the accessibility support is a must. This will ensure accessibility for people with disabilities who use assistive technology such as screen readers, screen magnifiers, joysticks and other technologies to navigate and read electronic content. 

PDF Accessibility

JSON DataSource Component 

As of R2 2019, we enable offline feeding of the reports with data in JSON format. The JsonDataSource component enables data items to display data stored in JSON document, including files or inline string, without writing a single line of code. Using JsonDataSource allows you to access and display data in a report without parsing the JSON document first. This adds another option of self-containing report definition that does not have external dependencies and can be easily shared for report preview and export. 

JSON Data Source

WPF & WinForms Report Viewers for .NET Core 3.0 

Following today's trends, we’ve enabled the WPF and WinForms report viewers to support the up-and-coming .NET Core 3.0. In this new Core version, Microsoft team will add support for the desktop technologies when officially released. With this and the .NET Core 3.0 support for Progress Telerik Windows Forms and WPF control suites, we enable our users to create fully featured .NET Core desktop applications. 

WPF Core Demo

Telerik Reporting REST Service Targeting .NET Core 3.0

We cannot miss to share that in this release, we’ve also improved our Reporting REST Service to support .NET Core 3.0.

Eliminated Bugs 

For the full list of all the bug fixes, check the release notes for Telerik Reporting and Telerik Report Server

Try it Out and Share Feedback 

We want to know what you think—you can download a free trial of Telerik Reporting or Telerik Report Server today and share your thoughts in our Feedback Portal, or right in the comments below.  

Tried DevCraft? 

You can get Reporting and Report Server with Telerik DevCraft. Make sure you’ve downloaded a trial or learn more about DevCraft bundles. DevCraft gives you access to all the toolsets, allowing you to say “no” to ugly apps for the desktop, web, or mobile. 

Watch the Webinars

And don't forget to look at our release webinars, where our technical experts provide a deep dive into all our new features and functionalities. 

Register for the Telerik Webinar

Register for the Kendo UI webinar 

Register for the KendoReact webinar

Simplified RibbonView, New WebCam & TabbedWindow Controls, More in UI for WPF R2 2019

$
0
0
R2 2019 of Telerik UI for WPF and Telerik UI for Silverlight is already available to download and it is fully packed with cool stuff.  We are introducing two new controls – WebCam and TabbedWindow, new Simplified View for the Ribbon control as well many new features in the Spreadsheet, TabControl and other controls.

Let’s dive into all the new controls and features of this release.

WebCam (Beta)

You wanted it – we delivered it! One of the most voted requests in our Feedback portal is now available in Telerik UI for WPF. RadWebCam allows you to easily capture photo or video and use it within your WPF application.

Here are the features of the initial version of controls:

  • Video stream– the control streams video from the connected camera.
  • Snapshot– easily take a picture by pressing camera button.
  • Snapshot preview– save or discard the taken snapshot.
  • Video recording– record video with ease by pressing the video camera button (without audio for this version).
  • Separate setting control– control the camera settings either through the built-in dialog or through separate control.
  • Localization– all the strings seen in the control are localized in all of our supported languages.

For more info check the WebCam documentation here or give it a spin through our WPF Demos! We need all of your feedback about the control, so we can better shape it (per your needs). Make sure to drop me a line here or in our Feedback portal– I will appreciate it.

Happy selfying !

Tabbed Window Control

Introducing the brand new RadTabbedWindow control. It will allow you to easily create browser-like user interface within your WPF application. You would be able to benefit from all the features of RadTabControl and RadWindow when using RadTabbedWindow.

Here are the key features of the control:

  • Pin/Unpin/Close Tabs– Pin the important tabs on the left side of the control using the respective button. Close any using the built-in close (x) button.
  • Add New Tabs - Add as many new tabs as needed at run-time using the built-in “plus” (+) button.
  • Drag and Drop– User can reorder tabs in a single window, drag out tab to create new window, or drag drop a tab from one window to another.
  • Themes– Benefit from the beauty of all the Telerik UI for WPF themes
  • CodedUI and Automation support

For more details please check this section of our online help documentation.

Simplified Ribbon

SimplifiedRibbon 

RadRibbonView now supports the modern look of the latest MS office application. Using this smaller more compact layout you could show only the common/important commands and have more space for the actual content of the application. With this modern appearance you will impress your customers and at the same time provide better user experience.

So in order to get it working just take your already built Ribbon UI and define the desired simplified UI by setting the SimplifiedItems property of RibbonTab. For more details on how to setup the Ribbon please refer to this help article.

Spreadsheet and SpreadProcessing: Scatter and Bubble charts

As promised, we continue to develop the charting functionality and with this release you can use two more chart types: Bubble and Scatter. The Scatter charts allow you to easily compare the relationship between two variables visually using two value axes. The bubbles are a different way to represent the Scatter charts and enable you to add a third value to the plotted data: the size of the bubbles.



For more info how to display charts in Spreadsheet check this article and for SpreadProcessing this article.

RadWindow Dialogs – Default Button

Have you ever wanted to change the default focused button of RadConfirm? If so – I know your pain. This is now possible without extracting and modifying its ControlTemplate – just set the DefaultFocusedButton property of the DialogParameters as shown below:

1.var dialogParams = newDialogParameters
2.{
3.    Content = "Are you sure?",
4.    DefaultFocusedButton = ResponseButton.Cancel
5.};
6.
7.RadWindow.Confirm(dialogParams);

And here is the result:

Check out the Predefined Dialogs article for more info.

.Net Core 3 Visual Studio Templates

Happy to announce that all of our Visual Studio project templates are available now as .Net Core project templates! Now with just a few clicks you could implement a rich Windows inspired application using the .Net Core version of Telerik UI for WPF. You would be able to choose from the following templates, they are available for Xaml and No Xaml binaries:

Happy coding! ‍

Other Features

  • AutomationManager: Custom AutomationProperties.HelpText will be now supported by setting the UseDefaultHelpText property to false. (link)
  • Themes: Introduced DisabledOpacity as dynamic palette resource for Windows8, Windows8Touch, Office2013, VisualStudio2013 themes.
  • GridView: New SearchMode that indicates whether an item should match any or all of the search terms. (link)
  • Map: Added option to provide API key for the OpenStreetmapProvider. The API key is needed for the Cycle and Transport modes. (link)
  • PropertyGrid: Added ability to control the initial expanded stated of the groups. (link)
  • VirtualGrid: Now if QueryableCollectionView is passed to the DataProvider the control will automatically use it instead of creating new instance.
  • TabControl: Added predefined pin and close buttons of the TabItems. (link)

Sign Up for the Webinar

To see the new release in action, please join us on the Telerik UI R2 2019 webinar, on Wednesday, May 29th @ 11:00 am - 12 pm EST.

Save My Seat

Share Your Feedback

Feel free to drop us a comment below sharing your thoughts. Or visit our Feedback portals about UI for WPFSilverlight and Document Processing Libraries and let us know if you have any suggestions or if you need any particular features/controls.

Try out the latest:

UI for WPF  UI for Silverlight


In case you missed it, here are some of the updates from our last release.

Meet Telerik UI for WinForms FileDialogs, Simplified Ribbon and DomainUpDown in R2 2019

$
0
0

Check out everything that's new in Telerik UI for WinForms with the R2 2019 release.

During the middle of the spring the new R2 2019 release is flourishing. It brings a diverse set of components, new features and amelioration in UI experience.

Let me share the key additions we have in R2 2019:

FileDialogs 

FileDialogs_WinForms

Have you ever wanted to be able to style the file dialogs in your application to appear as awesome as the controls from the Telerik UI for WinForms suite? Voilà! We are very thrilled to announce that the most wanted components by our customers are now here. You can replace the native dialogs with RadOpenFileDialog, RadOpenFolderDialog and RadSaveFileDialog to achieve a comprehensive look and feel! 

Here are a few of the major features of the dialogs:

  • Easy Navigation: The dialogs allow you to easily browse through your file system either through the tree-view-like navigation pane or the breadcrumb/path pane. A history of the visited folders is kept so that you can seamlessly jump back and forth between folders.
  • Search: The out-of-the-box search functionality allows you to quickly find just the files and folders you're looking for by using the Windows Search index when available.
  • Filter: You can specify a filter for the RadOpenFileDialog and RadSaveFileDialog dialogs in order to indicate to the user which types of files should be opened or saved.
  • Layouts: The UI allows the users to change the layout of the main pane by switching between different view modes (Tiles, Small Icons, Large Icons, etc.).
  • Variety of Themes: You can persist the appearance throughout your application by applying any of the predefined themes provided by the UI for WinForms suite to your dialogs.

Simplified Ribbon

SimplifiedRibbon_WinForms

RadRibbonBar introduces a new Simplified LayoutMode, in which all elements in the RibbonBar are automatically arranged on a single row. The simplified ribbon aims to help the user focus more on their work by providing a compact layout which is taking half the height of the standard ribbon.

DomainUpDown

DomainUpDown_WinForms

RadDomainUpDown is a combination of a text-box and a pair of arrow buttons to navigate through a predefined list of items. The control displays a text from a list of string available options. By clicking the up or down arrow button, the user can navigate backward or forward in the items list. It supports:

  • Items navigation by either using the up/down arrow keys or double clicking in the editor.
  • Data-binding - automatically populate the Items collection considering the records in the applied collection.
  • Unbound mode - adding the items manually via code.
  • Auto-complete functionality - appends text to the user's input if there is a match inside the Items collection.

Form Converter

Back in R3 2018 we introduced a RadFormConverter which is a powerful tool for converting standard forms to RadForm, RadRibbonForm and RadTabbedForm. Now, in R2 2019, if you have at least one control from the Telerik UI for WinForms suite on a Windows Forms Form, you can use the Form's smart tag to convert it to a RadForm, RadRibbonForm or RadTabbedForm.

FormConverter_WinForms

.NET Core Visual Studio Templates

Visual Studio Templates for .NET Core are introduced in the latest release. Using them, you can quickly end up with a ready to use Telerik UI for WinForms enabled application, based on .NET Core, or to jump start your project with one of the predefined application templates.

  CoreVSTemplates_01

CoreVSTemplates_02

Latest Internal Builds

We have recently released a new page on our website which will give you access to our latest internal builds. These are the distributions built automatically from our source repository and include all latest fixes (new features are usually not included). Regular builds are an integral part of our development process and based on the continuous quality assurance and feedback, we strive to produce the most stable releases possible. If you have experienced any problem with the current official distributions, there is a possibility that the issue has already been addressed in the latest internal build.

LIBs_WinForms

In addition to all these great features and new controls, as usual R2 2019 brings in many more improvements based on your feedback.

Try It Out and Share Your Feedback

R2 2019 is already available for download in customers’ accounts. If you are new to Telerik UI for WinForms, you can learn more about it via the product page. It comes with a 30-day free trial, giving you some time to explore the toolkit and consider using it for your current or upcoming WinForms development.

We would love to hear what you think, so should you have any questions and/or comments, please share them to our Feedback Portal.

Sign Up for the Webinar

To see the new release in action, please join us on the Telerik UI R2 2019 webinar, on Wednesday, May 29th @ 11:00 am - 12 pm EST.

Save My Seat


What’s New in Telerik UI for ASP.NET AJAX in R2 2019

$
0
0

The R2 2019 release for Telerik UI for ASP.NET AJAX is here! Read all about what's new in this release, including various updates to the RadMultiColumnComboBox and continued stability improvements.

May is here and you know what this means: the R2 2019 release is here! In this blog post I want to dive in to what is new for Telerik UI for ASP.NET AJAX with this new release, so let’s jump right in!

Updates to the RadMultiColumnComboBox

Some of you may have noticed that when we shipped the RadMultiColumnComboBox it had a limited set of themes that could be used with it. In terms of feedback that we received from our developers this was a fairly popular control and rather than delay a release due to the lack of certain themes we wanted to get something out in your hands right away. Well, with the R1 2019 behind is we could focus on implementing additional themes for the RadMultiColumnComboBox, which we released with R2 2019! So, if overall styling was holding you back from using the component then you have no
excused with this release!

RadMultiColumnComboBox showcasing a different theme applied to the control. 

Beyond themes we also went ahead and added several server-side events that we found to be needed for the RadMultiColumnComboBox. While we have quite a few client-side events, we wanted to expand what can be done on the server-side as well, hence the addition of the new server-side events! For a full run-down I recommend checking out our RadMultiColumnComboBox documentation section on server-side programming.

Button Gets a Confirmation Dialog

Adding an ability to work with the default browser confirm dialog, or work with the RadConfirm dialog, when using the RadButton has been one of our most requested features in our feedback portal. This can be extremely useful in scenarios where you want the user to confirm the action they’re about to do. This has technically been possible with some custom code, but now we are providing a quick and easy way to offer this with the RadButton component out-of-the-box!

Continued Stability Improvements

I always like to highlight that the UI for ASP.NET AJAX team continues to ensure that every release is the most stable release of UI for ASP.NET AJAX to date. With R2 2019 we have focused on our issues backlog and worked hard on improving the overall stability of UI for ASP.NET AJAX. This includes things like updated browser support to the latest and greatest, as well as a ton of under-the-hood items.

Upcoming Webinar

Want to see what we brought up here, plus what’s new with all of our .NET-based products? Join me and my colleagues for the official R2 2019 Telerik webinar on Wednesday, May 29th, at 11:00 AM ET! Seats are limited so make sure that you click on that link I just posted and reserve your spot today!

What's New in R2 2019 for Telerik UI for ASP.NET MVC & Core

$
0
0

The R2 2019 release for Telerik UI for ASP.NET MVC and UI for ASP.NET Core has arrived. Check out the latest and greatest including new components like the PDF Viewer and Drawer, or new features like Endless Scrolling in the ListView and data binding for the menu.

May is here and with it I bring the good news about the R2 2019 release for UI for ASP.NET MVC and UI for ASP.NET Core! These products share a lot of commonality so I wanted to cover them both in a single blog post. There’s a lot to cover here so lets jump straight in to things:

Support for ASP.NET Core 3.0 Preview 5

The first big thing that I want to announce here is that the Telerik UI for ASP.NET Core components are now compatible with ASP.NET Core 3.0 Preview 5. This ensures that those of you already looking at ASP.NET Core 3.0 can test our components in this preview version and prime us for the official release of ASP.NET Core 3.0.

New Component: PDF Viewer

UI for MVC & Core PDF Viewer component with lorem ipsum pdf content

The PDF Viewer component brand new for this release and is designed to let your users view and interact with PDF files without the need to download the file and work with it locally. The UI for ASP.NET MVC and UI for ASP.NET Core PDF Viewer be bound to a PDF file on initial load, or a user can even open a local file to view within their apps. Users can of course download the file they are currently viewing to their own machine. The UI is fully responsive and adaptive, which means the PDF Viewer works well in desktop and mobile scenarios alike.

A big item to bring up here is that the PDF Viewer comes with virtualization already in its first version! In order to make sure we can fit any high-performance scenario we wanted to make sure this was a part of our first release.

Finally, when it comes to actually processing the PDF files you have your choice of working with PDF.js or with the Telerik Document Processing Library to help process your PDF files for viewing and saving.

New Component: Drawer

UI for MVC & Core drawer widget expanded in modal mode

Another new component for R2 2019 is the Drawer widget. While this component has become a go-to for navigation across applications everywhere, just as a quick recap the drawer component is a menu that expands and collapses upon clicking a button (like a hamburger button in many mobile scenarios). Usually this is on the left or right side of the page and it provides a slick way to have navigation with minimal impact on real estate.

Showing or hiding the menu, which can be done in a modal way (overlay on top of content) or by pushing content to the side, can easily be toggled through clicking the drawer button or even through usage of our API. Each menu item comes with a default combination of a text and an icon, but you can also customize how each menu item appears through templates.

The drawer also features a “mini” mode which lets you show the drawer while only rendering the icons that you have chosen - a very compact way to add navigation to your web applications.

Big Focus on the Spreadsheet Component

A component that deserved some attention in the last couple of months was the Spreadsheet component, and with R2 2019 we are bringing a ton of highly requested features to this component.

Image Support

A long awaited feature: adding images to your Spreadsheet is now possible with R2 2019! You can add images to any cell, drag & drop the images around, and of course delete them as well. Any image(s) you add to your document will of course be exported whenever your users save the spreadsheet locally as well.

Cell Comments

This is pretty self-explanatory, but now it is possible for users to add comments in to any cells - bridging the gap even more with existing features they may have with desktop-based spreadsheet solutions.

Additional Events

This has been a big one, especially since it allows for further customization of the Spreadsheet itself. With R2 2019 we introduced a whole slew of new events:

  • Changing
  • DataBinding
  • DataBound
  • Paste
  • Cut
  • Copy

These provide a pretty solid amount of choices to ensure that you can take full control over the Spreadsheet component for ASP.NET MVC or ASP.NET Core to fit any of your application’s requirements.

Mobile & Adaptive Renderings

In order to ensure that our developers do not have to make a choice between desktop or mobile, and instead think about responsive design and Progressive Web Apps (PWAs), we’ve gone through and updated/improved the way two of our bigger components handle mobile devices. Specifically we have started to think about the adaptive rendering which is a bit different than just responsive design.

Adaptive rendering allows you to take over more of the view port and truly adapt to being on a mobile device. Rather than changing what is show or hidden when on smaller screens the component will show alternate UX in order to better suit the functionality of the components.

This has been a part of our Grid and Scheduler components for a while, but it was specifically geared towards hybrid mobile UI rather than a more modern approach of mixing desktop and mobile. So, we’ve updated things to be built-in to the components themselves (rather than rely on our hybrid UI framework) and also updated things for more modern UX design guidelines.

The Grid

Telerik UI for ASP.NET MVC & Core Grid showcasing adaptive rendering which adapts to provide a more applicable UX for mobile

Normally responsive design is brought up with the Grid we need to think about what columns to show or hide, and what other elements we can either remove or compress (pager comes down to a drop down rather than full pager, for example).

However, the Grid has filtering, sorting, user control for showing and hiding columns. All of these feature require UI elements to handle, and more often than not the desktop variations of the UX for interacting with them may be a bit clunky on mobile. Popup menus are pretty bad to deal with on mobile quite honestly. With adaptive rendering we have that in mind and we have created an alternate user experience for interactions with the Grid.

Here’s a sample of adaptive rendering in action. This is the page that appears when you tap on the header icon:

Telerik UI for ASP.NET MVC & Core Grid showcasing adaptive rendering that provides a list view with switches for column settings

Rather than another popup we now have a ListView with various options we can toggle (sorting), as well as providing switches for showing and hiding columns. Beyond this we also see with the > symbol that there is another level for filtering, which will also display a ListView of options.

A note here is that this isn’t the default behavior of the Grid. By default we assume that you want to work with responsive design. However, this type of functionality is only a configuration option away.

The Scheduler

Telerik UI for ASP.NET MVC & Core Scheduler showcasing a day view with an adapted user experience for mobile

Similar to the Grid, the Scheduler is a bigger component that can benefit from the adaptive rendering style rather than trying to squish everything in to a smaller screen.

Telerik UI for ASP.NET MVC & Core Scheduler with an agenda view adapted for mobile view ports

The image here showcases the agenda view, just one of the many views that work on mobile, with some grouping around resources. Tapping on any one of these items brings up an editable form that has a more mobile-friendly UX to help with editing on mobile devices.

Just like the Grid, this isn’t the default option. Instead this is offered through a configuration option to turn on or off.

The DateRangePicker

The DateRangePicker was added in R1 2019 and we almost immediately received feedback around what we can do for mobile devices. While it worked OK-ish, we certainly could improve. So, with R2 2019 the DateRangePicker has an improved mobile experience that should let you showcase the component on any device without concerns!

ListView Gets Endless Scrolling

Endless Scrolling continues to be a popular way of scrolling in our larger list-based components. This type of scrolling functions by loading more data once a user scrolls to the bottom of the current page, then the next set of data gets loaded. So, under the hood it operates similar to paging but to the end-user it seems like they can just continue to scroll.

The ListView is no exception to having this be a popular request, in fact it was the top-rated feature within our feedback portal until just now. With R2 2019 we can now mark this feature request as done because the ListView officially supports endless scrolling!

Miscellaneous Enhancements

Bind Menu to DataSource

With R2 2019 the Menu component supports being data bound via a DataSource! This means you can connect your menu to any back end (WebAPI maybe?) and pull in the data items from your data store.

DataSourceResult & DataSourceRequest Get Their Own Package

Previously the DataSourceResult and DataSourceRequest functionality that UI for ASP.NET MVC and UI for ASP.NET Core relies on has been built-in to the libraries. However, with these two products and our newly launched UI for Blazor all taking advantage of this code we wanted to make things a bit more modular. So, with R2 2019 we have separated out this functionality to the Telerik.DataSource package. This means you can use this whenever you are using filtering, sorting, grouping and paging on the server - all without depending on MVC.dll or Kendo.MVC.dll!

A quick note to make here is that while we recommend thinking about migrating to using Telerik.DataSource where you can, we haven’t removed the code internally to our libraries yet to ensure that we don’t introduce breaking changes!

Improved UI for ASP.NET MVC and Core Docs

We have also gone through the existing MVC and Core documentation resources and tried to update the API sections for both products. While we always try to improve documentation between every release, I wanted to especially highlight this as we spent some time on making the API of these two libraries easier to navigate through.

Upcoming R2 2019 Webinar

Want to see everything I brought up here in action? Looking for more information on other .NET UI libraries from Telerik? Well you’re in luck because on Wednesday, May 29th, at 11:00 AM ET we have the official R2 2019 Telerik webinar! Seats are limited so make sure that you click on that link I just posted and reserve your spot today!

Telerik UI for Blazor 1.1.0 Arrives!

$
0
0

The 1.1.0 release of Telerik UI for Blazor is here, providing many quality of life features and bug fixes to existing components.

The development team behind Telerik UI for Blazor is not one to sit back and relax - which is why I can announce that today we have the 1.1.0 release not even two weeks after the initial launch of 1.0.0!

This release brings some new features to existing components, as well as some bug fixes that are worth highlighting, so let’s dive right in.

Blazor Button Component

The Button component now exposes a type attribute that allows you to define different types of buttons based on your desired behavior - just like the type attribute on a regular HTML button element.

By default the Telerik UI for Blazor Button renders a <button type="submit"> element, but if you want to mix things, up as of today, we have the following options available on the ButtonType property of the component:

  • Submit - Renders a type="submit" attribute. Can submit the form and trigger validation. This is the default value.
  • Button - Renders a type="button" attribute. Does not invoke form validation and submission.
  • Reset - Renders a type="reset" attribute. Can reset the current form.

Blazor DateInput Component

The valid and invalid states of the DateInput are now triggered correctly.

Blazor DropDownList Component

The ValueField property now has a Guid property, which means that the Value and ValueField properties can now be one of hte following types:

  • number (such as int, double and so on)
  • string
  • Guid
  • Enum

We also took care of some issues we had around validation with the DropDownList.

Blazor Grid Component

With this release we took care of a couple of quality of life items for the Telerik UI for Blazor data grid. Namely:

  • The Grid’s height can now be set to 100%
  • Grid Command buttons no longer trigger form submission and validation. This improves the in-line editing experience quite a lot!
  • Grid events are now asynchronous
  • We added built-in validation to Grid Popup editor

Some of the bigger bug fixes we took care of for this release are:

  • Resolved an issue where the Grid Popup editor could appear off-screen on a vertically scrolling page
  • Grid filtering will now reset to the first page to ensure all results are properly seen (if there are any results)
  • Fixed an item where a nullable boolean property could not be edited in the Grid
  • Resolved the issue where a non-editable cell (read only) could be edited with inline edit mode

Blazor TabStrip Component

You can now access the Title property of the current active tab. So, if you have a Tab Strip defined like: <TelerikTabStrip ref="@myTabStrip">...</TelerikTabStrip> you could access the Title of the current selected tab using Console.WriteLine(myTabStrip.ActiveTab.Title);.

Interested in Blazor?

Is this the first time you’ve heard of Blazor or Telerik UI for Blazor? Well, if that’s the case then I recommend heading over to the Telerik UI for Blazor overview page to find out more! You’ll find some more information about the Blazor framework itself, as well as sing up for a trial of our UI components - all from one convenient place!

Want to Influence What’s Next?

We continue to improve and add to our list of UI components for Blazor and it’s all based off of your feedback! If there are components you wish that we would work on, or features that you want to see in existing components, feel free to comment in the section below or head over to our public feedback portal for Telerik UI for Blazor to make your voice heard!

Telerik and Kendo UI R2 2019 Release is Here!

$
0
0

The second Telerik and Kendo UI release of the year has arrived! Check out the all-new and first-to-market Telerik UI for Blazor, and learn everything that's new, including new components and hundreds of improvements!

Every day as we open the telerik.com home page, we are reminded of the goal we are pursuing—to make Modern UI easy for you. On the web, on desktop and on mobile, with your framework and programming language of choice. Enabling you to be the best developer you can possibly be.

Our second release for 2019 delivers precisely on this goal by providing support for the latest technologies for building applications. We are excited to introduce the GA release of the all-new Telerik UI for Blazor component suite, packed with more than 16 native components. In addition, we are also happy to announce support for Visual Studio 2019 and .NET Core 3.0, numerous new controls and improvements across all frameworks and platforms. Read on for more details, and for those of you who just want to get the bits right away, you can get them here.

First to Market with Telerik UI for Blazor

If you haven’t heard of Blazor, you should really check it out. Blazor started as an experimental .NET web framework embracing WebAssembly to target web applications using C# and HTML. Your C# compiles to WebAssembly, so no need for JavaScript!

As one of the first teams to throw our support behind this new Microsoft framework, we want to help Blazor mature faster and ensure the ecosystem around it is ready for all of you who are as passionate about Blazor as we are.

We are so proud thatTelerik UI for Blazor 1.0.0 is here! With the initial release we have the following UI components ready for you right out of the box.

  • Grid
  • Area, Column, Bar, Line, Pie, Donut Charts
  • Calendar
  • Date Input and Date Picker
  • DropDownList
  • Numeric Textbox
  • Button
  • TabStrip
  • TextBox
  • Window
  • Animation Container

That’s a huge number of components! And all of them are native to the Blazor framework, so no funky business with wrappers. After a lot of research we decided to build the components natively in order to take full advantage of the framework capabilities and not make any sacrifices in terms or performance or functionality. With this list you can already start developing pretty advanced applications using Blazor. Needless to say, more components will be coming as soon as they are ready.

All of the input components can take advantage of Blazor’s validation framework and there’s full support for templates across the board.

One of the heavier hitters here is obviously the native Grid component. Just as a quick highlight, here are the initial features we have managed to squeeze in to the Grid (with more to come of course).

  • Paging
  • Sorting
  • Filtering
  • Show/Hide Columns
  • Cell Templates
  • In-cell Editing
  • Inline editing
  • Popup Editing
  • Custom form for editing
  • Custom editor (editor templates)

There’s just so much to showcase in the new Telerik UI for Blazor, so if you want to deep dive into it you can easily do it now.

If you’ve already been using Telerik UI for Blazor in its earlier iterations, you can go over to our What’s New in Telerik UI for Blazor 1.0.0 page to see what’s changed.

Blazor at Build

What’s New in the Telerik Line of Products

The R2 2019 release formalizes our support for Visual Studio 2019 and .NET Core 3.0, and brings a bunch of new controls for your web, mobile and desktop applications. While not a comprehensive list, below are our Telerik release highlights. Make sure you check out the release notes and blogs (see the table below) for each product to learn about everything that is included.

Web

  • Telerik UI for ASP.NET Core—Now features official support for .NET Core 3.0 preview 5
  • Telerik UI for MVC and Telerik UI for ASP.NET Core - New PDFViewer component, ListView endless scrolling, Spreadsheet and DataRangePicker improvements, as well as adaptive rendering for Grid and Scheduler
  • Telerik UI for AJAX—Updates to the MultiColumnComboBox and Button controls as well as plenty of stability improvements 

Mobile—Telerik UI for Xamarin

  • Brand New Controls: Map and Image Editor
  • Introducing a new document processing library for creation and manipulation of PDF documents—PDF Processing
  • The PDF Viewer component is now official, polished and packed with features 
  • Visual Studio 2019 for Mac Support

Desktop—Telerik UI for WPF and WinForms

  • Telerik UI for WPF & WinForms Visual Studio templates for .NET Core apps
  • Simplified Ribbon for WPF and WinForms
  • New TabbedWindow & WebCam controls for WPF
  • New DomainUpDown control and Customizable File Dialogs for WinForms

Reporting, Testing & Productivity Tools

  • PDF documents accessibility and new JSON DataSource component for Telerik Reporting and Telerik Report Server
  • WPF & WinForms report viewers support for .NET Core 3.0 for Telerik Reporting
  • Implement support for Azure DevOps pipeline with build agent hosted in the cloud, verification of method call prerequisites, automatic resolving of test context when using asynchronous tasks for Telerik JustMock
  • Visual Studio 2019 support for Telerik Test Studio Dev Edition 

What’s New in the Kendo UI Line of Products

The R2 2019 release adds a slew of new Kendo UI controls, numerous grid improvements, and rounds out Kendo UI’s native support for three of the most popular JavaScript frameworks (React, Angular and Vue). Be sure to check out the release notes and blog posts (see the table below) for more info.

KendoReact

    • New native components available with this release: Sortable component, Drag & Drop component, Native DateTimePicker component, Native Notification components
    • New Native Editor component - KendoReact rich text Editor is a full-featured, highly customizable WYSIWYG editor
    • Enhancements to existing components, like: Column virtualization and context menu in the Grid, Drag & drop and selection support in the TreeView

Kendo UI for Angular

A large list of Scheduler enhancements and features, including drag & drop, resizing of events and export to PDF

  • The official v1 release of the rich text Editor, including a whole slew of new tools like inserting images and files, font pickers, formatting drop downs and localization just to name a few
  • Grid enhancements including infinite scrolling, cell spanning and more
  • The DropDown components have added virtualization for high-performance scenarios
  • New color palette and color picker component
  • Additional accessibility features to help ensure compliance with WCAG 2.1

Kendo UI for Vue

  • Native Vue Grid enhancements including grouping virtualization, locked columns and column menu
  • The ListView component added the top-voted feature: Endless scrolling
  • New border radius options for ThemeBuilder

Kendo UI for jQuery

  • New PDF Viewer component
  • Spreadsheet enhancements including paste-value, add images, comments and row height autofit
  • Grid enhancements including adaptive grid rendering
  • The ListView component added the top-voted feature: Endless scrolling
  • Enhancements for mobile support including adaptive rendering for the scheduler, and full mobile support for the DateRangePicker
  • Menu component integration with the DataSource
  • New border radius options for ThemeBuilder

You can find out more details on all this at the Kendo UI release blogpost.

R2 2019 Release Blog Posts

While this blog post provides a high-level overview, you will want to check out these in-depth blog posts which cover all new features in detail.

Kendo UITelerik Reporting & Mocking 
KendoReactTelerik UI for ASP.NET MVCTelerik Reporting and Report Server 
Kendo UI for AngularTelerik UI for ASP.NET Core Telerik JustMock 
Kendo UI for VueTelerik UI for ASP.NET AJAX 
Kendo UI for jQueryTelerik UI for Xamarin 
 Telerik UI for WinForms  
 Telerik UI for WPF 

 

Your Feedback Matters!

We’d appreciate you pulling our new release today and sharing your feedback at https://feedback.telerik.com to help us shape the future of our Telerik and Kendo UI line of products.

Sign Up for Release Webinars

Seeing is believing, so register to see all the new features—WEBINARS ARE COMING UP FAST! It will help you to follow along easily if you download the latest release here.

Telerik Webinar

Date/Time:  Wednesday, 29 May 2019, 11 a.m. – 12 a.m. ET

Register for the Telerik Webinar

KendoReact

Date/Time: Tuesday, 4 June 2019, 11 a.m. – 12 a.m. ET

Register for the KendoReact webinar

Kendo UI

Date/Time: Thursday, 6 June 2019, 11 a.m. – 12 a.m. ET

Register for the Kendo UI webinar 

Nine Performance Tips for Azure App Services

$
0
0

We always want the best performance from the software we deploy to Azure App Services. Not only does better performance make our customers happy, but better performance can also save us money if we “do more with less” in Azure. In this article we'll look at settings and strategies for improving the performance of web applications and web APIs running in an Azure App Service. We'll start with some easy configuration changes you can make for an instant improvement.

Enable HTTP/2

Microsoft announced support for HTTP/2 in App Services early in 2018. However, when you create a new App Service today, Azure will start you with HTTP 1.1 configured as the default protocol. HTTP/2 brings major changes to our favorite web protocol, and many of the changes aim to improve performance and reduce latency on the web. For example, header compression and binary formatting in HTTP/2 will reduce payload sizes. An even better example is the use of request pipelineing and multiplexing. These features allow for more concurrent requests using fewer network sockets and help to avoid one slow request from blocking all subsequent requests, which is a frequent problem in HTTP 1.1 that we call the “head-of-line” blocking problem.

To configure your App Service to use HTTP/2 with the portal, go to Platform Settings in the Configuration blade. Here you will find a dropdown to specify the HTTP version. With 2.0 selected, any clients that support HTTP/2 will upgrade their connection automatically.

HTTP Version Selection in App Services

HTTP/2 might not benefit every application, so you will want to run performance tests and stress tests to document your improvements. Here's a simple test where I used the network tools in Firefox against a page hosted in an App Service. The page references a handful of script and CSS resources, and also includes 16 images. Each image is over 200 KB in size. First, I used the developer tools to record what happens on an App Service using HTTP 1.1. Notice how the later requests start in a blocked state (the red section of the bars). This is the dreaded “head-of-line blocking” problem, where limitations on the number of connections and concurrent requests throttle the throughput between the client and the server. The client doesn't receive the final bytes for the page until 800ms after the first request starts.

HTTP 1.1 Blocking

Next, I switched on HTTP/2 support in the App Service. I didn't need to make any other configuration changes on the client or the server. The last byte arrives in less than 500ms. We avoid blocking thanks to the improved network utilization of HTTP/2.

HTTP/2 Improvements

In front of every Azure App Service is a load balancer, even if you only run a single instance of your App Service Plan. The load balancer intercepts every request heading for your app service, so, when you do move to multiple instances of an app service plan, the load balancer can start to balance the request load against available instances. By default, Azure will make sure clients continue reaching the same app service instance during a session, because Azure can't guarantee your application isn't storing session state in server memory. To provide this behavior, the load balancer will inject a cookie into the first response to a client. This cookie is what Azure calls the Application Request Routing Cookie.

If you have a stateless application and can allow the load balancer to distribute requests across instances without regard to previous requests, then turn off the routing cookie in the Configuration blade to improve performance and resiliency. You won't have requests waiting for a server restart, and when failures do happen, the load balancer can shift clients to a working instance quickly.

The routing configuration is another item you'll find in the Platform Settings of the App Service Configuration blade.

Turning off Instance Affinity

Keep the App Service Always On

If you've deployed applications into IIS in the past, you'll know that IIS will unload idle websites after a period of inactivity. Azure App Services will also unload idle websites. Although the unloading can free up resources for other applications that might be running on the same App Service Plan, this strategy hurts the performance of the app because the next incoming request will wait as the web application starts from nothing. Web application startup time can be notoriously slow, regardless of the technologies involved. The caches are empty, the connection pools are empty, and all requests are slower than normal as the site needs to warms up.

To prevent the idle shutdown, you can set the Always On flag in the App Service Configuration blade.

The Always On App Service Flag

Use a Local Cache

By default, the file system for your App Service is mounted from Azure Storage. The good news is your file system is durable, highly available, and accessible from multiple App Service instances. The sad news is your application makes a network call every time the app touches the file system.

Some applications require the Azure Storage solution. These are the applications that write to the file system, perhaps when a user uploads a file, and they expect the file system changes to be durable, permanent, and immediately visible across all running instances of the application. Other applications might benefit from having a faster, local, read-only copy of the website content. If this sounds like your application, or you want to run a test, then create a new App Setting for the app with a key of WEBSITE_LOCAL_CACHE_OPTION and a value of Always. You'll then have a d:\home folder pointing to a local cache on the machine and populated with a copy of your site content.

Using a Local Cache

Although I say the cache is read-only, the truth is you can write into the local cache folder. However, you'll lose any changes you make after an app restart. For more information on the tradeoffs involved and how the local cache works with log files, see the Azure App Service Local Cache overview.

Keep Your Customers Close, and Your Resources Even Closer

All the performance improvements we've looked at so far only require configuration changes. The next set of improvements require some additional infrastructure planning or restructuring, and in some cases changes to the application itself. The common theme in the next set of tips is to reduce the distance bits need to travel over the network. The speed of light is finite, so the further a bit has to travel, the longer the bit needs to reach a destination.

Co-Locate Your App Service and Your Database

In Azure you assign most resources you create to a specific region. For example, when I create an App Service, I can place the service close to me in the East US region, or, if I'm on an extended visit to Europe, I can select the North Europe region. If you create multiple resources that work together closely, you'll want to place the resources together in the same region. In the past I've seen performance suffer when someone at the company accidentally places an App Service in one region and an associated Azure SQL instance in a different region. Every database query from the App Service becomes a trip across the continent, or around the world.

How do you check your existing subscriptions to make sure your resources are properly co-located? Assuming you don't want to click through the portal to check manually, you can write a custom script or program, or use Azure Policy. Azure Policy has a built-in rule to check every resource to ensure the resource location matches the location of the resource's parent resource group. All you need to do with this rule in place is make sure your associated resources are all in the same resource group. The policy definition for this audit rule looks like the following.

{
  "if": {
    "field": "location",
    "notIn": [
      "[resourcegroup().location]",
      "global"
    ]
  },
  "then": {
    "effect": "audit"
  }
}

Keep Your App Service Close to Your Customer

If most of your customer traffic originates from a specific area of the world, it makes sense to place your resources in the Azure region closest to your customers. Of course, many of us have customers fairly distributed around the world. In this case, you might consider geo-replicating your resources across multiple Azure regions to stay close to everyone. For App Services, this means creating multiple App Service plans inside of multiple Azure data centers around the world. Then, you'll typically use a technology like Azure Traffic Manager to direct customer traffic to the closest App Service instance.

Traffic Manager is a DNS-based load balancer. So, when a customer's web browser asks for the IP address associated with your application's domain, Traffic Manager can use rules you provide and other heuristics to select the IP address of a specific App Service. Traffic Manager can select the App Service with the lowest latency for a given customer request, or you can also configure Traffic Manager to enforce geo-fencing where the load balancer sends all customers living in a specific province or country to the App Service you select. You can see the routing methods built into Traffic Manager in the Create Traffic Manager profile blade below.

Setting up a Traffic Manager Profile

There are tradeoffs and complications introduced by Traffic Manager. It is easy to replicate stateless web applications and web services across data centers around the world, but you'll need to spend some time planning a data access strategy. Keeping one database as the only source of truth is the easiest data access approach. But, if your App Service in Australia is reading data from a database in the U.K., you might be losing the performance benefits of geo-replicating the App Service. Another option is to replicate your data, too, but much depends on your business requirements for consistency. Data replication is typically asynchronous and delayed, and your business might not be able to live with the implications of eventual consistency.

Keep Your Content Close to the Customer

Azure's content delivery network allows you to take static content from Azure Storage, or from inside your App Service, and distribute the content to edge servers around the world. Again, the idea is to reduce the distance information needs to travel, and therefore reduce the latency in network requests. Static files like script files, images, CSS files, and videos, and are all good candidates for caching on the CDN edge servers. A CDN can have other benefits, too. Since your App Service doesn't need to spend time or bandwidth serving files cached on a CDN, it has more resources available to produce your dynamic content.

When setting up a CDN profile in Azure, you can select a pricing plan with the features you need from a set of providers that includes Microsoft, Verizon, and Akamai.

Setting up a CDN Profile

Keep Your Apps Together

Today's architecture fashion is to decompose systems into a set of microservices. These microservices need to communicate with each other to process customer requests. Just like keeping your application and database close together can benefit performance, keeping your microservices close to each other can benefit performance, too.

With App Services, remember that multiple services can live on the same App Service Plan. Think of the plan like a virtual machine dedicated to the role of a web server. You can place as many applications on the web server as you like, and keeping services together can reduce network latency. However, keep in mind that having too many services on the same machine can stretch resources thin. It will take some experimentation and testing to figure out the best distribution of services, the ideal size of the App Service Plans, and the number of instances you need to handle all your customer requests.

Summary

We've looked at several strategies we can use to improve the performance of web applications and web APIs we've deployed to Azure App Services. Just remember that your first step before trying one of these strategies should be to measure your application performance and obtain a good baseline number. Not every strategy in this article will benefit every application. Starting with baseline performance numbers will allow you to compare strategies and see which ones are the most effective for your application.

Viewing all 1954 articles
Browse latest View live