|
BobishKindaGuy wrote: Why a single form?
Well this makes setting up the PageBase class easier and allows for placement of session variables(or however you decide to persist user info).. all this will happen as a approximatively 1-1 mapping from a single form.. (basically this will allow you to write less code in your webapp.
The reason for a separate ui solution(s) is common in the XNA community, it allows/forces all the (business) logic to be centrally located, and is just a safeguard to taking the easy road as opposed to conforming to a set of best practices. this will also allow you to do a compare against your existing code base, as long as you follow the basic solution and page layout (can be very handy for debugging unexpected behavior).
I'd blame it on the Brain farts.. But let's be honest, it really is more like a Methane factory between my ears some days then it is anything else...
|
|
|
|
|
Thanks again, ely_bob!
I have quite a few tabbed-dialogs and wizards.
What do you think of the idea of a webpage that aligns those vertically so the user work their way from the top down?
There's a notepad replacement app that does that, and it looks really cool. (Of course, that app is a desktop app ha ha ha)
Regarding the separate solution for the UI, do you mean separate project or separate solution completely?
Either way, I guess the code in the form would look something like (air-coding here):
Public Class WizForm1
Private m_UI_Handler As SomeUIHandlingProject
Private Sub Done_Click (e,sender) Handles btnDone.Click
m_UI_Handler.WizForm1_Handlers.DoneClick
End Sub
End Class
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
modified on Thursday, July 22, 2010 5:35 PM
|
|
|
|
|
well Personally I hate to do more vertical scrolling then absolutely necessary...
I'd recommend either a presenter approach (the page reloads with what you want to present) or use a layout similar to what you describe, and use tags to hide/show just "like" you would be doing in a tabbed document(this makes layout easier and I prefer the approach because it is a lot more straightforward.)
If the wizard is a fundamental part, you may want to treat that as a flash app(however I am not familiar with these approaches), that way you can take control of the entire screen, grey out the background browser, and have a specialized solution just for your wizard. and this would be plug-able into your webapp...so...
I meant a one solution with ~3 projectss, a library(or folder of libraries), and 2 UI: winforms & webapp. then if you want to make some kinda mobile app down the road you can just add it to the solution, and add some dependencies and probably reuse a lot more code that way...
I'd blame it on the Brain farts.. But let's be honest, it really is more like a Methane factory between my ears some days then it is anything else...
|
|
|
|
|
Cool!
Your suggestions are definitely part of the solution to this problem. Isolating the UI from the rest of the logic, still within the desktop app, will make it a lot easier to move everything to a web app. The hurdles I encounter during this process will probably force me to think it through with the web app in mind. (E.g. passing certain parameters along with the call, etc.)
Thanks for taking the time to make these suggestions.
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
|
|
|
|
|
I've been intrigued by Morfik. I was "forced" to learn TurboPascal to support manufacturing systems and that migrated to Delphi which I use for my own personal work apps (nothing commercial). The ability to reuse a large part of the existing code is very attractive to me but I haven't really studied Morfik in depth to see how easy/hard a conversion could be.
Just a thought...
|
|
|
|
|
|
Machaira wrote: Why does everyone think creating a web app is the solution to every problem?
Good question! I wish I didn't have to consider it.
But there are some good reasons. See my answer to Ray Cossack.
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
|
|
|
|
|
Thin client apps are so much easier to administer.
1) Changes to the app don't have to be rolled out to 100's of possible users by installing something on their computer. Then when 98% of them are updated and you start getting calls from people who don't read email or don't click yes to update their software when prompted you start pulling your hair out.
2) No installation involved so it involves less helpdesk time.
3) Less worry that someone may leave your company with proprietary software on their laptop.
4) The ability to log in any where any time from any computer.
5) Less of a requirement for users to have high end computers because the load is transferred to a server or a cluster that is centrally managed.
6) the list goes on...
I speak from experience having to currently support and develop desktop and web applications. If given the choice, 100% of the time I would prefer to make a web application from a support standpoint. The only time I would consider a desktop application is if it were something that was not used by many people, was calculation intensive and there were no spare servers available for it.
|
|
|
|
|
Well put, MatrixDud !
Now if only what you said had been part of a course in high school, my app would have been in the cloud long ago!
But I went down another road and now, I've got this huge pile of (cool) code to push around into other smaller piles, I guess.
Thanks for taking the time to share your very relevant perspective to this discussion!
Bob
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
|
|
|
|
|
Correct me if I am wrong, but it seems to me that web applications are mainly for publishing type of applications. In other words, if your desktop applications involve a lot of user interactions, then they may not be suitable for the web. Otherwise, it is not too bad to port them using either of the current available technologies.
|
|
|
|
|
Cloud computing or SAS proponents would say the opposite. Salesforce.com would be considered very user interactive.
|
|
|
|
|
George from Saanichton wrote: web applications are mainly for publishing type of applications
My feel for this is that, like it or not, things are generally moving to the cloud (the web). Whether that ends up benefiting humanity is another question. I'm quite cynical about the whole thing. But it's not so much what kind of app is suitable for moving to the cloud. In my mind it's about the IT people in an org. They want to adopt applications for their org that can be supported centrally, not on every user's desktop. So the browser is the ideal desktop app - it is conceptually a window into the cloud, where the real app resides, and needs no updating. When there's a version update, the app vendor (me) just sends them an update to the app on one of their servers. The user receives the benefit of that the next time they launch the app using their browser. There are other benefits (and drawbacks) too, and CodeProject and many other sites are full of those discussions I'm sure.
Thanks for taking the time to share your thoughts on this!
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
|
|
|
|
|
I've done a lot of work in both web and desktop; mostly web though. I would seriously consider why you want to make this change. If you've made it 10 years, then I'm guessing it's not something that is urgent or needed. Sounds like more of a nice-to-have right? However, if web is truly something needed, then ignore my post
We all know the benefit of why people choose to write an app as a web app instead of a desktop app. But, what people often underestimate is the benefit of why people would choose to write an app as a desktop over a web app. Two HUGE things come to mind. First, is the responsiveness of the app. A desktop app will always be more responsive than a web app regardless of what some web zealots say. The other is the rich environment a desktop offers. The web is catching up here, but IMO still isn't as fully featured as a desktop app. Especially when you get into 3rd party controls like Infragistics... In fact, there's several internal apps at my work that are web apps that are SUCH a pain to use simply because they run in a browser. If they were just done as desktop apps, it would be so much better. On a side rant, with the improvements of RDP and VPN, I think making intranets apps web based is less important these days...
If you feel like you need web, then I would consider what one of the posters suggested. That as, just start with small bits of your app as web.
|
|
|
|
|
|
Bindows!
Interesting!
Thanks, squeek, I will study that.
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
|
|
|
|
|
Have a look at the MVVM pattern that is in common use in WPF coding. It's basic selling point is that it completely separates the UI from the business logic. You could re-code separate pieces of the app over time, with no change on the UI. This would allow your users to act as a last line of defense against UI-breakage ("Hey, after the last update, XYZ broke"). Then, when you're finished with this separation, your Web UI will be a mechanical process of coding UI's for each piece.
You said that the app is multithreaded. Does that imply that it is computationally intensive? All business logic will be centralized so your server will have to be beefy enough to deal with it.
Before .NET 4.0,
object Universe = NULL;
|
|
|
|
|
You have already received lot of nice replies. I hope mine too adds something. BTW I am a windows forms fan so I would avoid doing this.
1. Your application must be divided in to layers I suppose. So reuse existing code after refactoring.
2. Do not try and achieve similar experience in UI as in windows application. It will be tough to give similar experience.
3. If it is related to some business process, have a look into work flow as well.
4. Do not forget to rewrite what deserves to be rewritten.
5. You can use use WCF but do not think of replacing remoting with that, try and make it SOA compliant for in future, you do not need to worry much.
|
|
|
|
|
Thanks very much d@nish!
d@nish wrote: You can use use WCF but do not think of replacing remoting with that
It sounds like you have had a problem that leads you to this conclusion, am I right? My app is heavily using remoting. I was under the impression that WCF was supposed to do everything remoting does. Also, could you please expand the acronym, SOA, I'm not familiar with that.
When you mention "work flow", I assume you mean using visio or similar.
Again, thanks for taking the time to provide such a thorough reply.
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
|
|
|
|
|
Sorry for the late reply.
BobishKindaGuy wrote: It sounds like you have had a problem that leads you to this conclusion, am I right?
No. All I am saying it do not restrict it to remoting. If you rewrite things as a web service, your application will become network independent. You can then very well use it with clients in other technology as well.
BobishKindaGuy wrote: Also, could you please expand the acronym, SOA, I'm not familiar with that.
It is Service Oriented Architecture. Maybe a quick read on MSDN would help understanding.
BobishKindaGuy wrote: When you mention "work flow", I assume you mean using visio or similar.
With .Net 3.0 and above, we have Workflow Foundation. It suites if your application deals in business processes. Something like leave approvals where you have a series of dependent activities happening with human interventions here and there.
|
|
|
|
|
Thanks again, d@nish,
I have considered a webservice in the past, but to create a responsive interactive experience such as is possible with two-way remoting, would be difficult with a webservice, since the client would be "pinging" the webservice way too often. Or maybe others have achieved that... It certainly would simplify things though. Thanks for the clarifications on SOA and workflow foundation. I'll look into that.
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
|
|
|
|
|
I don't know much about your application nor will i read all those replies to see if my answer is already said,
but my answer would be a simple solution to work in between, you will have to write no code at all nor using any plugins to convert your solution, all you have to do is getting a server "PC with windows server will be enough" and a static IP and a webgate certificate from microsoft
then implement the TS service and webgate "Terminal services" then people can run your application from your website as a winform application on remote desktop, I tried this option with many of my applications and it worked like charm
|
|
|
|
|
Thanks very much, nazmolla,
Sounds interesting!
I have customers who have a workstation at work, and may also want to work from home. How do you see this implementation working for them?
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
|
|
|
|
|
Thanks for your interest,
for your customers the solution sure will work but you have to take into consideration the cost of the server and the TS webgate certificates, so if they only want to access their own workstations there are a couple more solutions they can do including using the teamviewer,
anyway you can try it without paying anything first by downloading a trial version of windows server 2008 R2 and implement the TS service and apply a temp certificate for free
and if it worked as you like then buy it
you can find detailed info about TS and remoteapp and their step by step implementation here
http://technet.microsoft.com/en-us/library/cc753844(WS.10).aspx[^]
|
|
|
|
|
Thanks,nazmolla.
Your suggestion is very useful, since it shows a way to work with the existing desktop application rather than rewriting it for the web.
This is not the direction I wanted to explore in the original question, but of course, sometimes we need to look at the bigger picture to evaluate what is the best direction.
____________________________________________________________________________________
The Vulcan Science Directorate has determined that time travel is impossible.
|
|
|
|
|
You are most welcome, actually i till a month ago didn't even know about the TS and remoteapp till our VPN connection went down and our ERP stopped working "Microsoft Ax dynamics 2009" then someone at our ISP made this suggestion instead of us buying a new webportal module or an DIA connection with around a thousand dollars monthly to implement the TS for free, and when i read more i found it very useful and now i actually stopped all other VPN connections to our branches and started using this solution,
anyway, you are welcome and i am ready to help you if you needed anymore assistance with this regard
|
|
|
|