My boss has asked me to write a CMS for a web-applicati开发者_如何学编程on. A place from where the user can customize all the necessary details, upload images etc. I know PHP but not JQuery. So things became difficult for me. I am proficient in .NET Windows applications, but my boss says it;s an end to Windows-based apps.
He is right I know, but I want to know is it really not worth putting any efforts on Windows-based applications?
Your boss isn't necessarily right. The choice between web-based apps and Windows-based apps lies in the distinction between Reach vs. Richness.
If you need to reach out to a lot of people running on many different platforms, a web-app is a good choice - particularly if you base it on simple, standards-compliant HTML. However, you sacrifice some Richness like a more responsive UI, keyboard shortcuts, etc.
If, on the other hand, you are targeting users in a controlled environment, a rich UI may be a better choice. This is especially true if you are developing an application for users who spent significant amounts of their time using the app. Such users might get tired of a web-based app really fast.
In any case, however, Windows Forms applications are a thing of the past. If you want to build rich UIs on .NET today, you should go with WPF or Silverlight.
Don't worry, Windows based applications are going to stick around a long time to come. The decision whether to develop a Web based, or Windows based application should always be made based on hard facts. Everything else is just plain silly.
The attitude of "I know technology X only and therefore I want to develop on X only" will not do any good to you. Even if you could stick to desktop applications forever, what will you do when, say, the WinForms tehcnology is completely replaced by WPF?
Regardless of who is right in this case (your boss or you), I strongly recommend you to start learning about new technologies (web development in this case), for the sake of your career's health.
I Don't actually think that the days of the desktop are over. On the other hand, I do think the desktop really is less relevant than the web.
The reason I feel this way is because a desktop is a computing resource, but the internet is a communication resource. Almost everything we do is about communication, whereas only a few things we do on a day to day basis (most of us, anyhow) are actually dependent on computing.
Some folks might want to take a photo, retouch some of the ugly spots, and then show it to an audience. The first step is not particularly aided by the computing resources of a desktop. Even if you have a laptop with a builtin camera, it probably doesn't take pictures anywhere near as nice as dedicated hardware like a DSLR.
The second step does benefit from a desktop. Photo retouching is a compute intensive business and the more cpu you throw at it, the easier it becomes to get good results, if for no other reason than you spend less time tapping your fingers while you apply a lens flare filter.
The last one, though, is probably the most important step in the whole process. You couldn't get there without the first two stages, but the last stage is what motivated everything that came before. And a desktop just doesn't help you with this very much, unless you like lugging around 15-30 Lbs of fragile electronics.
The real question is what are you really trying to do? Are you doing something that benefits specifically from the strengths of one technology or another? Answer this question.
On another note, I'm not sure that the answer is necessarily between .net on the desktop or PHP on the web. Can you talk your boss into allowing you to use ASP.NET? This seems like it might satisfy both of your needs. He wants it on the web, you are familiar with .net.
A CMS is one application that is very suited to the web, so if that's what you're developing, that's probably the way to go. Your .NET experience may be useful if you try developing in ASP.NET, as you can rely on the same common libraries.
As far as the future of Windows native applications, they will be around for a long time to come. There are simply some applications better suited for the richness and responsiveness of the desktop, and some that are suited for the wide distribution, portability, and connectivity of the web. While the technologies used to build native UIs will change (i.e. the transition from Windows Forms to WPF), the underlying existence of local applications will continue for now.
He's the boss.
Do what he asks, and take the opportunity to learn new skills.
Desktop apps aren't dead, and won't die any time soon.
However, concerning your situation, CMS as a web app makes much more sense than a CMS as a desktop app.
I know PHP but not JQuery. So things became difficult for me.
So?
Spend some time to learn it, play with it, etc until you're comfortable working with it.
We have a internal local build application that, amongst other things, needs to do the following locally:
- Copy files from source control
- Copy files from another server
- Register COM DLLs using regsvr32
- Create registry settings
- Stop and start COM services
- Configure IIS
and more...
I would pretend to know how to grant a web application on a server the permissions to do that, or even if I would want to. A windows app is by far the easiest solution for us.
There are many factor that would leave you to choose Windows vs Web, and I would argue that the windows app is still very much alive.
Assuming that you are using windows now, consider this, the browser you are using...that's a windows app, isn't it? Office applciations, IDEs, virus scanners, are all still very much prevelant as a desktop application even if some are becoming more readily avilable on the Web.
With the release of Chrome OS, arrival of HTML5, Ajax techniques and new hardware form factors such as thin web clients which will appear to support Chrome OS, a lot of IT budgets will be diverted to Web Applications. Your boss is not the only manager coming to this conclusion. I meet many managers with similar views every day.
The question is the choice of platform. If it is not already decided for you then .NET and Silverlight will leverage your existing skills. The only other one I know you can use your VB and C# skills would be Morfik but it is radically different and you need to keep an open mind.
If you are prepared to invest time in learning new stuff then my advice is do not rush into selecting one as in my opinion the landscape will drastically change in 2010 and 2011.
Another point worth making is performance. You're not going to get the same performance with a desktop application compared to a web-based one, as the latter can be run on the the same server as the website itself.
While file uploads might equate to more or less the same, other things won't be. Assuming that you're using a database, you'll either have to open a remote connection to perform any queries, or have an extra layer on the server that deals with database I/O. Either way is most likely going to perform slower than if you simply had the CMS on the server, and accessed it via a browser.
If you're going to write a CMS, why would you consider a winforms application? Windows apps aren't dead, but you'd almost never write something distributed and highly multi-user in a windows app nowadays. Winforms apps are best suited for a single user, on a single desktop.
No, Windows apps are not going to die any time soon. You should see this to get a better idea.
If you are proficient in .NET Windows applications then you should go for Silverlight. You will have to learn XAML, but you will be comfortable programming in Silverlight as like WinForms everything happens on the client side. Everyone have already stated the benefits of web apps. Additionally silverlight provides a very rich GUI. Also, with out of box feature your app can be installed on the client machine and can be run without the connectivity.
Take a look at these two app which can be run out of box and provide VERY rich gui
- Windows4All
- Slidentity
精彩评论