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 was looking for some current opinions on WPF based on their 4.0 release.
We are trying to decide if we want a Desktop application with a WCF server, or if we want an ASP.Net web app. I would really like to do it in WPF, however some major concerns have come up that I am not sure if WPF can handle. I have looked around online and a lot of WPF reviews are based on the 3.5 version, so I was looking for some current opinions.
What sort of Support is out there for it? Microsoft support and Community? Is WPF a dying technology or a growing one?
It is harder to find WPF programmers. Is this always going to be the case?
What is the performance like for terminal services? The majority of our users login using WYSE thin-clients to a Windows 2003 terminal server. Each server normally has between 10 and 30 people on it on any given day. Most of our TS users only need basic view/insert/update abilities and our admin staff needs the more advanced features and reporting. The admin users all have XP machines with SP2 or higher.
What other concerns should I have about WPF?
It seems the underlying concern here is whether or not WPF is a mature enough technology for serious desktop application development. The answer there is IMHO certainly yes and the proof I offer is Visual Studio 2010. It is written in WPF, is a major desktop application and has to meet the criteria laid out in your question.
To attempt to head off the 2010 is slow + buggy argument. Yes, 2010 is not a perfect product and has bugs. The vast majority of those problems are not purely a WPF issue but instead are related to legacy code, managed native interop or just interesting interactions between old and new technology.
To answer some of the non-technical questions with hand wavy answers ...
Yes today it's probably harder to find WPF programmers than say WinForm programmers. WPF is a newer technology and hence likely won't have as many developers. Will this be true in the future will only be decided in the future :)
I feel like there is great support for WPF (see the WPF tag on this site for an example). When I started doing WPF work for the 2010 release the vast majority of the questions I had were already answered on this site or in blog tutorials.
#1 - I've done projects with WPF. There is quite a bit of information out there. Microsoft seems to be investing more in Silverlight at the moment, but I suspect that WPF and Silverlight will be merged in the coming years. WPF/Silverlight/XAML will be Microsoft's way of building desktop apps for the foreseeable future.
#2 - Developers with good WPF (or Silverlight) skills are hard to find, though not impossible. WPF/Silverlight definitely has a steep learning curve.
#3 - There have been problems with WPF apps running on terminal server because WPF runs on top of DirectX. I would definitely try running a WPF app on your Windows Server 2003 terminal server to see how it behaves. My biggest concern would be that Microsoft would likely be investing in any WPF-related fixes for Server 2008 TS and I'm not sure they would necessarily port those to Server 2003. As for a good test app, I would grab something like the WPF photo viewer demo (http://msdn.microsoft.com/en-us/library/ms771331%28VS.90%29.aspx). Something reasonably graphically intensive to stress TS.
#4 - Personally #3 is the biggest concern IMHO. If you can't run on Windows Server 2003 TS, the other questions are moot.
Concern #1: What sort of Support
So far, it's growing and growing well. The IDE support is finally decent as of VS2010, and it appears as though MS is going to be pushing this for a good amount of time. There are lost of examples from MS and the community.
Concern #2: It is harder to find WPF programmers.
Well, it depends on how crazy you want to get with your UI. If you want the latest, greatest whiz bang 3D animations and multiple effects, it might be difficult to find someone off the street with all of those skills that you can afford. However, if you're banging out a relatively simple UI, many experienced developers can quickly grow into this role.
Concern #3: What is the performance like for terminal services?
That depends on how much animation and other whiz bang features you want to add. If there is lots happening on the screen, it will take more bandwidth. Once again, a simple interface should have no problems.
Concern #4: What other concerns should I have about WPF?
Hard to say!
There is always a risk that a technology will become obsolete. That's just the way it is. And there's no way to know for sure.
Here is a possible scenario: WPF is being overshadowed by Silverlight, since everyone wants to "do it on the web." You decide to develop your application in Silverlight (even though it's only a subset of WPF's feature set) and get blindsided by HTML 5, which takes over the world because now you can do everything in the browser without a plugin. Even Flash becomes obsolete.
Will it happen? Who knows?
People are still quite happily making Winforms applications, arguably an obsolete technology. Are they worried about obsolescence? Probably not.
As far as I know, Microsoft actively and enthusiastically supports this technology. If you are concerned about performance and other issues, the best way to find out if it meets your needs is to build a prototype.
Related
Broad, sweeping question here...
Assume you have built an enterprise level framework with some rich client in the .Net (Microsoft) sphere, with a WCF back end. Now, imagine that that enterprise framework's UI technology is being deprecated in favour of UWP.
The choices for a front end replacement basically are: UWP, Web (HTML), or some other rich client technology.
How would you go about the decision making process?
I personally lean toward a rich client where the user base is a captive user base. I mean, where the users' IT department is happy to install the necessary runtime environment on the machines, etc. This is usually not a problem with Microsoft technologies, and this won't be a problem in about 10 years when organizations roll out Windows 10.
But, people are telling me these days that web has come a long way. People are telling me that JavaScript frameworks are becoming very sophisticated, and that low level JavaScript for basic data binding and the like is mostly unnecessary.
I have really been turned off by web solutions like ASP in the past, but I do understand that technology has moved forward, and I do understand that Microsoft have been working on ASP.Net v Next which might actually be good?
The question is not so much what would you opt for? But, what factors would you take in to account to decide which platform to go for?
Opnion based answer here...
In a decision to adopt a particular tech for any project lies in many factors. I can cite two majors for your particular scenario.
1 - Client adoption. It's easy for the customers to use/install it? They need to pay some sort of license? Can it run in all platforms/devices the customer already own?
2 - Market adoption. It's easy for you co-workers to adopt it? It's hard to find/hire experienced/hardened developers? We need to pay some kind of license? Can I trust it ill be a long lived technology?
The answer to your question can be HTML.
Not only it is already got a lot of momentum in market, it ill take years to change it even if today someone (big like MS or Google) put some new (better) stuff on the table.
Also if someone on MS marketing dep say next week Universal Windows Platform or WinRT must die it ill die (like Silverlight). So Im not adopting some new technology just because some big player told me to do it.
Yes web has come a long way indeed. You can do a lot of amazing things just with JS+HTML+CSS those days. Also the right usage/architecture of it ill allow you to put your app running in PCs, Tablets and Mobiles (at a minimum cost to port between devices) and capable in running in anything can access internet.
I suggest you to catch up and learn a lot about webservices, Json, JS libraries like JQuery, Sammy and some nice stuff like Knockout, SPA, Angular, Node, etc.
Edit, answer to comments
To not start a chatty comment I'll respond here. Yes your questions and comments brings interesting questions. To let it readable for posterity both of us can edit answer and question to organize it.
Silverlight. How not love it? In special after strugling with flash. It's a shame MS pulled the plug (die in hell MS CEOs). When MS let it to die I was planning a big web app SL was my first choice. Why I changed my mind? Well 2 years to develop that app and at the end how much browser ill get along supporting it? The SL community is great, the tool is great but browsers can just say, Hey tomorrow there's no guarantee it keep working.
.Net and MS platforms. I'm a .Net developer. I adopted it since beta, first to work with winforms (in a previous life I was a proud Delphi developer). After a while started to work with web. I also worked in classical ASP (bad times) and loved .Net ASP from start.
You can run .Net apps in almost any PC in the planet today. Not exactly true for all mobiles/gadgets. For browsers pure HTML+JS+CSS ill to better because it's lightweight (done right). Also we can move a lot of thing to client side and just let it hit the server only when necessary. .Net apps can do that, sure, but ill never be light as a tailored HTML+JS+CSS.
In fact I believe you can do anything with .Net and you can do amazing things if you got a few good developers in your team. But depending on the project it ill do better (and cheaper) in HTML or PHP or Ruby or Java, etc.
In fact at a previous shop, with both PHP and .Net teams we found (after 1 year study, metrics, lots of projects) small projects are better done in PHP, larger ones in .Net (if I remember a medium project can be 4k to 6k men/hours).
The point here is. You really must read a lot about HTML, CSS, JS, SPA, Angular, etc. Bringing to live a big and shinning web app is challenging today not because what we can do (we can do anything) but how we can do. DDD, MVC, MVVM. Testing framework, etc. Man Node is the future (the concept at least).
Web developing really changed in the last years and with it the clients and users expectations. Today no one ill wait for more than 2 secs for a page to load. Everybody wants usability to be at the top of the table from project scratch. You app must be responsive, etc. (not using Dilbertian management buzz words here for the sake of it. Just stating usability is that important today).
And don't forget everyone wants it to be beatifull (from a graphical designer point of view) even if it's a dull B2B supposed to be used only by cave mens.
Even if you stick to a classical .Net app learn about the (many) options, that can bring a new wider perspective.
I have decided to answer this question here because we've had a lot more time to investigate and look at different options. The original question turned out to be a bit of a furphy. Pure UWP and Web are not the only options. There is also a Xamarin Forms as an option which includes UWP, Android, and iOS. As a personal preference, I am leaning toward using Xamarin Forms as a client instead of any other development platform because it supports three OSs out of the box: Windows 10, iOS, and Android.
I believe the answer to the question is: you should only develop a web app if you need to. Does your user base consist of people who will mostly prefer a browser over apps? Are your potential users likely to want to avoid downloading an app? Is your app very simple, and you want people to be able to dive in very quickly? Are you able to get away without access to things like the camera, location and push notifications? If you can answer yes to these things, then I think you should go for HTML 5/JavaScript. If however, your user base is comfortable downloading apps, and you think that your app will require a UI more sophisticated than most browser apps, I'd recommend looking at Xamarin Forms as the preferred option. We've had very good success with Xamarin Forms so far, and the UWP version of our Xamarin Forms app has turned out just as good as our first stab at a UWP app.
Note: I should give Web Assembly (http://webassembly.org/) an honorable mention here. This technology is being considered in all the big tech organisations like Microsoft, Apple, and Google. One day, it may make deployment of native apps in a browser great again.
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 have a large web application idea that I would like to work on, which will require secure database interactions, file creation and editing abilities, speed, and output html. It needs to be able to run on a webhost, not a self-run server. What would be the best programming language to use to create it? I am not looking for 'easiest', I am looking for the most useful for the type of web application I wish to develop.
EDIT:
It needs to be able to run on linux.
My pick would be ASP. NET MVC platform with Razor in-line syntax and C# for your code.
.NET ticks all your boxes, plus it has a humongous community, lots of help resources, tutorials etc. online; probably the best coding tool out there (Visual Studio 2010), easy to integrate with cutting-edge stuff like html5, jQuery, CSS3, AJAX etc.
ASP.NET is Microsoft technology, hence you will need to develop on Windows (anything from XP and above will do). C# uses similar syntax to JAVA. Razor is new and fairly easy to use. .NET works very well with most databases and you can even manage both your code and database in the same tool (Visual Studio) depending on which DBMS you'll go for.
And I guess the biggest argument, as Matteo Mosca pointed out is that this very site was built using ASP .NET MVC and, in my opinion, it does its job pretty well.
Please define "webhost". For a lot of people, that means "PHP hoster", and that sort of limits your choice of languages to 1.
For a large webapp, I would definitely take something that runs on the JVM (assuming that your definition of "webhost" includes some shop that accepts .war files for hosting - I usually self-host on virtual machines and run the Play Framework because it is so much easier). On the JVM, you have a choice of frameworks and languages - and again check out Play - and here it starts depending on language skills, specific needs, etcetera. Scala would, for a large app, definitely be on my shortlist these days.
Note that I say "JVM", not "Java". I think the JVM ecosystem rocks - you will probably find a site that takes the standard .war file format to host, if you need a library it is usually there, performance is top-of-the-line. Java as a programming language is so-so, but luckily there is choice these days.
Also, a lot depends on your skills, your preferences, etcetera. I'd say that Python, Perl, Ruby, C# all are very viable languages to build large websites. What development languages do you prefer? At the end of the day, that's a big factor in speed and ease of developement...
I personally would recommend a good structured project (n-layer approach, use of an ORM, etc) under .net 4.0, with the goodness of C# and the Mvc framework (version 3) for the UI part.
If you had bad experiences with .net web forms and you think that sucks, you're right. But the MVC framework is something else, built on the RoR approach.
That's just what I'd use anyway. Consider the power of the features of C# 4.0 (dynamic, linq, generics, etc), the fact that you will be using Visual Studio (which is commonly recognised as the best development ide around) and the great number of free components that are now available, and recently even easy to obtain and use thanks to NuGet package manager.
To give you a great example of a site made with asp.net Mvc - you are on such site right now. Stack Overflow and all the stack exchange sites are built on Asp.net Mvc, if I remember correctly. If not, somebody correct this.
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 12 years ago.
If you were starting a new web development project would you use ASP.Net MVC 2 or Ruby on Rails?
I have recently invested some time in to learning Ruby on Rails because I wanted to learn a solid web development framework. Then I took a new job where I will be using ASP.Net MVC 2.
I know this question is very subjective, but I am planning to write some websites on my own, outside of work, and I would like to get some opinions from others.
Professionally, I'd go with what my team knows best (in my case, MVC and the .Net stack). Since if you have a team with years of experience on a framework, a new app for a production system is not the place to learn new things.
Personally, I'd start by determining where I wanted to take my own learning plan next (I code in both Ruby and .Net, and have personal sites in MVC and Rails). For example, when I wanted to do some personal development in BDD, Jquery, etc. I decided to do my site in MVC since I didn't want to add another learning opportunity at the same time. Now, as I'm looking to build another learning site, I want to play with Cucumber, RSpec, and rails as a learning exercise (and build a nifty site to boot).
Lastly, if I was building a new site with the intent of selling a product or turning a profit, I would objectively figure out which I felt I could get out the door in a shippable state in the shortest time possible. Today, that would be an MVC site. Tomorrow, it might be Rails since I'm on a Ruby studying binge right now.
So to answer, I'd say it depends on your goals (business, learning, profit) and how this site fits either into your professional or entrepreneurial plans or your personal development plan.
The .NET skills you'll acquire working with ASP.NET are applicable across the entire development spectrum; not just web development. Want to write desktop apps? XBOX games? Parallel processing services? Linux or Android apps? You can do all of that with C#/.NET.
I've heard good things about Ruby. I use a variety of languages for different tasks -physicists seem to love SCHEME which has been causing my therapist nightmares as of late - but my web projects are exclusively in .NET.
The best way to become proficient with a new language is to immerse yourself in it, and write something FUN. If you want to get up to speed on the new job as quickly as possible, write something you're interested in using the tools they prefer. ASP.NET MVC is more complex than Ruby, but it's also incredibly powerful once you pass that "Ah ha!" bump in the learning curve.
don't take a poll on stack overflow, use whatever interests you. work is for paying the bills, your personal projects should be for expanding your mind (and having fun)
Since you'll be working with ASP.NET MVC, if I were you I would learn Ruby on Rails on your personal projects. Learning both will make you a stronger programmer because you can see the same solution from multiple perspectives.
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.
This is really a 2 part question. First of all, I just wanted to know how common is asp.net in the real world?
Secondly, I just want to know what are the read world scenario regarding scaling a asp.net site? http://highscalability.com/ almost never talked about the asp.net stack. Does anyone have any reason article that talks about how to scale an asp.net app?
Thanks.
I don't have numbers but based on the number of .net questions on so I'd say it's pretty common For your second question seehttp://highscalability.com/plentyoffish-architecture
MySpace uses ASP.NET (source). A lot of big sites do. I would ignore the Plenty of Fish example though. From my recollection of stories I've read about it, they're just using HttpHandlers for output, skipping the Webforms stuff altogether. You could probably get Webforms to scale though if you absolutely had to. Most popular frameworks can handle high load, it just depends on the code and who's writing it. Anyone can program a site in any framework that won't scale but not vice versa.
As for how to scale, the biggest thing is caching, caching, caching. All big sites cache extensively. Facebook has thousands of servers just for caching. That's just a start though.
Yes asp.net is used in the real world. I have been following how Stackoverflow has been created since I first heard about it over a year ago and have taken away a lot of lessons. Following how stackoverflow will scale in future as their demand grows is pretty interesting and they are making a lot of their information public. Plus the podcasts are hilarious :)
Its hard to say how widespread ASP.NET is in the world but I think it is very widespread compared to PHP, Java and other server technologies. And I'm convinced that ASP.NET is as scalable as anything else you'll try.
If you wan't a starting point to read about ASP.NET performance you could take a look at chapter 6 of the P&P book "Improving .NET Application Performance and Scalability". It's from 2004 so it might be a little outdated.
To give a couple of examples of high traffic sites running ASP.NET you just have to look at http://www.microsoft.com/ or https://stackoverflow.com/. if your site is smaller than these (and it probably is) scalability wont be you biggest concern. You should probably be more concerned about writing maintainable code.
Plenty of Fish with about 1,2 billion pageviews/month
Over 9000.
Realistically I've run into many high traffic websites StackOverflow as an example that use ASP.NET
One thing that is useful for high scalability is the ability to add more servers if needed and still be able to maintain your current session using various ASP.NET session state technologies.
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.
What's the advantage of one over the other? I am so tempted to implement everything in silverlight now, so is ASP.NET, in particular, with Ajax, going to be dead?
For an enterprise solution especially, with 100+ views and 1000+ pages, is it still feasible?
Why isn't silverlight adopted that much by most enterprises? It is mostly used for videos and galleries, etc.
Cheers
Two completely different tools.
They aren't even competitors, much less one killing the other off. Silverlight just came out, requires browser plugins and a client-side runtime, and only has a fraction of the .Net framework available to it. Enterprise hasn't adopted it yet because most clients are wary about having to roll out browser plugins (anyone remember IE5 and ActiveX?) and still consider Flash a more mature and viable way to do client-side browser apps.
ASP.Net works with any web browser, is well-established, has access to the full .Net framework and the web environment, and can easily handle the load that you are sort-of describing, as long as you know how to set it up properly.
Silverlight is a client-side based solution. It's a miniature .NET runtime and Windows Presentation Foundation package, rolled into one and made (somewhat) cross-platform.
Silverlight won't work on your iPhone, it won't work on really old PCs, etc... You can use it in the enterprise, but if you're doing an enterprise based app based on it, you should probably just develop your stuff in WPF and get all of the features of .NET.
Silverlight isn't adopted much because either A) enterprises are using Windows Forms or WPF because they can or B) because it's relatively new to the game, and it remains to be seen how much traction it will get in the marketplace vs. Flash and Java.
Some advantages/disadvantages:
Silverlight
Lower installed base (although increasing at a good pace), due to necessary VM.
You can program in one language, any of the .Net languages supported for Silverlight
Equivalent apps may perform better on the Silverlight VM due to compiled code nature.
ASP.Net
Higher installed base, due to apps being executed on browser, no extra VM needed.
Ususally use multiple languages for programming - C#/VB.Net, CSS, JavaScript, HTML (there are tools that allow you to circumvent this such as the Google Web Toolkit (GWT).
Equivalent functionality web apps may perform more poorly due to interpreted nature of code executed by the browser.
Why isn't Silverlight adopted by enterprise? Because most computers would need a client installation to view the site. Flash is widespread (most computers have at least some version). HTML and Javascript are even more commonly supported. But Silverlight would definitely be an annoyance which would lose some users.
That said, we use some Silverlight on our internal apps. We have a portal/intranet which runs in a controlled environment and we use some Silverlight there. But Flash and Ajax on the public site.
I can do some amazing things faster in Silverlight than with ASP.net, which would be perfect for a targeted population like enterprise customers. I can't run Silverlight off of my Iphone but I have accessed some of my ASP.net apps from it so that's one example where ASP.net wins.
I'd say it will grow but even at version 3, it's a jumble of codeplex projects and 3rd party controls.
I'm looking for a solution now for drag and drop treeview which I can do easily in AJAX but having trouble finding a solution with silverlight and I've tried on my own.
I would learn both and mix them.
I've targeted certain areas of my personal sites for Silverlight, but am wary of overloading a user with too much. For a blog, for example, I wouldn't redo the whole site in Silverlight--that's overkill--and similar to how you wouldn't have (or shouldn't have) an entire site done in Flash. No matter what, some people will have it blocked or not installed at all, and why exclude potential users/clients/readers?
There's the fact that clients need the runtime installed, which means I'm hesitant to convert any critical functionality over to Silverlight for fear someone just won't have or want to install the runtime.
As far as professionally, we are moving forward with web apps that at least partially make use of Silverlight, but the targeted audience is fairly well-controlled in that we can tell them, "You'll need to have Silverlight installed", and we can reasonably be certain they'll comply. For internal tools where it makes sense we are 100% Silverlight all the way as we have total control over that audience. Again, though, the usage has to make sense.
I am tempted to say go with silverlight, its installbase is still low but its because there still isn't very many silverlight apps out there. It is still very easy to install(not as easy as flash though) so I dont see that as a big issue. Html was never ment to be used for applications so a silverlight app is far better suited for application programming. This is of course only my own opinion but I am sure the direction is more, bigger and higher quality applications running on web and not least apps running on mobiles (Silverlight is also coming to mobiles)
I think we need a better programming model for web applications to keep productivity up when creating more complex web applications and silverlight is certainly a step up from html and javascript.