How to host Shiny apps on windows server? - sql-server

I have developed some shiny apps which I want to make available to a few selected internal users for testing purposes and continued development.
Deploying the apps on the cloud or on shinyapps.io is not an option, as the apps are handling sensitive internal data.
Using ShinyServer is unfortunately also not an option, as we have a strict Microsoft only IT architecture and I thus have available only
a virtual machine with Windows Server 2012 R2 on it.
I have been doing some web search and have found out the following:
i.) I could host my apps on the Windows machine as explained here: https://stackoverflow.com/a/44584982/7306540 . This seems rather hackish and
not elegant at all. It would only allow hosting of one app at a time and I am not sure if it would allow several concurrent users at all.
ii.) I could use shinyproxy.io which would possibly work on the Windows machine but involves a fair amount of quite complex installation
and configuration work that I am not particularly keen on doing.
iii.) SQLServer 2016 seems to feature some sort of R integration. We are currently using SQLServer2014 and it would be possible to upgrade to 2016
in principle. However, I don't know if the "R features" of SQLServer2016 would allow hosting of Shiny Apps. I found this blog post, https://social.technet.microsoft.com/Forums/windowsserver/en-US/1cf94cbb-c45d-4f8d-8b5e-9d208bfe369a/microsoft-r-server-can-i-host-shiny-apps-yet?forum=MicrosoftR , but without an answer:
Q: Does anyone know more about the capabilities of SQLServer2016 in this regard?
What about other options? Is there any other way to host my apps on the Windows Server? Do the makers of RStudio plan to add a Windows version of ShinyServer? Is anyone else working on this?
I would appreciate any insights into this topic!
EDIT:
Additional hosting options:
iv.) We can install a VM on the Windows Server, e.g. Virtual Box, or VM Player, install Linux and Shiny Server and host from there. We might run into problems in this variant if the Shiny Apps need to access SQL Server DB's on the Windows machine.
i.) This variant could possibly be improved by using (quote #gregL): "pm2.keymetrics.io, a process manager typically used for Node.js in production. The plumber docs describe how you can use pm2 with R: rplumber.io/docs/hosting.html#pm2"

Hosting of Shiny Apps is possible on Windows!
At work, we host several production shiny dashboards, so it is definitely possible. You can host more Shiny apps by extending the i.) solution you mentioned, and using different ports for the Apps. The steps that you need to take are listed here:
make sure that the port is open in the local (evtl. also remote) firewall for TCP/IP connections
run a "scheduled task" on the local machine that starts a local R session as described in i.), make sure that the task does time-out and restarts if needed
Once these settings are in place, you can already test the Shiny App, first locally, and also from the remote station. Editing the shiny app can be done also live, in what the GUI is concerned, but if you want to refresh the data, you will have to restart the R command process.
Tip: You should also have an index webpage where you list all running apps with their ports

Related

Are there any code samples for Uno platform accessing MSSQL, PostgreSQL or MYSQL?

I have tried various ways to connect to different DB engines (asynchronously), but they all failed when I deployed the code and executed it via my browser in WASM format. The code worked well for UWP tho, so I'm a bit baffled.
Although there's a sample for SQLLite in browser, it wasn't too helpful for me. Hopefully someone could give me a few pointers to continue. Thanks in advance
The support for SQLite is about running the database inside of the browser itself, but not about running it from a remote database.
If you need to have such a support, you will need to have a .NET SQL provider that supports plain HTTP/S or WebSockets, which is available for cloud-based databases.
In general though, you may want to consider a WebAssembly app as a mobile app for which it is best to access remote resources like databases through a Web API.
Note that the Chrome developers have in mind the creation of a RAW sockets API, which would enable TCP non-HTTP connections to be created.

Is There Any Client Side Web Automation

I work in a public sector university
I use selenium with C# for automating routine tasks. I have admin rights so I just develop
various win forms apps to do that. But most of my colleagues cant use such apps as they do not
have admin rights. The apps are so useful and time saving that I want it to share with all colleagues
But admin rights is the issue, so please direct me to a solution that can work completely on client side.
Plz also note that I cant create setups and ask networking staff to install it on all PCs as there are
around 150 of them, and also the apps often are updated every couple of months.
PhantomJS worked without requiring admin rights, but it is already paused, as per their official page, so the only hack to my mind is, ask networking staff to install visual studio (with C# setup) on all PCs, this way I can just hand over the apps to all and they can open and run from VS, instead of direct exe, and it will eliminate requiring updating of apps as users will just need to get the latest app folder. A down side is un necessary window of VS and the memory but the benefits would outweigh this issue.

Selenium script breaks when doing other activities

I am using selenium to automate my application.. My applicaton works on IE only.. I dont have much scope for other browser..
but when my scripts are running if i do other activities like reading mails, or update QC in another window.. Those are breaking my scripts (no such element or no such window..) once in a while (mostly out of 10, 2 to 3 times i am facing this issue). But can not make system idle till my scripts are run as i do have other activities after started the script. How to stabilize this?? Any one facing these kind of issues??
Running Selenium tests locally using your one and only IE browser does come at the cost of having to not touch your mouse or keyboard during test executions. A way to get around this is to create one or more virtual machines. VirtualBox from Oracle is a popular choice but there are others. You need to install an operating system on your new virtual machine and odds are that your existing Windows license is single use. You can request an additional Microsoft Windows OS license from your IT department or simply buy one yourself for, what? $190? I have done that when the paper work at my client was unmanageable. My time is worth more than that.
Another alternative is to take advantage of 90 day free licenses from Microsoft.
Start your test on the virtual machine then change focus back to your desktop to do other work. I have even added code to the end of test logic to beep when the test completes so that I know when to expand my virtual machine.
Update
You should add an antivirus to that virtual machine. Safety first. :-)
Selenium does not support and non web-based applications, it only supports web based applications.
So if you are doing activities like reading mails and update QC in other window, you will not able to find the elements through selenium.
If you are facing some challenges with IE browser. Please refer this link:https://code.google.com/p/selenium/wiki/InternetExplorerDriver
There are following limitations are given below:
Some limitations of Selenium Automation tool are as follows:
It does not support and non web-based applications, it only supports web based applications.
Its and open source tool so in case of any technical issues you need to rely on the selenium community forums to get your issue resolved.
You need to know at least one of the supported language very well in order to automate your application successfully.
No inbuilt reporting capability so you need plugins like JUnit and TestNG for test reports.
Lot of challenges with IE browser.

Redis in windows platform

Can I use REDIS in my application which needs to be run in windows platform.
I'm worried about the statement in the official site
The Redis project does not directly support Windows, however the
Microsoft Open Tech group develops and maintains an experimental
Windows port targeting Win32/64. Currently the port is not production
quality but can be used for development purposes on Windows
environments. We look forward for collaborating with the authors of
this efforts but currently we will not merge the Windows port to the
main code base.
or any other alternates(windows platform) providing the same functionality?
I think there is something wrong in your understanding : Do not be confused between where your application is hosted and where Redis server is hosted.
As a separate (NoSql) Database Redis can be consumed by MANY client types. Check this : you could use Redis in C#, Ruby, C, PHP, Java... So your application could be written in any technology, you just have to connect to a Redis server.
You're true, Redis is not directly supported on Windows but Microsoft has forked the project a few month ago. The git is available here. Even if it's not production-ready, it's a valid solution for dev environment.
The good question is : does your application could be run on multiple environnements, Windows and/or Linux ? I suppose it's a web app. This means front-end on Windows and Redis DB on Linux.
In some companies, there are strict rules in order to use only one tech : Windows or Linux. Having Cohesive technos is important, but I personally think it's sometimes better to setup everything that will help you to get the job done.

Deploy Silverlight With Local IIS - Advisable?

I'm in the process of reengineering a desktop application to a Silverlight4-WCF client-server architecture. Apparently, some (not all) of our clients have very limited resources or dysfunctional relationships with their I/T support staff. Consequently, I've been asked to come up with a solution that would enable these clients to install the new SL app on a local desktop, possibly running IIS locally. Will probably wrap all this up in a installer to make deployment super easy.
While I don't endorse the idea of running IIS locally on each user's desktop, my thinking is that it will probably work. The biggest problem I envision is security -- the server code and configuration would be available locally. Still, I'm looking for input from the wider developer community because I'm uncomfortable by the proposal. What kind of hell and difficulties do you envision, or can this work with minimal fuss?
Using IIS locally may be more trouble than it's worth. Most configuration/maintenance tasks require the user to have Administrator access on the computer. Securing it is a bitch. Making sure its configuration doesn't drift and remains working as you release new versions is even more so. Moreover, it's not included in all Windows editions, e.g. Windows 7 Home edition. I recommend trying to roll with IIS Express as an embedded HTTP server instead.
As for code security - if you can't trust your clients' IT to look after deployment and security, or they can't/don't want to, you could host the server-side yourself and bill your customers for it, i.e. SaaS.
Just my 2 cents.
EDIT:
Oh, yeah. If you're concerned about trade secret theft, e.g. reverse engineering of your server code, just run it through an obfuscator, e.g. SmartAssembly. That'll give you an edge. As for IP theft, e.g. piracy, use could use some online license checking scheme - it won't compromise client privacy, and it'll deter copying.

Resources