As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
Appart from projects funded/pushed by MS itself, are there any real-world examples of projects that opted for Silverlight?
What were your experiences? Learning curve? Advantages? Resources? Pitfalls? Sacrifices?
--EDIT--
I'm most interested in the developing (team)'s story.
I was at a conference last week, and a number of non-MS people were telling their experiences of using Silverlight for line-of-business apps. Generally, it seemed positive. The advantage seemed that you could start with the Silverlight version, and then if you (later) needed more client control, mostly just copy the xaml and app code into WPF. mostly is important, as there are currently some glitches. But it is much harder to start with WPF and port to Silverlight ;-p
Sacrifices? Not as much power over the client. Limited framework, etc.
Pitfalls? Not-quite-compatible xaml. Different IO, etc.
I can't cite specific projects, as I simply didn't write them down ;-p Besides, they might be company-private. Knowing that they exist doesn't violate NDA ;-p
I've just reviewed the Silverlight showcase for the UK, an IT market I know pretty well, there are 31 apps featured and the break down looks like this
8 x Games = 26%,
6 x Experiments and fun = 19% - eg christmas cards and Xaml XEyes,
6 x Demos = 19% - eg a Deepzoom picture,
11 x Reasonable web sites = 36%
Realistically 31 apps for the whole of the UK, of which only around a third are real, is a tiny amount of development. This could indicate a couple of things,
1) Serious Silverlight development isn't happening in the UK, but maybe is elsewhere
2) Companies doing serious silverlight dev don't want to use Microsoft's showcase
3) There isn't much serious Silverlight development happening yet
My gut feel is that Silverlight is taking a while to become mainstream, it's a brilliant technology, but users don't buy technology or features, they buy benefits .... We need a couple of killer Silverlight apps, then it will take off like Ajax did, once google (and others) showed the way
Check out the Microsoft Silverlight Showcase. There seem to be quite a few Silverlight apps in the wild.
Retouch Genie Ltd - Online photo retouching and restoration site uses Silverlight for its gallery and main client area. Its got quite an interesting photo display control which is quite nice. Here is the link to the before and after gallery that allows you to see the photos in their original state and again after image enhancement.
We are in the middle of developing a system in silverlight that does real time communications with customers. The problems we've had are due to the lack of real-world samples and the change from VB to C# as there is next to no documentation in VB. Apart from that it has been great to develop in. Everything works well and development time was very quick considering it is a brand new technology. We're looking forward to the next release and it's enhanced video handling.
Checkout silverlight case studies for developer story:
business app - http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?casestudyid=4000004876
I even developed an Android app with Silverlight and Java mixture. Without SL it would be really damn boring and probably impossible what I wanted to achieve, check it out: https://market.android.com/details?id=uk.co.aloneguid.todash&feature=search_result
Related
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
I have been programming in java for a couple of years now. Not long ago i decided that it was time to make a change and learn C#.
Now since it both visual studio and C# is new to me i have decided that since i have to learn it anyway i might learn the newest tools there is.
However i am unable to find out what GUI liberay to use. my first search indicated that WPF is the newest "lib" for creating microsoft UI many other threads gave an indication of that this might not be the case.
Therefore i am asking you guys what is the newest UI "lib" for C# and what would you advice me to use?
As pointed out by Giedrius, either Windows Forms or WPF.
Personally, i would start with Forms for a few weeks, get to know the environment, then move on to WPF and the lovely world of XAML.
WPF is the right technology if you are targeting users with good machines. It leverage the power of graphics card and supports vector graphics. You will get good development speed with the XAML system and much more
If you are looking for any third party controls you can evaluate Infrajistics or Telerik.But depends on your UI requirements.
In terms of newest technologies then WPF is certainly the one I'd recommend you learn, but there is quite a level of interoperability between WPF and WinForms, i.e. you can host WinForm controls in WPF and (I think) vice versa.
One thing to be aware of is that WPF is a completely different beast to winforms - you can still do the usual drag and drop, but for fancy stuff you need to be changing the XAML and that can take some getting your head around.
Edit - it's worth taking the effort to learn WPF though because once you have then you'll be producing rich interfaces with ease.
For anything prior to Windows 8 then the latest is WPF. As of Windows 8 you have Metro (name changed I know) but then you could still use your newly aquired XAML skills (picked up from WPF) or start getting into HTML 5 and CSS 3 which would also stand you in good stead for web-based applications.
Win Forms is older than WPF but still well loved / established and can be useful in places. Like most things, choose the right tool for the job.
There are two main flavors of GUI (not counting web): WPF and Windows Forms. WPF is much more recent and if you have no experience on Windows Forms, WPF may be recommended GUI alternative.
Now WPF may have several "flavours" - it is kind of different in abilities in desktop applications, silverlight applications and windows store applications, desktop applications having most of the features, other two has limited set, mostly because of performance and security reasons (for example you can't render UI to image in windows store applications, but in desktop applications you can).
WPF has better hardware acceleration support, has better binding and async/threading support, is much more flexible, many elements look may be changed very easily - which can't be done so easy in Windows Forms, like combo box - you can change color in Windows Forms very easily, but if you will need rounded edges, that will be hard one.
Also WPF can be used in MVVM pattern easily, which is quite a challenge in Windows Forms.
Windows Forms on the other hand is little bit easier to learn + plus it has very good third party components - like Telerik, Devexpress. Both vendors have components for WPF also, but they ain't as good as Windows Forms ones, mostly because they were designed using Windows Forms knowledge, which doesn't fit WPF.
I recommend you to learn html, css and js. As I know you can build Microsoft Windows 8 .net applications using these languages. Check here and also it would be useful if you'll decide to make web application, where all these languages are using also.
If you don't want to limit your self with Windows 8, than try WPF. Applications on WPF will be able to run on any machine with .net framework version you used for application.
GL
As others have pointed out, WPF is the way to go.
One thing that has not been mentioned is that, (since you have java experience) you can think of WPF versus other technologies (such as winforms) the same way you can think of JavaFX versus previous java UI technologies (such as Swing).
Actually, JavaFX seems like a really poor copy of WPF. the language used to define the UI is XML-based (like XAML is), it has (much poorer) support for DataBinding, and many other similarities.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 9 years ago.
Ok friends, I'm a C# WPF .net developer and have been working pretty much exclusively with UI development in one language or another for the last 15 years. The last 7 have been with C# and I have to admit that I am spoiled.
So, the question is: How do I get started, and what tools are best to use? I see that MonoTouch is out there, but it looks like it is now called Xamarin. What about PhoneGap, Titanium, Appcelorator? Are there others I haven't heard of yet?
I am just wanting to break into Android Development and/or iPad/iTouch development, but don't want to go native. I would like to leverage my C# skills, preferably WPF, but I have no idea which tools support that for Android/iPad/iTouch development.
Which ones integrate with Visual Studio?
Anybody who has REAL EXPERIENCE with any of the above, or one that I haven't heard of, please chime in and point me in the right direction.
I really appreciate it.
Phonegap works by having a web view loading a html & javascript application, so, you wouldn't be using C#, and the results usually are a far shot from a native app.
In contrast, mono touch compiles your C# code so it can run natively on your mobile platform, and since they implement a wrapper around the native libraries you are suposed to be able to write applications as good as if you had gone native. On your case i think that would be pretty much the best way around.
By the way, Mono Touch doesn't remove the requirement of having a mac to develop iOS applications.
One of the best technologies is the Mono for Android/iOS framework - specifically for the fact that you can target 3 platforms just by coding for the one. Of course UI is independent so you'll still need to learn each platforms Design patterns etc... But here
http://xamarin.com/?gclid=CM_agZWFgLYCFUvHtAodeDYADw
The best place to start
If you're coming from WPF and familiar with the MVVM pattern you will find loads of js frameworks that share the same approach (KnockoutJs is a good one), basically this is what you'll be using if you want to go with a cross platform solution like PhoneGap wich is nothing more than wrapper for a webapp, and a few apis to access your device.
Personally I find PhoneGap a good solution only if you want to access the features of your device within a simple application.
As soon you start to add pages to it the feeling lack of responsiveness will make you wonder why you didn't go native from the start.
I would go for Xamarin. The Xamarin 2.0 has Visual Studio integration. You can write code for iOS or Android on Visual Studio 2012 (I am a ReSharper fan :) ).
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I'm planning to write a Windows app to help myself with some exploratory testing tasks (note taking, data generation, defect logging) and I've got stuck at the early stage of choosing a framework/language. My sole experience is with web development and from what I can see, WinForms, WPF, Silverlight, Swing etc are all simultaneously obsolete and thriving depending on who you ask.
While my main aim is to create the app, obviously I'd like to learn something useful while doing so rather than picking up skills with something that's never going to be seen on a project at work. Which Java or C# frameworks would people recommend learning?
Note: consider when this answer was posted (2012). Since then, things have changed a bit, for example Silverlight has been deprecated.
Native Applications
For employment:
Well, nowadays most companies (at least most companies from Oman and the UAE, where I live) are slowly migrating to the cloud. However there are still some opportunities for native app development. The most demanding framework nowadays, is, ( no.. not WPF ), it's Windows Forms!
Why plain old Windows Forms instead of the awesome WPF? One reason, legacy apps. Nowadays most companies only start small scale GUI Application projects, mainly Business applications. For that, WPF will be very expensive since they already have a work-force experienced in Windows Forms, and a lot of legacy code, however for WPF they will have to create a new code-base, and that's pretty risky. So the best thing to keep you employed is Windows Forms.
For new projects: However, if by 'worth learning', you mean, new, ambitious and glamorous. Then WPF may be the best choice for you. It depends on what your requirements are, really.
The Cloud
Now, for the cloud. Java FX and Silverlight are both currently head to head. However Java FX may have an edge since it supports a greater number of platforms. But then again, Silverlight has all the power and resources of Microsoft behind it, and it's ideal for Windows Phone development.
Comparison
For a comparison, here's what you get by each toolkit:
Windows Presentation Foundation:
The power and resources of Microsoft
Ideal for creating new Desktop Applications
Eye candy
Awesome API
XAML, best way to separate design from logic
Create Apps for the Cloud (but they only work on Windows with .NET though)
Windows Phone can run a subset of WPF
Windows Forms:
Used to possess the power and resources of Microsoft, now WPF has that
Ideal for maintaining legacy applications
A well-trained workforce, if you're an entrepreneur
Pretty mature API
Supports more platforms than WPF (through Mono)
Java FX:
Create Apps for the Cloud
Backed by Oracle
Pretty nice API
Cross-platform, runs on most PCs, smart phones are a problem.
Silverlight:
Create Apps for the Cloud
Backed by Microsoft
Pretty awesome API
XAML
Cross-platform, runs on Mac and PC, runs on Windows Phone.
GTK#:
Cross-platform, runs on most PCs, runs on no smart phone.
Backed by the Open-Source world
Endorsed by Mono
Ideal for creating Apps for Gnome.
Swing:
Cross-platforms, runs on most PCs, smart phones are a problem.
Pretty mature
Ideal for creating 2D games, using Java2D
Conclusion
As you say:
While my main aim is to create the app, obviously I'd like to learn something useful while doing so rather than picking up skills with something that's never going to be seen on a project at work.
Well, the frameworks you are most likely to see at work (if you don't for mainstream companies like Microsoft, Oracle, Google etc. ) are Windows Forms and WPF. At least that's what most companies use here. So those are what I recommend. JavaFX and Silverlight also look like they have potential and may be used in the near future.
WPF. Best support for Windows. BTW, it's not obsolete.
One option for you might be to create your application as HTML+Javascript and run it in your desktop application by embedding a browser engine (IE or something else). If you need native APIs, there are mechanisms to make these available to browser's Javascript code.
Java FX 2.0 seems very promising and is now live if swing looks obsolete to you. Note that it has little in common with previous versions. See for example this short comparison with swing. And oracle said they plan to open the source.
Now it is fairly new so unlikely to be used in existing applications.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 11 years ago.
I found out that windows 8 is going to be heavily dependent on C++, HTML5 and CSS based apps(WPF ?). I spend a lot of time working on applications like matlab, scipy and C# as programming language at my workplace. Considering this, is there going to be any big change for desktop app developers ? are these apps going to be re-written under new code and C# has any future for desktop apps?
A lot of hearsay at the moment until September it seems there is nothing definite.
There is wide speculation on whether Jupiter will be the unifying
user-interface model for Windows, Web and mobile. Burela believes
Jupiter may a “next generation” XAML-based framework, perhaps a
“mashup between WPF & Silverlight.”
There also appears to be equally strong support for three key
programming languages: C# to appease the .NET developers, C++ to
appease the Windows core developers, and HTML5/JavaScript to try to
lure developers from other platforms.
Of course the controversy has been Microsoft’s focus on JavaScript
while nearly ignoring Silverlight and .NET developers. Articles like
this one — though unofficial and speculative — should help calm some
nervous developers.
Source: http://www.isdotnetdead.com/windows-8-supports-all-programming-models/#
ZDnet try asking probing questions.
Here is another link about the future of C#
Okay, your question confuses some terms - based on the articles you cite.
Microsoft are quoted as saying that the application they demonstrated on Windows 8 was written using HTML and JavaScript. The article interprets this as saying that WPF and Silverlight are likely to be binned in favour of HTML and JavaScript.
Let's have a think about this.
As far as I'm aware, Microsoft have been really keen to run applications in the Browser for a very long time. They have made ActiveX controls that run in a browser, they have written Silverlight to run in a browser. They are one of the leaders in the whole "browser based applications" concept. People may criticise their methods of achieving this in the past, but at least they were trying.
When you consider that Microsoft currently have a desktop package called Office and also a web-based package called Office365, you can understand why they might want to just have one package to maintain that works on the desktop and in a browser.
My final note - the ARS Technica article describes HTML tooling as inferior, but seeing as you can use the same tools to write a WPF application or an HTML application I don't agree with this point.
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.
Closed 10 years ago.
I have some 5+ years' background in C++/Unix development. I have been trying my hand at C#/.Net/WPF based software development for some time now. I am at a stage where I can write functioning applications fluently, but am not sure how to take my skills to the next level.
So, my question(s) to you all, especially to those who are experienced in C#/.Net/WPF:
What are the component skills and knowledge that an expert developer on this platform should have?
What technology-specific books would you expect a would-be expert to have read?
What other deliberate steps can I take to become really good at application development using C#/.Net/WPF?
Many thanks in advance! I would be especially grateful for comprehensive answers - I'm pretty sure many other developers have similar questions.
Learn how the C# language and .NET runtime work by reading CLR via C#.
Scott Hanselman's article, "What Great .NET Developers Ought To Know", is a great resource on the subject.
My team has worked in C# for the past 5 years. Typically, experienced C++ programmers take a week or two to become fully functional in C#. I've even seen some do it almost instantly, after sitting with them one morning, showing them our code, and explaning the basics of the language that differ from C++. But that's not how I recommend you do it.
I recommend you do this:
Read a C# book: My pick would be Programming C# by Jesse Liberty. Important chapters are the language itself and the basics of the .NET framework libraries. The .NET Framework is huge, so you don't have to know everything in detail. You can skip through (or skim) the Windows Forms chapters. Windows Forms is so different from WPF that it won't be useful to you if you are planning on only doing WPF.
(source: amazon.com)
Read a WPF book: The best book I read so far is Windows Presentation Foundation Unleashed by Adam Nathan. WPF has a steep learning curve compared to Windows Forms, even for experienced C#/WinForms programmers. It has a lot of complex elements to understand like XAML, dependency properties, bindings, templates, animation, resources, etc. This book teaches you the basics gradually and is easy to read and understand. And it's in full color!
Read about the Model-View-ViewModel pattern: I haven't found a good book on that yet, but it's been very important for me to make my WPF applications more simple and manageable. My favorite material to learn about MVVM is this one hour presentation by Jason Dolinger. He builds a WPF application from scratch using no particular pattern, and step by step, migrates it to the MVVM pattern.
Also have a look at this past Stackoverflow question: Questions every .NET developer should be able to answer.
For WPF specifically (and the power of WPF binding) I like M-V-VM: http://karlshifflett.wordpress.com/
Make sure you learn how to use and leverage Dependency Injection / Inversion of Control in your applications. Other very important pieces of software to learn to include with your development is Microsoft Enterprise Library and Windows Communication Foundation. Those 2 tools offer an amazing amount of leverage to avoid having to recreate the wheel to solve problems.
Other really good packages to become familiar with are NHibernate and Fluent NHibernate.
Windows Workflow Foundation is a very powerful piece of software however the complexity level is high this would be another great addition to your knowledge base time permitting.
I would add unit testing, TDD, and mocking frameworks to your list of things to know.
I have "The Art of Unit Testing" and found it helpful.
I really like WPF in Action and Programming .NET Components is essential reading for any .NET developer.