Deploy Silverlight With Local IIS - Advisable? - silverlight

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.

Related

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.

How to host Shiny apps on windows 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

Since Silverlight 4 can read files on local machine, could it access a SDF file?

I see in some of the SL literature that SL4 (and possibly older versions) allow for file access on the local machine. Would it be possible, then, to install SQL Server Compact on the client machine, and have an SDF file that the Silverlight app could read?
Or I guess, rather, have the Silverlight app talk to a .Net DLL that's reading the SDF file, since Silverlight should be more on the "view" side of the framework.
Edit
The reason for not going straight WPF or Windows client is that we have a use case where we want a web app that can go offline for a limited time. For example, traveling somewhere in rural Brazil that might not have internet connectivity (or bad connectivity.) In that case, we'd like them to take the same app and go OOB and run locally for a time, and then re-sync when they reconnect.
Yap, it can talk to databases, it's feature # 10 in this blog post: Cutting Edge: Silverlight 4 Com Features.
That said, you will have to install something on the client. Thus it would be easier to create a WPF desktop app altogether, as Paul Sasik said in his comment.
I guess a lot depends on the future strategies of Microsoft. Maybe Silverlight will become the preferred client technology also for the desktop.

how to deploy an application automatically

In the office here we have a startup script that runs on the server which will update via copy/paste the software in house if there's a newer version on the server or not. This was simple, easy and fast to implement.
There is now a problem, many of our users are off-site and they use laptops/tables which don't connect to the domain to run the startup scripts - which means that these have to be manually deployed. This was fine for the one user that I've had for a good while. Now that I've got 10 - it's a no go. I've got to figure out a better solution.
Without developing something homegrown, are there any solutions out there that make auto-deploying/updating easier?
Note: This is a winforms app.
Is ClickOnce an option?
There's a lot to read at the link I am pointing you to, but it's really pretty simple. You would have to publish the app to a live web server, though. Something that can be accessed from off the domain. That could pose some security concerns. It's one avenue to explore, though.

What issues can a client have running Silverlight?

My company recently deployed our first Silverlight app, and, as expected, we've had a couple of small issues with getting it to run on some clients' machines. Mostly it was javascript that was disabled or using a non-supported browser, but I was wondering if there was a resource that lists the common issues that users run up against so that we can post in our FAQs section and hopefully decrease the volume of calls we recieve about it.
Thanks.
The user might not have Silverlight installed.
If the user doesn't have administrator permissions he or she cannot install it. -- FAIL!
The majority of users in corporate and government environments don't have administrator accounts.... to make sure they don't install stuff like silverlight. :-)

Resources