Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I was working with Windows Forms for a while now, and due to certain limitations on Forms, I want to work my way up to a better way of making GUIs. I found WPF, which looks pretty promising, but I'm asking you guys, if there are any better ways for doing nice GUIs for Windows with C#?
Thanks in advance!
I would look for MS roadmaps and instructions where they plan to drive the platform. For example:
.NET Technology Guide for Business Applications
This is since nov 2013 but still valid to a large degree. Among other things it states that (emphasis mine):
.NET Windows Presentation Foundation
This is the preferred technology for Windows-based desktop applications that require UI complexity, styles
customization, and graphics-intensive scenarios for the desktop. WPF also takes advantage of XAML views.
And WPF development skills are similar to Windows Store development skills, so migration from WPF to
Windows Store apps is easier than migration from Windows Forms.
HTML5&JS-based apps is an alternate route but I consider it inferior for development efficiency and maintainability reasons. If you are a scripting fella, then it's worth a look.
By my experience WPF is definitely the way to go for desktop development.
There is definitely a learning curve migrating from Forms development to WPF, but in my opinion the effort is well worth it, and not simply because WPF is aesthetically different to Windows Forms.
WPF encourages you along the MVVM ("Model-View-View model") path and a separation of concerns between UI, logic and data elements. As an aside, MVVM is one of a number of MV* architectural patterns - there's some debate about what constitutes the difference between the different patterns, but consensus that separation of concerns is absolutely a good thing. For example:
http://www.infoworld.com/article/2926003/microsoft-net/exploring-the-mvc-mvp-and-mvvm-design-patterns.html
https://nirajrules.wordpress.com/2009/07/18/mvc-vs-mvp-vs-mvvm/
What is difference between MVC, MVP & MVVM design pattern in terms of coding c#
In terms of specific advantages over Forms, there's a lot of stuff you get out-of-the-box with WPF, like two-way data-binding and UI threading for instance. But I found that the change in thinking about problems is equally valuable; when I started thinking in MVVM, things like asynchronous programming (e.g. calling web services from windows-based client applications) just became much easier to conceptualise and reason about.
MV* is all the rage in web development, too, so the skills (and, in an ideal world, some of the code) are transferable to the web.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I'm currently having some analysis paralysis in deciding which is better for me between C++ using the Qt framework, or C# using the .NET framework for developing a small to medium sided project I currently designing.
I have a little experience in both languages, slightly more in C++ however would probably still be considered a novice.
All the information I have read has been relativity outdated (being at least a couple of years old) and was wondering if there have been any updates that would swing the advantage one way or another, or if it really is just a matter of preference.
QT seems to support my particular requirements needs slightly better however the additional difficulty of working in C++ may offset taking me back to square 1.
My requirements are fairly simple, I will need rich text support, database connections, the ability to export to various file types and have a fairly dynamic GUI.
Anyone have any personally experiences or recommendations they wish to share?
I recommend to use Qt because:
It's cross-platform and covers wide range of operating systems (including mobile)
Writing in C++ gives you the opportunity to use libraries
like the STL, Boost, etc;
Using C++ gives you the benefit of running your app at high speed
It is opensource and has a fast speed in getting better
It has the a nice GUI designer and a very capable IDE (Qt Creator)
The API design is excellent and easy to use
It has a great documentation which is easy to read
It has the Qt translation system which enables you to have a multilingual app
The GUI layout system where the widgets resize themselves according to a layout makes everything much easier
The QML gives you the power to create fantastic GUI with great graphics and animations
It has great support for networking and connectivity(socket, SSL, www, IPC, ...)
It has QTestLib for testing the code
It has many language binding if you don't want to use C++
You can learn Qt easily if you know C++
All requirements you have given are completely feasible and easy to do in Qt
It doesn't require any VM for deployment but .NET needs that.
Your application will be cross platform
Creating custom UI is very much possible in Qt. You can create almost any kind of UI in Qt.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 6 years ago.
Improve this question
I am wondering whether there's a good tutorial that walks you through the development of a full business application that is comparable to the real ones. I have learned the basics of C#, WPF, and programming and web development in general. All the books I have read only shows the syntax and code snippets but very rare shows you the development of a full business application from planning to testing to deployment.
What is the first step when creating a business application using C#/WPF? I know I need to have a plan first. Should I use UML?
What methodologies or techniques should I consider when starting to code. I have read about Domain Driven Design but there is also MVVM patterm. Which one should I use? Should I learn both of them.
I am currently searching for a work in .NET but I really need to know how the developer's workflow in a real life software development team. I have found some books that walks you through the creation of a full software such as Wrox's Problem-Design-Solution books. Does the content of this book comparable to the workflows of a real-life software development?
Thanks a lot in advance and I hope I can find an answer as I am planning to practice my skills to be ready in a corporate environment.
Um, the platform is irrelevant at this point. If you were doing a winform or a web app, would you use UML? If so, then you would also use it in a WPF. If not, fuggedaboutit.
The first step is to careful gather business requirements.
The methodologies or techniques you should consider when starting to code will be handed down to you by the lead of the project. You sound very inexperienced, so the decision will not be up to you, most likely. Every business is different. Heck, every project is different. You may use a different methodology on each of your first 5 projects. Brush up on them, read what you can, but you will always have a learning curve to climb.
You don't need to learn every methodology or paradigm. Learn as you go. Understand the basic premises of a few, especially the standard waterfall, but don't deep dive until you get assigned to a project. Most places I have been don't follow their own methodologies anyway. It's one of those "The Sabbath was made for man, not man for the Sabbath" type things. Organizations will deviate for a slew of reasons.
This is the book I had in college. It has served me well. You car order it for $0.33. Ain't that something. http://www.amazon.com/Software-Engineering-7th-Ian-Sommerville/dp/0321210263/ref=sr_1_25?s=books&ie=UTF8&qid=1342506249&sr=1-25&keywords=software+engineering
Good luck in the field. Just dive in, and work hard. You should be fine.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I am beginning a Software Engineering dissertation in which I have a dental practice as a client who I will be developing software for. The client has issues of requirements and the current software is constantly upgraded through patches.
Im trying to argue the idea that the underlying requirements are bad, and to develop a new piece of software that is able to mould to meet changes. I also want the software to be generic so it could be deployed to various dental practices who could customize it to toggle particular features on.
The idea I have is to consider each feature as a plugin. This way the application should simply host the enabled plugins and they could be toggled on/off, and upgraded invidually without the need of a hard change to the application.
I would appreciate if you could help me with the following questions I have:
Is this a good approach?
Is there a .NET framework already that caters for this well?
Are there any significant problems I should be aware of?
Sorry for the big intro guys, and I appreciate any response I get at all.
Many thanks
Mike
The Managed Extensibility Framework is built into .NET 4.0, and is available from CodePlex as a dll for earlier versions.
I know MEF as MS recomended framework for pluggable aplications, but maybe some IoC framework can helps you also. Recommended by MS is Unity (developed under Microsoft Patterns and Praciticies) unity on codeplex
I have used HTML, WinForms, ASPX, WPF, WCF, Web service, Silverlight, PRISM, MEF for applications in the last few years and my personal choices (given no restraints on a new project) would be:
WPF or Silverlight (Update: I would swing more towards WPF, now that Silverlight is no longer broadly supported)
WCF services
A modular framework like PRISM (which now includes MEF)
PRISM is the biggest gain as the components you build really are loosely coupled and modules can be developed independently without developers breaking each other's code.
For something specific like a dental practice hopefully you will be able to build a layer on top of general purpose plugin frameworks.
The plug-ins, and their container, should be specialized for the domain. The best way to identify what that that specialization should be is to enumerate several plug-ins that would be appropriate for this software, recognize what is common amongst them and abstract/represent them in your framework.
I know this is not very concrete but hopefully somewhat useful.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 7 years ago.
Improve this question
am a c# developer for about 2 years now...am a desktop developer and have been working with desktop apps for the past two years ...my question is should i complete in the desktop development or should i move to the web development...to be honest my knowlodge in web development is very poor ...if the answer is yes what should i study and what to start with
..
bool condition1 = IfILikeWebDevelopment ();
bool condition2 = IfWebDevelopmentCareerPromisingWhereILive ();
if (condition1 || condition2)
{
Go ();
}
It never hurts to know more about what you're doing. Sure; learn web development. Try a little php and Ruby, while you're at it.
As for how to start with ASP.Net, just dive in. Create a new ASP.Net project in Visual Studio and start making changes. There are a ton of tutorial sites out there for getting started (here for example).
Definitely it is worth to know how to build web applications!
Make yourself familiar with XHTML + CSS, so you will have good understanding what your web app have to produce
Learn from good patterns: start with ASP.NET MVC if you want to stick with C#
And you're done :)
Do at home whichever one you're not doing at work.
It won't hurt knowing something about web development actually with asp.net you almost have the same programming model as win forms so you will feel home :)
but really you should make your decision based on what helps you in your carrer
What is better for your carreer and for your pleasure is to become a better programmer... improving your programming skills and your experience.
Base your choice on the opportunity to work with more experienced programmers, on the qualify of life in the position, on the possibility of personal development.
After two years of C#, if you are willing to learn, try to learn a little bit more about OO theory. Dig into the concepts, they last longer than the languages.
Depends on the scale and the persistance model needed?
The biggest technical differentiators between the web and desktop is the underlying persistence model and your user interaction model.
With the web, you are going to need a database and stick to the web pattern (unless you want to do Ajax, in which case learn desktop).
With the desktop, you are going to learn how to make applications. However, if the application you want to make can also be done on the web, then don't bother and just use the web. Also, you have a lot more freedom on the desktop which comes as a dangerous proposition for employers these days.
I would recommend that you focus on improving on core algorithms and datastructures, and you should focus on what you enjoy doing with your strengths in mind.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am starting to learn c# and wanted to create an actual app which one of the two would you start with?
Personally, I would learn WPF. We use a lot of Winforms, but we're in the process of migrating to WPF. I think that's a more future proof set of skills. WPF Virtual Labs are a good place to start.
My rule of thumb is to choose the most recent technology that doesn't require your users to go through extra effort. If you have to support Windows XP, then WinForms is the way to go as it doesn't require XP users to install .NET updates. If you don't have to worry about XP, then WPF is probably the ready to go.
I recommend WPF - it is now very mature and well supported. Of course, winforms is still supported and some new development is being done for it. However, WPF is significantly more sophisticated and powerful. Almost as importantly, the tool support for it is MUCH better than for WPF.
Here are some links for you.
A Guided Tour of Windows Presentation Foundation
Windows Client .NET
WPF vs Windows Forms
I would say learn both to have a stronger foundation of knowledge and be able to work with legacy code, but put more effort into WPF because it will eventually replace WinForms.
The basics of either are much the same -- WPF offers a lot more features by way of declarative UI definition and skinning/theming, and a slightly different set of layout techniques. While you're at the "Hello world!" stages, it makes little difference -- certainly less than using either GTK# or the Swing implementation in VJSSupUILib would.