asp.net or WPF (not design or code question but general opinion)
-
ok Soon to start rebuilding the companies core application. Currently it is an ASP.net app but it was recommended to me to consider switching to a WPF application for it. no more than 100 users at most, and on a normal day maybe 30 at once using some portion of the app consistently. not required to have outside access, only usable while at work not at home. Soon to be setting up SharePoint so I am considering putting all reporting through SharePoint and completely removing it from the current application either way. Going with WPF I could create separate apps for different departments instead of one giant app as it currently is on the ASP. Either solution would be using SQL2008 R2 for the database and would be running on just updated 64 bit servers with plenty of resources.(we are upgrading EVERYTHING from hardware to server 2008 r2, everything..) The plan is to move the current projects over as is and get the new hardware running, then its a rebuild of the application one way or another, ultimately it will be up to me which way to rebuild it, as is with better streamlining and hopefully better code, or completely new direction, its at my discretion. Based on such general and nonspecific knowledge as I have shared..... is there any preference to one way or the other(web app vs WPF)? and Reasons why? Edit: I have not coded in WPF as of yet, have in asp.net but I'm not really worried about the learning curve, just being clear as to why I wanted to get opinions. Is it worth taking the time to learn WPF right now basically
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
As the others have said, I think your real choice is ASP or Silverlight. Silverlight is (usually) used as an in-browser applet, like Java or Flash (Well, it's somewhat beyond Flash). WPF is basically a superset of Silverlight, but runs as a separate application. Now I won't claim to be all that familiar with ASP, as I've mostly been doing thick-client WPF stuff, but: * Silverlight can give you a much flashier-looking GUI than web scripting... Once you get used to it, it's easy to add those subtle animations that make it feel smoother. When I first moved from WinForms to WPF, I thought the animations were pointless, but they really do add something from a user perspective, as long as you don't go GeoCities/Tripod style and do the equivalent of all over the place :) * Silverlight is a much thicker client, obviously... If everyone is going to be running on windows machines in a standard environment, this isn't much of an issue, but you're still limiting who can use it. Web scripting languages are pretty universal, but Silverlight is proprietary, and I don't think there'd be any way to use it on, say, ChromeOS, Android, etc. * Data binding in WPF/Silverlight can be incredibly useful once you get into it, but it's a real pain to learn. It'll feel like magic when you get it right, but drive you up a wall when something goes wrong. Once it's working, it's generally a lot more robust than doing everything manually. EDIT: Ok, slightly misunderstood the question... Maybe a rich-client WPF is actually an option for you... Others have covered that pretty well. * The .NET security sandbox might give you problems... I can't claim much experience in this department, as we run full-trust in a closed system, but your mileage may vary. Proud to have finally moved to the A-Ark. Which one are you in?
Author of the Guardians Saga (Sci-Fi/Fantasy novels) -
Perhaps you can keep the application logic and data layer on the server side and expose them as a webservice. Then a client program (or serveral different clients) can connect to the server over this webservice. The advantage would be that you can salvage parts of the old application and can take advantage of the better user interface in the new WPF clients (as well as the client computer's memory for buffering data). If I get a choice, I would prefer a client over ASP .Net pages any time.
"I just exchanged opinions with my boss. I went in with mine and came out with his." - me, 2011 ---
I am endeavoring, Madam, to construct a mnemonic memory circuit using stone knives and bearskins - Mr. Spock 1935 and me 2011I like this, it allows you to run both environments and still maintain only a single set of logic libraries. It does however all depend on your environment, choosing to go either web or app. App certainly gives you greater control over the local user whereas web form is slightly harder to exert user control.
-
ok Soon to start rebuilding the companies core application. Currently it is an ASP.net app but it was recommended to me to consider switching to a WPF application for it. no more than 100 users at most, and on a normal day maybe 30 at once using some portion of the app consistently. not required to have outside access, only usable while at work not at home. Soon to be setting up SharePoint so I am considering putting all reporting through SharePoint and completely removing it from the current application either way. Going with WPF I could create separate apps for different departments instead of one giant app as it currently is on the ASP. Either solution would be using SQL2008 R2 for the database and would be running on just updated 64 bit servers with plenty of resources.(we are upgrading EVERYTHING from hardware to server 2008 r2, everything..) The plan is to move the current projects over as is and get the new hardware running, then its a rebuild of the application one way or another, ultimately it will be up to me which way to rebuild it, as is with better streamlining and hopefully better code, or completely new direction, its at my discretion. Based on such general and nonspecific knowledge as I have shared..... is there any preference to one way or the other(web app vs WPF)? and Reasons why? Edit: I have not coded in WPF as of yet, have in asp.net but I'm not really worried about the learning curve, just being clear as to why I wanted to get opinions. Is it worth taking the time to learn WPF right now basically
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
You might consider Silverlight (as others have mentioned) or an XBAP... both run in the browser, though both have their issues.
-
Your considerations should be: What are the requirements of the application? What are the deployment requirements? What operating systems does the application need to run on? What devices does the application need to run on? Once you know the answers to those questions, you should consider the technology. Microsoft's take on this is: Cross browser, cross-platform, cross-device: HTML, JavaScript, etc. Rich media, forms-over-data business apps: Silverlight Deeper desktop integration and ISV apps: WPF Complete control and best performance: C++
Forgive your enemies - it messes with their heads
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
All good points
Pete O'Hanlon wrote:
What are the requirements of the application?
Handle All inventory in/out, Prints various bar coded work orders, handles all reports,. Currently the Frankenstein monster handles ALL departments, sales, management, HR, the factory floor etc.. One possible consideration is to separate it all out into department apps.
Pete O'Hanlon wrote:
What are the deployment requirements?
Will be living on brand new 64 bit servers with plenty of resources. If WPF it would be on a terminal server rather than the client machines as the client machines are a conglomeration of old, older and antique boxes with minimal resources.
Pete O'Hanlon wrote:
What operating systems does the application need to run on?
windows server 2008 R2 if an ASP app, if its doable on a terminal server the WPF would be on same .
Pete O'Hanlon wrote:
What devices does the application need to run on?
none other than server/client pcs.
Pete O'Hanlon wrote:
Rich media, forms-over-data business apps: Silverlight
Deeper desktop integration and ISV apps: WPFEasy as possible for the end user, and not all those are Mensa candidates lets say. So the more point and click I can give em, the smoother it runs in the end.
Pete O'Hanlon wrote:
Cross browser, cross-platform, cross-device: HTML, JavaScript, etc.
All ms house here, all use IE and various versions of Windows from XP to 7.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
-
gavindon wrote:
It was suggested that the app would run on a terminal server
Don't. Seriously, don't. WPF and Terminal Server do not play nicely together in my opinion. For deployment, you're better off delivering the application using ClickOnce.
Forgive your enemies - it messes with their heads
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
Pete O'Hanlon wrote:
WPF and Terminal Server do not play nicely together in my opinion.
if that is the case then sticking with web app might be best. I have serious doubts about performance if this is installed on client machines as most of the machines out and about the company factory floor and whatnot are old barely minimal boxes running xp. A couple of them are in fact so bad that they connect to a terminal server just to use its browser and hit the current web app.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
-
All good points
Pete O'Hanlon wrote:
What are the requirements of the application?
Handle All inventory in/out, Prints various bar coded work orders, handles all reports,. Currently the Frankenstein monster handles ALL departments, sales, management, HR, the factory floor etc.. One possible consideration is to separate it all out into department apps.
Pete O'Hanlon wrote:
What are the deployment requirements?
Will be living on brand new 64 bit servers with plenty of resources. If WPF it would be on a terminal server rather than the client machines as the client machines are a conglomeration of old, older and antique boxes with minimal resources.
Pete O'Hanlon wrote:
What operating systems does the application need to run on?
windows server 2008 R2 if an ASP app, if its doable on a terminal server the WPF would be on same .
Pete O'Hanlon wrote:
What devices does the application need to run on?
none other than server/client pcs.
Pete O'Hanlon wrote:
Rich media, forms-over-data business apps: Silverlight
Deeper desktop integration and ISV apps: WPFEasy as possible for the end user, and not all those are Mensa candidates lets say. So the more point and click I can give em, the smoother it runs in the end.
Pete O'Hanlon wrote:
Cross browser, cross-platform, cross-device: HTML, JavaScript, etc.
All ms house here, all use IE and various versions of Windows from XP to 7.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
So you aren't going to be doing any heavy duty animations - well, TS may be an option here but you can end up with pixellation issues on older client platforms. IF DWM is enabled on the server, it simply sends out drawing instructions, and I've seen underpowered XP boxes having problems coping with this.
Forgive your enemies - it messes with their heads
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
-
Pete O'Hanlon wrote:
WPF and Terminal Server do not play nicely together in my opinion.
if that is the case then sticking with web app might be best. I have serious doubts about performance if this is installed on client machines as most of the machines out and about the company factory floor and whatnot are old barely minimal boxes running xp. A couple of them are in fact so bad that they connect to a terminal server just to use its browser and hit the current web app.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
In this particular case, I see no compelling reason to move to a desktop architecture. Everything you have described so far can be easily achieved in a web based application.
Forgive your enemies - it messes with their heads
My blog | My articles | MoXAML PowerToys | Mole 2010 - debugging made easier - my favourite utility
-
ok Soon to start rebuilding the companies core application. Currently it is an ASP.net app but it was recommended to me to consider switching to a WPF application for it. no more than 100 users at most, and on a normal day maybe 30 at once using some portion of the app consistently. not required to have outside access, only usable while at work not at home. Soon to be setting up SharePoint so I am considering putting all reporting through SharePoint and completely removing it from the current application either way. Going with WPF I could create separate apps for different departments instead of one giant app as it currently is on the ASP. Either solution would be using SQL2008 R2 for the database and would be running on just updated 64 bit servers with plenty of resources.(we are upgrading EVERYTHING from hardware to server 2008 r2, everything..) The plan is to move the current projects over as is and get the new hardware running, then its a rebuild of the application one way or another, ultimately it will be up to me which way to rebuild it, as is with better streamlining and hopefully better code, or completely new direction, its at my discretion. Based on such general and nonspecific knowledge as I have shared..... is there any preference to one way or the other(web app vs WPF)? and Reasons why? Edit: I have not coded in WPF as of yet, have in asp.net but I'm not really worried about the learning curve, just being clear as to why I wanted to get opinions. Is it worth taking the time to learn WPF right now basically
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
Thanks to all that replied, I will be taking all the posts and points into consideration for the next few days before deciding what to do. I do truly appreciate the suggestions and help from you all.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
-
John Simmons / outlaw programmer wrote:
you *should* worry about the learning curve (Silverlight and WPF are like inbred relatives), because neither are much like ASP.Net.
Ah but If I was worried about the learning curve I wouldn't be where I am at now, since I had to learn ASP and C# on my own :-D Seriously though, I didn't expect it to be the same. I was just curious mainly in benefits/drawbacks of the two in a very general comparison.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
gavindon wrote:
Ah but If I was worried about the learning curve I wouldn't be where I am at now, since I had to learn ASP and C# on my own :-D
It ain't a good idea to be smug. I've learned it the same way, and had to teach myself WPF. The learning curve is steep - ask anyone here that's done it.
".45 ACP - because shooting twice is just silly" - JSOP, 2010
-----
You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997 -
gavindon wrote:
Ah but If I was worried about the learning curve I wouldn't be where I am at now, since I had to learn ASP and C# on my own :-D
It ain't a good idea to be smug. I've learned it the same way, and had to teach myself WPF. The learning curve is steep - ask anyone here that's done it.
".45 ACP - because shooting twice is just silly" - JSOP, 2010
-----
You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997I wasn't being smug I promise. jut simply stating that I have to constantly learn something either way it goes, I'm not scared of taking on a new task when needed. And when you are at my level of (in)experience, all learning curves are kinda steep....
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
-
I like this, it allows you to run both environments and still maintain only a single set of logic libraries. It does however all depend on your environment, choosing to go either web or app. App certainly gives you greater control over the local user whereas web form is slightly harder to exert user control.
Agreed. If you need an application that is available from anywhere and any device, a client is not the best way to go. But every application needs administration, so why not give the administrators a client to work with?
"I just exchanged opinions with my boss. I went in with mine and came out with his." - me, 2011 ---
I am endeavoring, Madam, to construct a mnemonic memory circuit using stone knives and bearskins - Mr. Spock 1935 and me 2011 -
Pete O'Hanlon wrote:
WPF and Terminal Server do not play nicely together in my opinion.
if that is the case then sticking with web app might be best. I have serious doubts about performance if this is installed on client machines as most of the machines out and about the company factory floor and whatnot are old barely minimal boxes running xp. A couple of them are in fact so bad that they connect to a terminal server just to use its browser and hit the current web app.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
We escalated a WPF performance issue to MS (found mostly on older PCs - but all within MS recommended WPF spec) and we heard from a senior MS dev that WPF shouldn't really be used on anything less than 2 cores, as there are 2 blocking threads in operation. Its not the official line of course, but do not assume it will perform on older kit. Adam
-
ok Soon to start rebuilding the companies core application. Currently it is an ASP.net app but it was recommended to me to consider switching to a WPF application for it. no more than 100 users at most, and on a normal day maybe 30 at once using some portion of the app consistently. not required to have outside access, only usable while at work not at home. Soon to be setting up SharePoint so I am considering putting all reporting through SharePoint and completely removing it from the current application either way. Going with WPF I could create separate apps for different departments instead of one giant app as it currently is on the ASP. Either solution would be using SQL2008 R2 for the database and would be running on just updated 64 bit servers with plenty of resources.(we are upgrading EVERYTHING from hardware to server 2008 r2, everything..) The plan is to move the current projects over as is and get the new hardware running, then its a rebuild of the application one way or another, ultimately it will be up to me which way to rebuild it, as is with better streamlining and hopefully better code, or completely new direction, its at my discretion. Based on such general and nonspecific knowledge as I have shared..... is there any preference to one way or the other(web app vs WPF)? and Reasons why? Edit: I have not coded in WPF as of yet, have in asp.net but I'm not really worried about the learning curve, just being clear as to why I wanted to get opinions. Is it worth taking the time to learn WPF right now basically
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
-
Our techies tell us that SQL 2008 R2 is buggy. Stick to 2008 (v10.0) or wait a little for Denali, unless there are killer features in R2 (not in v10.0) you need. A
the money has already been spent on 2008 R2 :) I have used it at my last job and did not have any difficulties, does not mean the bugs are not there but I did not run into them at that time at least.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
-
We escalated a WPF performance issue to MS (found mostly on older PCs - but all within MS recommended WPF spec) and we heard from a senior MS dev that WPF shouldn't really be used on anything less than 2 cores, as there are 2 blocking threads in operation. Its not the official line of course, but do not assume it will perform on older kit. Adam
Yeah I do not plan on going with a full client installation due to our typical floor machines being dinosaurs.(A number of machines in cabinets out on the factory floor.) If I was to go with WPF it would be only if it would work with terminal server. Which a couple of people have said it does not play well, so its looking grim for that route.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
-
John Simmons / outlaw programmer wrote:
you *should* worry about the learning curve (Silverlight and WPF are like inbred relatives), because neither are much like ASP.Net.
Ah but If I was worried about the learning curve I wouldn't be where I am at now, since I had to learn ASP and C# on my own :-D Seriously though, I didn't expect it to be the same. I was just curious mainly in benefits/drawbacks of the two in a very general comparison.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
Really no kidding, you should be worried about the learning curve. Even for a medium app like yours you cannot deliver quality while you are just learning the technologies. I don't know how much you know already but you need to know really well some of the specific patterns used with each technology. Then you should be experienced enough in both WPF and Silverlight to know the limitations of the latter in case you want to make an educated pick. You have to learn RIA Services because if you want to port the app at least do it using all the latest tools. If you need your client to be a browser, Silverlight works curently in all the latest versions of the 4 big browsers. I don't know about WFP XBAP apps. Silverlight consumes data only from service like data sources and every call is asynchronous. I could go on ... but my point is that is not an easy task. Great stuff to learn though and you may be different than me and learn faster, who knows. So, if you have the time, take the dive. You start with Silverlight, create your app and later you're better positioned to learn WPF. In the process of learning Silverlight volens-nolens you will learn a bit of WCF. Cheers
giuchici
-
I wasn't being smug I promise. jut simply stating that I have to constantly learn something either way it goes, I'm not scared of taking on a new task when needed. And when you are at my level of (in)experience, all learning curves are kinda steep....
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
I started a part-time WPF project a few months ago and the learning curve isn't so bad. The first week wasn't very productive, but I've managed to develop a C-like code diff tool (Beyond Compare + syntax coloring + better line matching algorithms) with custom scrollbars, document coloring and stuff very easily. I went through a similar learning curve in ASP.NET and it never felt as natural as WPF. But I hate Javascript so maybe I'm biased...
-
ok Soon to start rebuilding the companies core application. Currently it is an ASP.net app but it was recommended to me to consider switching to a WPF application for it. no more than 100 users at most, and on a normal day maybe 30 at once using some portion of the app consistently. not required to have outside access, only usable while at work not at home. Soon to be setting up SharePoint so I am considering putting all reporting through SharePoint and completely removing it from the current application either way. Going with WPF I could create separate apps for different departments instead of one giant app as it currently is on the ASP. Either solution would be using SQL2008 R2 for the database and would be running on just updated 64 bit servers with plenty of resources.(we are upgrading EVERYTHING from hardware to server 2008 r2, everything..) The plan is to move the current projects over as is and get the new hardware running, then its a rebuild of the application one way or another, ultimately it will be up to me which way to rebuild it, as is with better streamlining and hopefully better code, or completely new direction, its at my discretion. Based on such general and nonspecific knowledge as I have shared..... is there any preference to one way or the other(web app vs WPF)? and Reasons why? Edit: I have not coded in WPF as of yet, have in asp.net but I'm not really worried about the learning curve, just being clear as to why I wanted to get opinions. Is it worth taking the time to learn WPF right now basically
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
I am currently working on converting the online portion of a project from ASP.Net to Silverlight 4. As Pete advised the learning curve is steep and not to be taken lightly. If you are using SQL Server I am guessing the app has a large investment in stored procs. Domain Services in Silverlight does not handle stored procs very well. That is, expect to be hand coding a lot of boiler-plate. Joins require procs. So if the app is interperting codes, for instance state codes, you need to use procs. Have you considered using Windows forms with Sync Framework and SQL Compact for a local data store? This would work well for an ih-house application. It would let you keep the data base pretty much as is and convert the subsystems incrementally. Use Krypton controls for a choice of look and feel, for instance Office 200x. Have fun.
-
Yeah I do not plan on going with a full client installation due to our typical floor machines being dinosaurs.(A number of machines in cabinets out on the factory floor.) If I was to go with WPF it would be only if it would work with terminal server. Which a couple of people have said it does not play well, so its looking grim for that route.
Programming is a race between programmers trying to build bigger and better idiot proof programs, and the universe trying to build bigger and better idiots, so far... the universe is winning.
We have several clients running our WPF/C# applications on Terminal Server and Citrix without any issues. I wouldn’t hesitate to use WPF because of Terminal Server. You just need to remember that everyone is sharing the same resources. Make sure you dispose of objects correctly and don’t hold on to large chunks of data being lazy. We also use DataReaders almost exclusively. If you have 30 people all loading giant data tables on the same machine at the same time it can chew up resources in a hurry.
-
gavindon wrote:
Ah but If I was worried about the learning curve I wouldn't be where I am at now, since I had to learn ASP and C# on my own :-D
It ain't a good idea to be smug. I've learned it the same way, and had to teach myself WPF. The learning curve is steep - ask anyone here that's done it.
".45 ACP - because shooting twice is just silly" - JSOP, 2010
-----
You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997'Smug' is a bit fair here. Your transition over via the C# end of things is going to be mindblowingly awesome, but your general layout ethics and methodology is waaaaaaaaaaaaaaaaaaaay different. As a matter of fact, there is NOTHING similar to general web development except for the page your linked object sits on...which has quite a bit of JS extendability...so make sure you tack on Javascript to your list...and get to understand the RIA services, too. If you're planning on switching to Share Point soon, you really shouldn't bother. Just clean up what you've got and spend your learning curve on custom Share Point modules.