Multi-target rapid prototyping using Microsoft technologies? - silverlight

I want rapid prototyping: Quickly define screens, links, buttons etc. I want to easily interact with sample data. I want to see things "moving".
An example would be a mail account: I would like to say that a message has a sender, date, subject and content, then say that a "message" screen displays a list of message headers, and clicking on a message header opens a "view message" screen where a "reply" button leads to a "create reply" screen.
You know - Gmail :)
There are two catches:
I want multi-platform targeting: At this stage I'm not yet sure which parts of the project would run on the web, on desktop clients, or maybe on tablets and smart devices (Ok, Ok: iPad/iPod/iPhone).
I know and like Microsoft technologies: C# (or VB), ASP, Visual Studio etc. So I wouldn't like to switch to Rubi, PHP etc.
I thought Sketchflow was the answer, but this is Silverlight which is not portable.
I believe this need is not mine alone, so probably a solution exists out there!
Any suggestions?

Like you say, it's a difficult choice.
Either you stuck with MS Technologies and the answer is Sketchflow (then Blend) and Silverlight which make development very easy, but that are not "standard" : works well on Windows, MacOS and quite well in Linux with MoonLight. Silverlight should work well with Windows Phone 7 but won't work with Apple Iphone/Ipads.
Either you can do it in HTML5, which will be standard, compatible with the most recent browsers (forget about IE 7, Firefox 3 and co) but then the development will not be as easy.
I don't know your app's complexity but i would start doing silverlight + webservices and a Iphone/Ipad app later (using the same webservices via json).
For information, the silverlight penetration rate is 55-60%.

Related

Is Web Browser control in WPF perfect enough to support modern browser features?

We did some experiments loading sample HTML pages in to the latest version of WPF Web browser control which comes with VS 2017 IDE. Seems perfect in most of the cases except when loading following URLs which throws error messages, which is not the case in modern web browsers like IE, Chrome.
E.g.
1. Error message for W3Schools:
Error message for HTML5Rocks :
Please let us know whether WPF browser control is perfect enough to render/support modern web technology features in our desktop application projects?
-Thank you
I believe the "modern" browser experience on Windows in Microsoft Edge. You could use the WebView control to use it in your WPF application as explained in this blog post. This assumes you are targeting the April 2018 release of Windows 10 or later.
If your users are still in Windows 7, you may want to look for a third-party browser control such as for example CefSharp.

Windows Phone 8.1 Store VS Windows Phone 8.1 Silverlight

When I create new Windows Phone project I have an option to create a "Windows Phone" or "Windows Phone Silverlight" app. I know that they have different runtimes and different APIs.
I was under the impression that Microsoft wants to unify Windows and Windows Phone platforms so why is there even a Silverlight version? What benefits does it bring?
Also, if I want to create an app just for Windows Phone and never have plans to bring it to Windows, what should I choose, Silverlight or Windows Phone?
I'd suggest you go with "Windows Phone" (non-Silverlight). It's the new API, which works for both Windows and Windows Phone. At some point you may want to port the app or create a new one for Windows and you'll already know the API (and porting will be way easier). Also, the new API will most likely get more updates and features added, and at some point you may even be forced to update to it (either because the old one is no longer supported, or because it does not have some features that you need).
As it was said in the other answers - the Silverlight option is there only for backward compatibility and is likely to be phased out in time. That is - it's good if you already know the API and have many libraries (yours or others) for WP Silverlight, but if you're just starting - you'd better go for the new technology.
Edit
There is one other thing to consider before choosing between the two types of apps. Some features are only available in a Silverlight app, and others (smaller amount) - only in a Xaml app. Here's an article with some info on the differences: Migrating your Windows Phone 8 app to a Windows Runtime XAML app
Windows RT Xaml is quite new and People have to generate some knowledge first.
Silverlight for phone has been around for years and there's a load of tools available: Phone Toolkit, diverse Controls, etc.
Just killing it off would have hurt many developers who built up intellectual property over a long time forcing them to start over.
When starting a project with Silverlight you will have more things around that help you get stuff done.
When starting with WinRT Xaml, you will have better performance, but will have to figure a lot out by yourself.
So the Silverlight option is there to not throw of Silverlight developers.
I recently started a new project on WinRT Xaml and my experience was that I had to recreate a lot of common tools like Caches, etc. But also a lot of things that were in Toolkits previously are now part of the platform itself. Also, when moving over to Windows 8, you get to share a lot of code which is nice.
Unifying the environment(s) would be ideal. In my opinion, it hasn't been very successful. At one point in time, you could only develop under Silverlight, so what you are seeing is just a newer version of the same thing to keep backwards compatibility as well as to keep Silverlight's developers happy. In the future, it will probably be phased out. Plus if you want to support older Phones, Silverlight is basically your only choice (you'll be surprise, how many WP users haven't updated their 8.0 to 8.1)
There really isn't any other real benefit of Silverlight other than maybe the Windows Phone Toolkit which has been tremendously useful (you can see how many SO's answers rely on this simple addon). Once the universal runtime gets fleshed out to the point where the documentation reflects what's actually available -- then I think it would be the default project for developing in Windows going forward.
If you're just starting, I would use Silverlight the knowledge based is much greater. After you get use to the WP environment then switch to runtime.

Web performance isn't up to snuff... what's the new "Microsoft Way"?

Looking for opinions. I'm working on a mid-sized 3-tier ASP.NET project (.NET 2.0 and Visual Studio 2005) with an Oracle on Unix back-end, some beefy MS web servers, and IE browser clients. Performance is pretty bad, and users feel the UI looks outdated as well. We may have an opportunity soon to redesign and rewrite the entire application from the ground up, and I'm wondering what the current or recommended MS platform is.
I was involved with WPF and Silverlight on a different contract when MS downgraded support for Silverlight in favor of "HTML5" for Windows 8 and Windows Phone a few years back. I'm not trying to start a flame war between how long Silverlight or even WPF will be around, but I'm looking for some modern alternatives as of today, April 2013. The one requirement we can't get around is that we can't install something on each and every user PC throughout the client organization.
My own background is in WinForms and C# more so than any of the above, but everywhere I turn it seems developing any new LOB apps in WinForms isn't done much anymore.
Whatever happened to the Application Server platform and apps run thru Remote Desktop? Does it still make sense to develop desktop apps and deploy to app servers and just put a shortcut on each user's desktop, or even map a drive letter like we used to do back in the day?
Your $0.02 would be appreciated!
I would definitely consider doing it as an internal web site.
The UI would be HTML5 using the "single page application" (SPA) for each function you need. Each function would be on a page that is loaded when the user needs it. The javascript/ajax code in the browser would interact with the web server which feeds back the raw data needed to be displayed.
Using Active Directory, you can have full security and customization per person.
If you need lots of interactivity, then you'd also want to consider including SignalR in the mix. (That is one of the "new" MS tools!)
If you can't install anything in the end users' PCs then go ASP.Net. Anything else will require installation.
You can make a web application more appealing to the users by having a good designer and a LOT of javascript. Not remotely comparable to the power and beauty of WPF, but that's your best bet.
WPF is part of the .Net framework and will not run without it installed.
Silverlight could also be an option, but it still requires an installation (although minimal, 4 MB, less-than-2 minute install), but an install anyways.
WinRT only works in Windows 8. It's not supported in lower versions (Vista, XP, 7). So I don't think it's an option as of now (unless all your users have Windows 8, of course).
And no, winforms is not an option. It's also part of the .Net framework, and even if you could get it installed, it doesn't make any sense having to deal with the limitations of it, having many much much better technologies at your disposal.

Winform application for tablet?

I have a customer who wants an application for his travels where he can update an online DB, he doesn't want to buy a laptop, he wants a tablet or something similar. I have no knowledge nor desire in creating special apps for mobile devices, I want to create a winform just like I always did when it was targeted for pc. Tablet pcs (which from what I understood is just a regular pc?) are still very expensive in my country.
Is there a simple adjustment to make winform app run on a tablet with android or I have to build a special app for it? Any other solution? (I began in writing a web page for it, but it's much easier using winforms)
Native WinForms applications will not run directly on Android (or any non-Windows platform). You may want to begin by looking into MonoDroid for porting .NET code Android (and Mono in general for porting .NET code to non-Windows platforms).
A successful port across platforms will require that the application be structured in a very de-coupled manner. Core business logic in the abstract part of the application should be easily ported, but concrete implementations (specifically views and data/service access) will require some re-implementation for the different concrete platforms. So the overall architecture needs to be very de-coupled and pluggable.
Is a Windows tablet an option? Using various new technologies at Microsoft (Windows 8, Metro UI, etc.) you could build an application that would target multiple Microsoft-based platforms. This could easily satisfy the requirement of being "a tablet" (if the requirement isn't more specifically "an Android tablet"). However, it won't be the old WinForms style of applications.
In general you'll find that the industry has been steadily moving away from WinForms for, well, this exact reason. It doesn't port to other platforms, and there's a wide variety of platforms in demand today.
Forget convertion i was in a similar position years ago and i did something easier faster and i think smarter.
just make a winform with nice big controls take care of docking scaling anchors etc so that it will look nice and can be used with small smart devices.
Make sure you pass some start program parameters in your app and when a special parameter is passed instead of opening the main typically desktop form of your app open that new one in fullscreen.
Now the tricky parts isnelsewhere. I hade setup a tiny windows 2008 r2 server that allows remote apps to be run on it.
Create a user account that you will allow access to that server and only that app of yours with the specific parameter we talked about. (Ex myapp.exe -remote)
The what ever device he will get you can download the free app like 2x rdp or microsoft rdp in android. Make a new connection to your server (you can use any free ddns you like if you dont have a static ip) and connect with that windows server account you did before.
This account if has been properly setuped will only run your app and will only show that new mini winform you did..
The end user will do a simle click and from his internet connection will do a simple remote desktop that is linited to your app only. (Router configuration is needed once)
That way you will keep maintain just one source code and he will have low bandwidth cost and can continue his work without data loose in case of disconnection.
I use that for years in mobiles tablets and pos systems. Its fast its stable its secure its easy to maintain (nothing on the client side) and you don't waste months of learning wpf or doing xamarin converting.

Why the lack of innovation and Silverlight on Windows CE?

A manager asked me to do some quick research on the possibility of doing Silverlight development on Windows CE devices.
After 15 minutes I was surprised that:
Silverlight for Windows CE seems to be nowhere in sight, with some sites wanting to report it so bad they they are quoting twitter tweets as their source of news, the word "mobile" is even missing on Silverlight 3 Feature Lists but you find it in the comments with people saying things like I was hoping to hear an update on getting Silverlight onto Windows Mobile and Nokia devices.
Windows CE 6.5, which is not even out yet, is getting scathing reviews such as this article which basically says: nothing new, interface improvements behind the curve, UI tweaks (honeycomb) skin deep, no capacitive touch screens, not due till Q4 2009, not backwards compatible, no zune, no new windows media player, no decent screen keyboard, browser pales against competition and, number 10: by showing little innovation on their latest mobile OS, Microsoft is showing zero leadership in the mobile space. It seems that Microsoft is weakly limping along in the shadow of the iPhone. The apparent lack of Silverlight on Windows CE 6.5 didn't even make the list of woes.
I thought things were different. So I sadly have to report that Silverlight on mobile devices may have to wait a year or more.
Does anyone have any more positive, substantial news that I can report about Silverlight on mobile devices?
Update by YMS (not the original OP):
This question is somehow deprecated now that Windows Compact 7 has been released with (some kind of) Silverlight support.
I also very recently researched the use of Silverlight on Windows CE. The result is that while it seems to be almost there, with videos showcasing it from MIX08, it may be released some time this year, but likely not in the first half. They said "some time 2009", and for some months now, it was in "private testing".
Because of that, while I'd love to use Silverlight, I decided to go with OpenGL ES 2.0 and OpenVG, which is fully hardware-accelerated on our current target device. Plenty of power and not that hard to use, even from .NET Compact Framework.
Oh, and the iPhone is all that cool for a phone (or a music player), but Windows CE is available for many more devices, including non-personal-gadget / non-mobile products. That's an area where Apple does not shine because they don't license their platform.
I've heard rumors that the UI for WindowsMobile 7.0 will be Silverlight/WPF based. It doesn't sound like Microsoft is putting any effort into any version before that, because as soon as WM7 is out, they'll want to kill anything off that came before.

Resources