Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations Chris Miller on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

VFP 2 .Net Roadmap

Status
Not open for further replies.

stanlyn

Programmer
Sep 3, 2003
945
US
Hi,

I'm asking a .Net question here because I've been developing VFP apps for 16 years now and I need to get going in the Visual Studio .Net web development stuff and I cannot figure out a roadmap to get there. Its so intimidating at all the different apps I have to know to be productive in this new environment as a 2 man shop. Looks like I have to learn a lot about Visual Studio, OOP, .NET, C#, SQL Server, Php, Entity, JQuery, Java, Css, IIS, MVC, and whatever else I don't know about.

My experience over the years has been in SCO Unix, filePro, VFP3-9, MsSql, OOP, and IIS. So, with this in mind what should I be studying and when(order). Because I'm starting as a relatively new programmer to .Net, what study order would yield the most production of getting a VFP app migrated/re-created as a .Net Web app?

Study what 1st, 2nd, 3rd, and so on?... (and why you believe its best)

Many Thanks,
Stanley
 
>I need to get going in the Visual Studio .Net web development stuff

You perhaps should first define your destination platform(s).

.NET is not necessarily "web development stuff". .NET supports three main dstination platforms: web/intranet/ is one, working in the browser or more specifically designed in the metro/tiles/winapps section of Windwos8. WPF is for Desktop supporting XP to Win8, and you can also stay at Winforms as another Desktop solution.

The first question therefore is, where do you need your applications and that needs the knowledge about who uses it with which devices.

If you stay with the desktop, you don't need web stuff at all.

Bye, Olaf.
 
Looks like I have to learn a lot about Visual Studio, OOP, .NET, C#, SQL Server, Php, Entity, JQuery, Java, Css, IIS, MVC, and whatever else I don't know about.

Not so. PHP, JQuery, CSS, Java, etc. are not .NET. They might or might not be useful platforms, but they are separate from .NET, C# and Visual Studio. In fact, PHP and Java could be considered as competitors of C# (in a loose sort of way). CSS is not a development tool at all. PHP, CSS and JQuery will be irrelevant if you are only developing desktop apps.

As Olaf says, you first need to be clear what your target platform is, and what your constraints are. If you can share that information with us, we can no doubt help you in the right direction.

Mike


__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
agree with above ,but let's assume for now you want to build Net apps that are similar line-of-biz to VFP

then I would suggest
1) go for C# not VB.net, start with any book and build a few hello world examples
2) go for Winforms , the leading-edgers might rubbish this in favour of WPF , but perfect for this
3) SQL server back-end or SQLite is also fine , works fine with Visual Studio
4) Start with ADO.NET for linking to your database , but progress to Entity Framework as quickly as you can !!
5) Take one of your existing VFP apps and work with a small section of it , like a Customer , Product master table setup. Build your first dotNet tester app to achieve the same functionality.


6) Plain vanilla dotNet lacks a lot of the modern user interface patterns that users expect. Investgate some of the main commercial libraries e.g. DevExpress , Infragistics , Telerik. This does mean spending a bit , but you will re-coup the investment many times over. I've gone for DevExpress seems #1 in most ratings

I've rebuilt a few ,see example on , Demos for a before/after example

If you consider any future web routes , go for ASP MVC , avoid all the "magic" code converters
 
I agree with most of the above. .Net is huge, but if you were in an OOP mindset with VFP the jump for that isn't too difficult. Java, PHP are not .Net languages and yes, are somewhat competitors. If you need web, then you need to learn HTML, CSS, JavaScript, JQuery. But you'll need to learn those for any web development including php, ruby on rails, and others.

I disagree about the WinForms comment. While Winforms continues to be the number one desktop technology, it's mainly used for legacy development. WPF is the recommended desktop platform, but the learning curve is very steep.

One thing left out of the mix is Lightswitch. It seems to be picking up attention and is fully supported by Microsoft.

The suggestions to start slow are right on the money. Don't expect to become a .Net expert overnight. How long did it take you to master VFP?

Finally, I highly recommend you get a subscription to Pluralsight or LearningLineApp.

Craig Berntson
MCSD, Visual C# MVP,
 
Since it's been a few days since Stanley posted his question, it would be helpful if he could come back and let us know more about his goals - and, specifically, his target platform. That way, we can give him some specific advice on the tools and technologies that have been mentioned.

Mike

__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
Stanley-if C# is what you want, you may want to get your hands on the last year or so's issues of FoxRockX ( Doug Hennig has done a series of articles introducing C# from a VFP perspective.

Tamar
 
OK, I'm back and it looks like this question finally got some traction, as nothing happened in the 1st couple of days. Sooooo, thank you all for replying.

Looks like the destination is modern desktop, web, and mobile apps. So it looks like the full list of technologies is needed in doing both pretty (eye candy - css, java) and backend work.

And yes, I just purchased a PluralSight subscription and have taken completed a course on SQL, Myths and Misconceptions, CSS 3 From Scratch, Introduction to CSS, Getting Started with Visual Studio 2012 part #1, Entity Framework 4.0 By Example, Entity Framework 4.1 - Code First, Getting Started with Entity Framework 5, and WPF Telerik Controls. Most of the Thanksgiving holiday spent there.

Tamar, I took the VFP2DotNet Conversion class by EPS Software in Houston, TX back in April? Learned alot about the MVC style and frankly left the class after 5 days thinking the days of 1 and 2 man shops are over as programming has grown into so many specialties that it takes a team to do anything, unless of-course you was writing html by age 12. Hope someone can debunk that...

I have the FoxRockX copies featuring Doug's articles, but honestly it (C# by itself) goes nowhere in creating a simple crud app connecting to sql. Its this type of frustration that caused me to shell out the $900 for the class and still at the end of the day thinking I have to start over as little to nothing translated from VFP to .Net.

clipper01, I'm pretty much studying what your list describes except for the WinForms part, where I'm studying WPF MVC for the desktop stuff. I agree that in order to create visually compelling apps, we have to use 3rd party tools (Telerik or similar) and many generally involves some java and html5 sprinkled within. Plus the mobile apps really use them. Also, thanks for the "No Magic Code Converters" advice.

Now here is the clincher (game changer) on what I should be really doing... I'll be 60 at my next birthday, sooooooooo, should I be hiring some young guns for the coding of my apps that I would probably never be able to support while learning as we go along, or find a new occupation? I hate not being able to support it... Or maybe I can, its that I don't want to be ignorant about whats going on... After all, I have to answer to the customer...

Please, please, think before you speak as I may take your advice.

Thanks, Stanley
 
>Looks like the destination is modern desktop, web, and mobile apps
Why that?

Do you really need to support all of these platforms? As a one man shop you should concentrate. If customers need a desktop app and also want to do some features via their smartphones, they should perhaps look for another ISV to do a mobile application based on your database for the main desktop application.

And if customers use desktop, do they also need web at the same time?

Do you need to take any job you get? How about acquiring projects through freelancer platforms, which match your choice of weapons?
Or do you have a product you want to sell to as many customers as you can? If it's an enterprise application, does it make sense to only use it on mobiles, tablets? If you need a workstation to work with it on larger displays anyway, then only concentrate on desktop.

By the way, you have a strong misconcenption of needing to learn Java, when you talk of it in conjunction with HTML and CSS what you need is JavaSCRIPT. And despite the partly similar name, Javascript is NOT a scripting version of JAVA. The language concepts are totally different. Java is a world of it's own for device independent applications running on a java virtual machine, which is available for any host OS and so it's a layer hiding the specifics of each single OS. The price you pay is JAVA is slower than any native development, why do you think most VFP develop didn't go for JAVA, but for DotNet?
So you could also skip anything else and just do Java, but it's not recommendable. You won't get around HTML and CSS anyway, but those are not programming languages, just document description languages and layout styling languages, so the learning curving is not steep there.

Bye, Olaf.
 
And one further detail: You mostly need Javascript for the AJAX technology and mostly for developing web apps. So you can forget about it's existence, if doing Desktop applications. If you do parts for web or mobile, you can concentrate on JQuery, because it does all you need to work with AJAX without needing to learn Javascript itself. JQuery itself is written in Javascript and simplifies what you would need to learn in Javascript to be able to use the AJAX technique. Before you start learning, make a map of the technology buzz words and see what is connected to what and what they stand for.

Bye, Olaf.
 
Stanley,

I can't add much to the good advice you've been given. I hope you manage to make the right the decisions - not easy, given the range of options available.

I will only add one small point. Forget Java. In fact, I don't know why it was on your shopping list. It's no a longer mainstream platform, and it offers few advantages over other tools. (Javascript is an entirely different matter, but that's got nothing to do with Java.)

Mike



__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
The most popular programming languages

Ha! That gives the lie to what I just said about Java, which it rates at No. 2. (Then again, it puts Fortran in the top 30. For goodness sake. Fortran?)

Of course, most popular doesn't mean the same as in most demand. If you are interested in learning new skills to develop your career or business, what matters is what employers want.

Mike

__________________________________
Mike Lewis (Edinburgh, Scotland)

Visual FoxPro articles, tips and downloads
 
Java is a mainstream development language. It is developed and modernized. It also is behind many different things, eg behind SAP, behind embedded device firmware development and much more. The most modern Windows development is C# and will stay so. So if that is your platform also in regard to smartphones, then go there. If you want to support mobile, you have to choose between the Windows, iOS or Google/Android world anyway, it's not one platform, but surely HTML5+CSS3 offers a basis to support all these OSes on the APP level, that means on the level of small non enterprise applications, or tools as add on to a enterprise application or an application landscape a bigger corporation uses.

You could first decide about the backend. Which database to use, what makes more sense? Because you can still use most any database from VFP, even if you just use it as your maintenance tool. And then decide what you build upon it. Having to support certain devices your databases are limited in regard to local data, eg SQLite, even not MySQL, but you will always have a central database, and there you can also go into the different cloud worlds. That adds to the platform choice.

Bye, Olaf.
 
>>Looks like the destination is modern desktop, web, and mobile apps
>Why that?
Well...
1) desktops and laptops are in a serious decline in favor of tablets and mobile. New Corporate development is for tablets.
2) Now that web apps with the help of some 3rd part controls can behave just like a rich desktop app, it makes little sense to ignore the web space. Once you make the jump into the web successful using MVC, then doing mobile is achieved by adding a mobile View of the MVC methodology.
3) And of-course everyone wants to extend their apps into the mobile sector. See #1 above.


> And if customers use desktop, do they also need web at the same time?
Desktops are dying and some would say they are dead. They certainly are not dead for me. There will always be desktops for business apps but they will be in the minority. I am also noting that for 12 of my 13 grandchildren and 3 out of my 3 children, that if the device does not have an internet connection, they want nothing to do with it. My wife now spends 90% of her computing time on an iPad and only uses a desktop with her embroidering machine. (go figure...)

As for customer work, I do very little of that since I learned that creating a solution for professionals in a niche market (vertical) where I can develop once and sell many times with yearly license fees associated is the only path for me. If a customer wants a solution where that solution can canned, then I'm interested, otherwise I'm not. And of-course, today they want web and mobile stuff.

>you have a strong misconception of needing to learn Java,
No not really, as I don't know anything about it except that a lot of programmers mention adding a bit of Java here and there. Telerik has some really cool controls from their Kendo UI... I just looked and confirmed that it needs javascript and HTML5. That was the reason for starting this thread, to get a DOABLE plan of action. Is it safe to assume that modern MVC apps will need some of the 3rd party controls and that those controls rely on Java*. Thanks for clarifying that there is a hugh difference between Java, javascript, and jquery, and that Java should be forgotten at this time.

So the study list is: jQuery, Visual Studio, HTML, CSS3, C#, and SQL for now.
What should the study order be?

>The most popular programming languages
Where is VFP on that list of 50???
I didn't see it at all. Are we that far off base?

After doing the Visual Studio 2012 beginning course, it is easy to see why its such a mature platform to develop in, and I see that as a big step up from VFP. It even spots errors in uncompiled code (new for 2012) and offers to fix them and...

Back to the big question, Can my time be better spent elsewhere?

Thanks, Stanley



 
There is no family of Java* languages. There is Java and Javascript and they are two seperate worlds. Get used to calling Javascript ECMAScript and you get rid of that Java annotation. Jquery is written in Javascript and what you saw for Kendo UI also uses Javascript or Jquery. The JQuery Framework and others come in many flavors and with many modules, eg JQuery UI is for UI, user interface. Nothing of that has to do with Java.

Bye, Olaf.

 
Hmm... I'm confused by your post.

You say CSS and Java in the same breath. Surely you mean javascript? (note that java is to javascript as ham is to hamburger).

You also save WPF MVC which is confusing. WPF uses MVVM. Do you mean ASP.Net MVC?

Now for some advice:
If you're doing a web app, don't add mobile after. Think mobile first. Also use a good reactive CSS framework like Bootstrap. In fact, MVC 5 uses Bootstrap by default.

Concentrate on one thing and get to where you're comfortable with it. So pick web or mobile or desktop. It will take some time. It took me about a year of doing ASP.Net MVC apps before I felt comfortable. After two years of doing web dev, I still have a lot to learn. I have yet to look at knockout, angular, node, etc.

For mobile, look at Xamarin tools. In fact, they're now supported by Microsoft.

Learn about Portable Class Libraries (PCLs). They'll let you make cross platform (web, phone, tablet, windows) apps a lot easier.

Attend a local user group regularly.

I know lots of one and two man shops doing .Net stuff. It seems overwhelming now, but stick with it.

Craig Berntson
MCSD, Visual C# MVP,
 
I reread your posts...

Doable plan of action:
1. Pick one simple CRUD aspect of you current application and duplicate it as a web app (ASP.Net MVC)from beginning to end. Don't worry about kendo, jquery, javascript, etc. at this point. Just simple, CRUD. Don't worry that things look ugly. You'll tackle that later.

2. At this point you should have some basic understanding of ASP.Net MVC and Entity Framework Code First. Now you want to spruce up the application. Here's where you'll learn about CSS 3, HTML div and span tags, HTML 5. You need not only how they work but how to implement them in MVC.

2.5 Add in a good CSS framework. I recommend Bootstrap.

3. Add some functionality like popup calendars, etc. Stay with open source jquery, jqueryui. You'll also start getting into javascript at this point. Add some popup calendars, dialogs, etc.

4. This step is all about client-side validation and async. Again, you'll learn more about jquery, but also how to use Ajax to send data to the server and get back Json then use it in the UI.

5. Now you're ready for something like Kendo (I prefer the Wijmo competitor from ComponentOne. Last I checked it supported more open-source, standardized javascript libraries than Kendo.)

6. Go back to MVC and learn how to unit test (see my blog series from earlier this year). Learn about good MVC coding practices. Also, add additional application functionality (like additional CRUD screens).

7. Learn about web Ux design. A web application is not a desktop application. it's also not a web site (that's things like amazon.com). The goal here is not become a designer, but to learn the basics.

8. You mention that you create software then charge something like a service fee to use it. If going web, you may want to become a Software as a Service (SaaS). Learn about SaaS and multi-tenant application design. This may include learning about Azure.

I know this sounds like a lot, but you're changing EVERYTHING. Language, tools, platform. Keep in mind that the VFP way of doing things doesn't work here. You may have to relearn application architecture along the way.

Craig Berntson
MCSD, Visual C# MVP,
 
Can my time be better spent elsewhere?

Well, ralaxing in the sun and enjoying a cold one on a beach somewhere (maybe with a friend?) comes to mind.
Oh, you must have been referring to WORK (darn it!)

Craig's 'road map' is a good and realistic one.

As he correctly says: you're changing EVERYTHING. Language, tools, platform. Keep in mind that the VFP way of doing things doesn't work here. You may have to relearn application architecture along the way.

Quit trying to think that you can do/learn EVERYTHING at the same time.
Tackle ONE SINGLE THING at a time and work with it all the way through to an acceptable stopping point and then, and only then, move on to the next.

Good Luck,
JRB-Bldr
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top