.Net Web Application Redesign - Recommendations? [closed] - c#

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 10 years ago.
My employer has a 9 year old proprietary .Net Web Application that needs redesigned. Its creation was originally outsourced to another company and its architecture and coding were done very poorly. It was designed in ASP.net 1.14, VB.Net, and C#. We continued building on the poor architecture, improving when and where possible. We have upgraded to ASP.Net 4.0 and VS 2010.
The system is only used internally and nearly all business processes and workflows are handled through the system for about 140 users. However, the system has grown so big it has become difficult to maintain and its architecture makes it difficult include new functionality in line with the latest technology.
If you could design a .Net system from scratch, keeping mobile technology and Windows 8 in mind, how would you do it? Our SQL 2008 database is sound and we do not intend to change anything there.
.Net Webforms or MVC?
What architecture would you use? Examples? We would need to allow for a customizable business logic layer in the event that an external company with different business rules uses the system.
Any recommended books on designing from the ground floor up?
Other considerations?

This will be a limited answer, but based on my experience I would say the following... If you're going for a rewrite:
Use MVC 4x.
Web Forms are outdated now. If you look at their original purpose you will notice that they were built with existing windows forms developers in mind (button events etc.).
MVC is more of an evolution of target audience, because web developers have matured to the degree where they realise how important standards are and hence require an environment that will allow them to produce the kind of results modern platforms require. It is also far stronger in the separation of concerns arena with things like unit testing.
For the business layer I would seriously consider Web Services, or in your case WCF. This will allow you to deal with a varied number of situations in the future including business to business scenarios where other companies might want to integrate directly with your internal system.
Other Advice?
We've been involved with quite a few systems over the years where we've adopted someone else's system. Whether badly written/designed, or just outdated, starting from scratch is always difficult and you should pay serious attention to the following:
Budget - How much is the company really prepared to fork out
User Temperament: If you are working with users who don't like change, then this is an area where you should pay special attention. Get them involved in the process so that they feel that the outcome was as much their doing as yours.
Be careful of loss of functionality. Because of time/money constraints you may redevelop something but end up not having the time or money to implement what you considered a minor feature. On deployment your users become agitated because it was in fact a pretty serious piece of functionality. The net result is that they start to loose confidence in the system and you'll pay dearly for that.
Processes: If you can consider Agile as a development strategy. It doesn't lend itself well to smaller projects, but does make a big difference in bigger long terms projects if implemented correctly.
Skills/Resources: Be sure that your team are utilized affectively and have the right skills for the right job.
Wow I could say so much more, but it would take a day or two.
Hope that helps a small amount.
Regards,
Jacques

Related

Modular Website Design, with ASP.NET MVC, I want a less-monolithic design [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I want to build websites in a modular fashion, so I can get better code reuse and abstract away some implementation details. I'm looking for advice on how to code such a website with ASP.NET and Visual Studio, and modules for such a website, because at the moment my websites don't have this nice property.
At the moment I'm working on a web-app that's providing a pretty straight-forward internally facing contact manager for a company. We plan on using identical contact managers (pointing to different databases) for each of our independent customer-facing websites (each for one of the company's businesses). I'm using ASP.NET MVC in C# with EntityFramework. What I'd like, is to be able to simply drop this contact manager package/project/class-library into a Visual Studio solution for an ASP.NET MVC Website, and then just add whatever 'wiring' I need to get them working together. I've seen the use of "areas" within MVC apps, that basically function as mini MVC applications, but it's been messy and actually less maintainable because of configs and different areas wanting different versions of assemblies (this is not code I wrote, and I want to avoid writing code like this). I have an idea of what this would look like in terms of data-objects and box&line diagrams; unfortunately, I don't know what this looks like in terms of views, controllers, projects, or assemblies.
The thing is, as a relatively unseasoned programmer, I've never done this before, so need advice on how to proceed. I'm unfamiliar with the patterns/idioms I need to implement this. So while I have the theoretical knowledge of how to write nice modular software architectures, I don't know they end up looking like in-terms of their actual classes, namespaces, and Visual Studio Projects/Solutions.
My question is, how do I build a website that's more modular than your standard MVC? And, if you have experience doing this (or attempting to), could you please share it? Or even better, can you offer a concrete example of such an architecture? (note this will probably require a link to something not on stack overflow, since you can't copy and paste an entire code-base to stackoverflow).
Apologies for not having a specific question, but this is a bit more complicated than a simple query of "how to traverse a b-tree", "why isn't my code compiling", "does anyone have a regex to do the thing I want", "I wrote some terrible code and now it broke", and "I haven't read the documentation (assuming there is any) and now I'm getting an exception that I don't understand". There likely isn't a single answer, because programming is complicated, solving real-world problems takes thought, and writing good code can be hard. Also, I can't exactly post the code I'm working with because of this thing in my contract known as a confidentiality clause, and not that anyone would read through 100's of thousands of lines of code and tell me how to make it better. \end_rant
I think you are looking for the "Onion Architecture".
Here's a live implementation of the Onion Architecture over on GitHub that uses Web API, MVC etc. It uses the all familiar Northwind database. So you can browse through the code and solution after you learn about this architecture and make sense of it and incorporate the parts you need in your project / solution.
Also, here's a nice tutorial on how to develop using this approach.
Finally, a Channel 9 Video that was what I originally found a few years back when I was researching the same thing, and found it very useful.
ASP.NET MVC Solution Best Practices
This video also takes an existing monolithic project and turns it into an Onion Architecture implementation, along with reasoning on why we are doing what at every step.
First of all you have to direct yourself in implementing your systems based on an approach that can provide complex systems that will not make everyone furious in waiting.
This is commonly known as the Domain-Driven design.
Then comes SOLID. SOLID represents architectural choices that will make your system easy to maintain and extend.
See SOLID in action using C#
All these along with Patterns of Enterprise Application Architecture can keep you busy for all your career and yet it could not be enough.
trying to follow the above in your programming will give you eventually a "less-monolithic" system and modular.
In ASP.NET MVC terms the above could mean:
Keep the MVC paradigm. Do not feed your controllers more than they should eat. Keep them only for what they are. Traffic cops. Also do not put logic in your views in order to keep them abstracted.
Maintain your logic in a separate "space". By the word "space" i mean a separate project, solution, assembly....whatever you think fits to your application size that you are building.
Use MVC Areas for what they are supposed to be. They fit perfectly for the FrontEnd / Admin case. You want to have a frontend that looks and operates differently from the backend, but obeys some general system rules.
Use Web API to make your application open and expendable. This will bring Javascript into play which itself needs to be addressed regarding SOLID e.t.c..
Do not overdose your application with javascript frameworks just for the shake of it. Use what you really need.
Use IoC container like Ninject to manage your dependencies..Marry your interfaces and let IoC resolve your implementations
If you going deep in javascript , take your time to define your viewmodels correctly. They are the contracts between 2 different worlds so they must be clear.

OS(Operating System) Programming in C# [closed]

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center.
Closed 11 years ago.
I know this project.The question is that "Can we create a real OS with Managed Code or the os that will create with this project is a hello world os?"
Operating Systems need to have full control on hardware.Can we do it with this one?
If there are any another project please tell me
Cosmos Project
Yes it can be done - see Singularity which is (was) a Microsoft research project to create an entirely managed operating system in "Sing#" (an extended version of "Spec#" which is itself an extension of C#). Its worth stressing that this was just a research project into the concept, and was never intended as a "full" operating system of the likes of Windows or Max OSX.
The source code is available on CodePlex - you can download the code, build it and run it yourself in an emulator (I've done it myself, its well documented and relativley easy although I can't remember the exact steps myself).
Parts of the system were written in assembly / C, specifically the bootloader and the lowest level x86 interupt dispatch code however this is essentially all but unavoidable (it is by its very nature very platform dependant - something needs to write the x86 instructions to control and respond to basic hardware). The low level interrupts are also not particularly interesting in terms of how the operating system actually functions, so I personally don't consider this as cheating the "entirely managed" definition.
Looking on the Wikipedia page for Singularity there are also 5-6 similar projects, including Cosmos and a couple of similar attempts that use Java instead of C#.
The focus of Singularity OS was on security and dependency, however whats also impressive is that according to some basic benchmarks in An Overview of the Singularity Project1 (PDF) the performance of their archetecture was actually comparable to that of other "more conventional" operating systems:
... these numbers demonstrate that architecture that we
proposed not only does not incur a performance penalty, but is often as fast as or faster than more
conventional architecture. In other words, it is a practical basis on which to build a system.

Cutting edge technologies for .NET web application? [closed]

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
If you would want to build the most expensive possible web application what would you use?
Without buying Microsoft products except VS2010 and SQL Server database.
Does the value increase lie in the technologies that you use and in architectural patterns applied?
If so, what to use among .NET technologies in all application layers to increase the website value?
I am asking this because I have business opportunity and I have no money to invest thus I want to cover my partner's investment with technology contribution.
Thanks a lot.
IMHO I would not try to increase my website value by investing into expensive technologies :-)
I think you should put the working hours together it tooks to build this website and multiply this with a factor, which corresponds to your value.
I think you would be on your way using ASP.NET MVC development (Possibly MVC3 with EF 4.0 as ORM) using VWD Express 2010 and Sql Server Express (If you are hosting on your own, else the hosting company will give you Sql Server Db) now then then move on to Sql Server 2008 and visual studio after you start making money and the website hits increase. It may also be possible to continue using the same if you think the performance is alright.
Of course this is a simplistic answer, Mariusz is right as well.
Bob Muglia of Team Silverlight posted a blog entry after Microsoft's PDC conference. In regards to rich web applications, Microsoft has dubbed Silverlight its technology of choice (i.e. to compete with Flash). However, with the emergence of HTML 5, Microsoft may be switching its decision.
What does this all mean? Silverlight / HTML5 are Microsoft's technologies of choice for rich web applications. This does not mean that ASP.NET (including MVC) loses its value, but as users' demand for richer, more interactive web applications continues to increase, I would invest more in the tools that will help me with SL and HTML 5.
And this does not change the value add of Visual Studio / SQL Server.
Cutting edges are the first thing to get blunted.
I would go further that Mariusz and say that actually, while there are marketing advantages just in being able to talk about the cutting-edge tech that you use, in terms of the long-term value (whether to a customer or an investor), the use of cutting-edge technology is something that has to be justified, as much as it is a selling point.
Firstly, some cutting-edge tech requires the use of someone else's software. Even if it's open-source you are now dependant upon that other supplier. If it's proprietary, you are even more dependant (the possibility of forking off a custom version that suits just you has gone - not something you'd want to do with any software, but at least there is the possibility if you have the source).
At the same time as that issue, if it's licensed for a fee, then this adds to the TCO of you system in a way that doesn't benefit you (i.e. if each installation has third-party software that costs X dollars to set up, that's X dollars you have to include in your price that you never get any value from as a vendor).
Secondly, today's cutting edge technology can be tomorrow's fish-and-chip wrapper*. Indeed, one can say with absolute certainty that some of it will, while some of it becomes a common part of many people's toolkits, and some of it finds a niche in which it remains important while never becoming a tech that a very large number of people use.
That's a safe prediction. The tricky prediction is which will do which. The factors affecting this are a mixture of technological, psychological, social, political and marketing factors in a competitive landscape where it's hard to judge which of the current players will dominate and there's nothing to say that something new will kill all of what's there.
Now, none of this means that you should shy away from the cutting edge. None of it means that you should shy away from using third-party tech (whether proprietary or open). It does mean that you should be sure you are getting value out of it. If you use what's been tried and tested for the last ten years, the chances of it still being just as reliable (and perhaps further improved) in five year's time is much greater than if you use something that is six-months old.
The way to turn cutting edge technologies into a competitive advantage is not to use them, but to use them to do something that you couldn't do, or couldn't do as well (reliably, cheaply, quickly, efficiently all count as "well") as you could otherwise. Even here, if you can think of a good way to turn older tech to the use that someone else is putting newer tech, you may be able to compete with a cheaper and more dependable product.
It is also important to stay aware of tech relevant to your field that you choose not to use - the flip-side of it being hard to predict what will survive and grow is that tech you decided not to use might become tech that you later do want, or even need, to use.
In the end, all technical decisions become both assets and liabilities to future development and the value to customers and investors. You can't expect the tech to sell itself, you can only make sound technical decisions, so that the people who sell the tech (whether that is someone else, or you in a different role) have an easier job when talking up the assets.
*In days of less heavily regulated hygiene practices, it used to be common in Britain and Ireland to wrap fish and chips in old newspapers. I'm not sure how well the idiom about today's news being tomorrow's fish and chips translates to readers in the rest of the world.

Too many frameworks for java web. Scared and Confused :( [closed]

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 3 years ago.
Improve this question
I am an experienced Java developer who is trying to learn web development with Java presently. I also had web development experience with ASP.NET (c#) and PHP. I know what basic concepts (JSP, Servlet, Bean) and looking for a framework to go.
My question is not "What is the best framework for Java" or something similar.
After reading many threads on here and searching on Google for many hours I feel scared and confused. There are so many frameworks and endless combinations. I'm about to change my mind to do this in .net or even PHP.
Is Java really suitable for very small teams (1 or 2 members) to develop web applications?
Is Java really suitable for developing web 2.0 applications?
Isn't .NET and PHP are far less confusing in this context.
If choose a framework and after 6 months I decide to use another, is it possible to migrate easily?
It just feels doesn't right to spend a same effort that I spent to learn Java to a framework that anytime can be changed or become useless. Am I wrong?
Is Java really suitable for very small
teams (1 or 2 members) to develop web
applications?
Of course it is, as long as those one or two team members know Java well. This is a ridiculous question that depends on how you'd like to define "suitable". I'll err on the side of conservative and interpret "suitable" as "possible".
Is Java really suitable for developing
web 2.0 applications?
Are you asking if JavaFX is suitable, or can the web 2.0 UI technology be Flex or something else? I haven't used JavaFX myself, but I think Java back ends can co-exist very nicely with web 2.0 front ends. Services are services.
Aren't .NET and PHP far less confusing in this context?
Your wording needs some work. There, I've fixed it. Depends on how well you know .NET or PHP. PHP is arguably "less engineered" and more straightforward, but every web app isn't a web CRUD app. .NET can be as engineered as Java, but it has the perceived virtue of using features that are part of the framework. At least everything is from Microsoft. Maybe you're confused because there's more choice with Java.
If choose a framework and after 6
months I decide to use another, is it
possible to migrate easily?
It depends on the framework and how well you layer your application. I would say that if you layer your code properly things should be modifiable. But frameworks tend to be glue code, so if you depend heavily on the framework it'll be hard to extract it no matter which one you choose.
It just feels doesn't right to spend a
same effort that I spent to learn Java
to a framework that anytime can be
changed or become useless. Am I wrong?
Anything can change and become useless. Microsoft can decide to re-write their Enterprise Framework 4.0 in such a way that it's not backwards compatible. I don't believe it's a language flaw - Java isn't the only one that's prey to this scenario.
You're right - you're always at risk when you take on a dependency. You're also at risk when you write and maintain everything yourself. You need to choose well to minimize risk, but you can never eliminate it entirely.
My recommendation? Choose Spring and sleep at night. It's a terrific framework that's hung in there for eight years and counting, still going strong. It has a great web MVC framework and lots more. The idioms it encourages will make your Java apps better: more layered, easier to maintain, possible to play nicely with other frameworks, minimizing your risk. They're owned by VMWare now, so they aren't going anywhere.
I think you'll find quite a few varied answers. I'm a .NET developer, I personally love to use .NET, ASP.NET and ASP.NET MVC. If you are comfortable and know Java well, why not stick with what you know? You're right that there are a myriad of framework choices, and this is true for pretty much all the platforms.
Java is suited for both small and large teams. Having a good source control solution in place will benefit any team, so make sure you consider how you are managing your source when working in a team.
The whole Web 2.0 isn't really fixated on a specific server-side technology. The broad concepts of Web 2.0 (even though it's just a magic term) is that of building rich, interactive applications. You could have a Java backend, a .NET backend, and PHP backend, a Python backend, really the choice is entirely up to you. Can they provide the same sort of services to calling clients? I think they can.
PHP and .NET benefit from huge development communities (not saying Java doesn't), and there are a whole host of projects going on with this platforms. Taking .NET as the example, you can extend it, you can build on it, heck you can even pull bits out and replace it with your own. I wouldn't say that you can't do that in Java, it's just that it would seem (to me) to be easier with .NET.
Migration is a tricky beast, you've got to be mindful of how your using the technology, and if you are doing something particularly special, how well would that translate using another technology. If you stick with a familiar design philosophy (such as MVC), you'll find it easier than say migrating from an JSP straight to ASP.NET MVC, etc.
Computing software moves at an amazing pace, and we all have to keep up or get left behind. You've got to ask yourself, are you making this platform decision for personal or business reasons? If it's for personal reasons, do you feel that you are likely to enjoy developing this in future, is it for personal growth and development? Where do you see yourself taking it? If it's for business, can you see what sort of investment you are making in this technology? Are there likely to be any winds of change which would make you question your choices at this stage?
Sorry if that's all cryptic, I hope it helps.
I don't think there is anything wrong with trying to stick with what you have already known. But there are many web frameworks out there that can help you deliver a product much faster. You mentioned ASP.NET and php but there is also RoR which is very popular and quick to get going. Not to mention that a lot of these languages have web frameworks that speed things up even more. I would start looking at these vs going JSP or some other Java approach.
But this is just my opinion.
I suggest you to use frameworks that use POJOs. With spring, wicket and hibernate/ibatis you will be OK for a long long time.
My opinions:
answers
1: yes
2: what really is a web 2.0 application? (yes)
3: no idea
4: will hurt you few days, but will certainly be possible.
5: depends what frameworks you decide to use. (yes)
"DON'T PANIC" -The Hitchhiker's Guide to the Galaxy
I have significant experience building web apps in Java, .NET, and Rails. PHP, not so much. So here's my very opinionated opinion:
Web development frameworks in Java (there are a bunch, but look at Spring) are mature and easy to learn. So if you want to run with Java, you're definitely not doing anything dumb, regardless of your team size, or the "web 2.0"ishness of your project. It's all good.
That said, here are some things to think about if you want to explore other options anyway:
C# is a way better programming language than Java, and I used to be a Java fanboy. They're very similar in many respects, and the transition is easy, but C# just fixes so many of the pain points in Java, and just holds together a lot better. I know you're not asking about languages, but if you're considering different platforms, it's definitely a factor.
Until recently, Web development was a real pain in .NET, because ASP.NET with web forms was pretty awful for non-trivial projects. There is a relatively new MVC platform released by Microsoft. It's nice, easy to work with, and has a growing community. On the other hand, it's practically your only .NET option (aside from Monorail, which has a shrinking community and a lot of bugs).
.NET isn't strictly tied to Windows thanks to Mono, but there's definitely a Windows skew to the community and libraries, and the Mono project is always a bit behind. You'll have to decide if that's relevant to you.
Rails is a blast. A lot of things that are complicated in other frameworks are trivial in Rails. It's certainly not without its issues, but for getting a solidly-architected product running in very little time, it's tough to beat.
Unless you have a very good reason to use java for web development, don't. Statistcally speaking, PHP is king in web development. You will also find many more frameworks and much better support for web development.
If you want to take a step away then try python, ruby, or CGI. They are all decent backends that work just as well in most area's that PHP does.
The main thing here is to go with what you know. Unless it's java.
Very few still use Java for web development. PHP is the winner in this sense because of the community and the immense choice of fully-featured applications available for free. Enterprise level apps are easier to implement using .NET, due to the new features in C# and due to the existence of SharePoint. Python is also used by many, including Google and YouTube. Ruby has its fans due to the Ruby on Rails platform and its language elegance.
I have many acquaintances working exclusively in Java, and get paid very well, but they practically don't touch the Web part.
My opinion is very subjective.

Senior WinForms developer with no ASP experience - legitimate chance at a Senior ASP.NET position? [closed]

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 would like to know from those in hiring roles and in senior ASP.NET roles, would you seriously consider a person like myself for a senior ASP.NET role?
A bit about myself: I am seriously considering a switch from WinForms to ASP.NET. There just do not seem to be many positions for desktop application developers anymore. It's becoming a niche field. In the pursuit of greater opportunities, I am trying to repackage myself as an ASP.NET developer. Unfortunately, there is the obvious lack of professional experience that is a gap on the resume. Seriously, the only real issue with losing my senior status is the paycut involved. I couldn't care less about the title, but sadly, we all have bills.
I could argue that there is a lot more to software development that knowing the intricacies of web development vs desktop-- there are issues of designing reusable code, design patterns, C# language features, database experience (another place where my experience is light), class design, professional maturity, and so on.. But I fear that these arguments will fall on deaf ears, especially in these times, when there are already so many experienced ASP.NET developers already out of work. I can sling together a few simple web pages that hit a database and show the data, but this is far from a professional web site, I'm afraid.
Edit:
10 years update - Screw Microsoft and ASP.NET. You Suck!!! I left Microsoft stack shortly after this and my salary went up by 40%
Well I hire ASP.NET and WinForms coders and I wouldn't rule you out.
Interestingly, in the UK, Web coders tend to earn a lot more than WinForms coders so a strange reversal of your situation.
ASP.NET/Web coding has it's own challenges, especially the stateless design which is fairly alien to most Desktop coders so I'd spend some time getting to understand what you're letting yourself into, maybe knock up a couple of side project which you can put as links in your CV and give you something to discuss in the interview.
I'm interested to know why you are so keen to get into ASP.NET coding though - WinForms is still very popular, especially in Game Tools coding. You can make a decent living and work on a lot of interesting stuff.
Note - controversial but after interviewing a LOT of ASP.NET coders, I found the standard to be very hit and miss, whereas WinForms coders tend to be good solid coders so I suspect you're a decent coder which is ALWAYS a bonus on any team :)
You are a senior developer, who is unfamiliar with ASP.net. So, you don't currently qualify as a senior ASP.net developer, as Senior implies familiar with the intricacies and peculiarities of the platform in which you work. Companies pay senior developers more because they do not have to spend cycles learning the basics of their development platform.
Fortunately the solution isn't too difficult. Just start writing code at home in asp.net. As a Senior .net developer you should be able to catch on very quickly. Put out a product or site to use as a portfolio and to show that you have gained experience in the ASP.net platform. And when you get to your spiffy new Senior ASP.net position, your company won't put undo pressure on you because you don't have the knowledge coming in that they expected from a senior developer.
I think the odds are stacked against you but that doesn't mean you can't make the transition with a little effort.
The first thing you must do is find ways to convey to the potential employers that you can handle ASP.NET development. Have you ever worked with HTML, CSS, or JavaScript? Have you at least consumed Web services? Maybe you could buy one of those ASP.NET beginner books and work through the examples at home.
Next, elaborate on the similarities between your current job and that of an ASP.NET developer. You have likely used similar controls. You have likely followed similar high level design/development concepts. You have likely used the same tools. You have likely worked with complex SQL queries.
Take these things and target your resume / cover letter towards the posted job. Don't exaggerate or lie, just word it such that it is clear that while you haven't worked as a Web developer, you have certainly had enough exposure to handle the transition.
The only other thing I can suggest is patience. Other candidates will have more Web experience and you can't overcome that. You might even need to take a pay cut to make the transition.
Best of luck to you.
Well, I think it depends on a number of factors. Firstly, do you actually know ASP.NET? I mean more than "I can do the samples" -- I mean what's your actual level of proficiency? I would expect someone with your story who may not have had job responsibility in that area to have (extensive) personal experience (e.g., "I didn't do that at work, but for my personal web site bla bla bla"). Are you conversant with the frameworks, 3rd party addons, etc? If so, and you had deep experience elsewhere, I think you have a great shot at landing that type of job.
If you're coming in completely cold, honestly I don't think your chances are good...especially in this market.
The final thing I'd add is that it depends on the type and size of company. A small company hiring a single senior engineer for that slot may have more heartburn about your lack of commercial experience (I know I would), whereas a larger organization looking to build out a team would likely be less concerned.
I would say this transition is a manouver for many. Web programming is very different where you need to love style sheets, HTML and JavaScript preferably since your school time, let alone JS is enough to annoy an orthodox OOprogrammer. Someone wrote above, finding a good web developer can be hit and miss and he's absolutely right!! Web developers groom skills with a different mindset starting from HTML and styles and at some point in their career they realize the need to know C#, JAVA or SQL, the opposite direction you want to travel:)
In my opinion, you as a classic programmer may want to dig deep into SOA, Systems programming, multithreading stuff or even a OLAP or Reports developer. However, if these are not an option then you might bridge Web Developmet gap with some new stuff like jQuery instead of plain JS and ASP.Net MVC framework in lieu of tradition ASP.Net Web Forms programming and try to use some vendor controls like Telerik or Infragistics to get started, hopefully you will find transition lot smoother but still I have doubts if Web programming can keep you involved in long term given your background. All the best!!
This is an interesting question ...
Being a senior Winforms developer, shows you know a large part of .Net, and if you also know how the web works (HTML, JS, GET, POST, Headers, Cookies, etc) and also know ASP.Net fundamentals (page lifecycle, controls, authentication, sessions, etc ...) then you would get a fair change for a senior ASP.Net developer position.

Categories