App Showcase: How I use Rebex.NET in RoyalTS

My name is Stefan Koell, a customer of Rebex.NET and I’m using the Rebex.NET components for more than 3 years now. To better understand how I use the components, let me quickly introduce what Royal TS is and what requirements I had.

Royal TS SSH shell window

Royal TS is a very popular shareware tool for systems engineers and IT professionals who need remote access to systems with different protocols. It allows you to manage your systems using Remote Desktop Protocol (RDP), Telnet, SSH, VNC, web pages, and many more. In addition, Royal TS also offers great features around credential management, task automation, team sharing, and more but the focus of this blog post is, of course, all about the features based on Rebex.NET.

Why Rebex.NET?

A couple of years ago, when I started to think about including support for terminal based protocols (like SSH or Telnet), I was looking for an embeddable component. I looked at various open source projects but also at commercial products. I was already working on integrating PuTTY but since Royal TS is a .NET Framework based application, I felt I needed a .NET component. Easier said than done. It turned out there wasn’t much there.

Luckily I’ve found Rebex.NET and back then, they already offered a very feature rich Terminal control which could easily be used, as it was, to implement a complete Terminal application with Telnet and SSH protocol support. In a matters of hours, I was able to implement a complete and working terminal client based on the Rebex.NET component and in roughly a week, I had a production ready implementation with all the bells and whistles I needed to make this component shine in my application.

Documentation and Support

To be honest, I haven’t had much experience with *nix and network device management, so I also haven’t had a clue what I’m getting into. The API documentation and sample applications helped a lot but I still missed some basic knowledge in that area. The Rebex.NET support team has been a real life saver! They kept up with my newbie questions and were very helpful. It’s rare to find good quality and fast support these days and I really wish more companies offer such great support.

User Response

My users welcomed the addition of the Terminal client in Royal TS. Most users were very familiar with PuTTY and asked a lot of questions about specific features. Again, Rebex.NET was always very helpful and quick in providing a solution, workaround or a brand new feature based on my, or better my user’s, feedback. For example, implementing a search for a text in the Terminal history was provided within hours by the support staff and within a day or two I could release a beta version for my users to test.

RoyalTS - two SSH terminal windows

Going Cross Platform

Well, the Terminal control was the foot in the door. Over time I faced other challenges. Earlier versions of Royal TS used the System.Cryptography namespace to encrypt sensitive data (such as passwords) in the XML based configuration file. Since Royal TS is now available on multiple platforms (OS X, iOS, Android), I faced some issues with that, especially in portable class libraries (PCLs).

Switching my encryption/decryption library to Rebex.NET resolved it for me. I have now a common library for my file and encryption code which can run on all these platforms, including using PCLs.

More Rebex.NET

A year ago, I completely rewrote my build process. In various c# classes and PowerShell scripts I was using the .NET framework classes for FTP uploads (uploads to the build server, upload of the online help to the web server, etc.). Once I rewrote the build scripts, I thought I could give the Rebex.NET SFTP/FTP components a chance. As already mentioned above, the API was easy and it just worked as expected. I was very happy with the result and immediately thought of implementing a full featured (S)FTP/SCP client into Royal TS as well. The S(FTP)/SCP client is still in its infancy but I already have a working prototype.

I also worked on a prototype to make my own Terminal control for iOS and OS X based on the Virtual Terminal API. This is still very rough at the moment but I’m confident that I have a stable implementation for the next major release of Royal TS.

Lastly, I should mention that I’m working on my own VNC viewer based on an open source project. In this project, the standard .NET zlib libraries were used to deflate the stream buffer. Depending on certain scenarios and VNC servers, the .NET zlib method often just crashed. I’ve switched to the Rebex.NET deflate method and could eliminate all the crashes and on top of that, the Rebex.NET implementation is much faster as well.

Summary

I know, when you read the above you may get the impression that I was paid to write that guest post. I’m a happy paying customer and I do not get anything for this blog post, except for the opportunity to mention my product (which you should check out!). The price/performance ratio as well as the support quality and response time is exceptionally good.

About Me

I’m a husband and a father of two girls and a boy. I’m a Microsoft MVP (for System Center Cloud and Datacenter Management) and engaged in many local and online communities. I’m also running the local System Center user group – which I really enjoy. It keeps me on tabs what users really need and wish for in the industry. I’m the founder of code4ward.net (est. 1999), an Austrian based, privately held company providing consulting services and software development.