Question

I am a desktop developer moving to web development. The guys who I am working with use procedural PHP, and coming from an event driven, objectified perspective (using WPF and C#.Net) I am completely lost in what seems like the Wild West of development.

Are there any language/framework combinations that allow some semblance of state between the client and server and 'persists' the objects? Is there a way to create a definition of an object that is synonymous between the client and the server?

Is there anything that incorporates testing and UI components as well?

I realize this is a somewhat broad and biased question, however it is one that I have not found any definitive answers for. Any advice and guidance would be thoroughly appreciated!

Was it helpful?

Solution

Your best bet is to first learn JavaScript without any frameworks. It works both in the client and server side (as Node.js). JavaScript is Event Driven by itself so you won't face much issue here.

Since you are coming from a C# background and your team uses PHP, I would highly recommend the Dojo Framework. It works both on the client and server side or it can work on the client side and has integration with Zend PHP on the server side.

There are Widgets in Dojo inside the Dijit package, which are basically classes used for implementing UI (Controls in the C# World). Integrating with Zend has some interesting perks includidng the persistent state you are talking about.

Otherwise you could go for vanilla frameworks like jQuery and sync data with your PHP server using AJAX Calls.

OTHER TIPS

There are a very wide variety of web frameworks in different languages, and in considering them it is always worth bearing in mind that in reality there is only a single type of event in server-side web development (the browser requested to load some data).

That said, there are some frameworks that attempt to emulate a system where the server responds to events occurring on client side objects; ASP.net is probably the best known of these.

A lot of developers are of the opinion that they're more trouble than they're worth, however. They abstract away too much of the detail of how the web works, and take away too much control.

Most modern, large web sites are developed using the MVC pattern. As a C# developer you may want to look into ASP.net MVC; other popular implementations are ruby on rails and Spring MVC for Java.

I see you need a solution for both the UI and the server. As far as event driven web development is concerned, you may try the EXTJS by Sencha. It a javascript based framework,standardized and one of the most preferred.

The best feature,which is the best according to me, is it can communicate with your server in variety of formats like the widely used XML and JSON. Considering this, it frees you from worrying about your compatibility with the server implementation. You may write your server in any language and communicate to the client via XML or JSON.

It provides APIs for most of the events on the web, and allows you to implement your own. It is based on OOP, so your inheritance works here too :).It is has support for the MVC pattern, which will be bit difficult to digest in the beginning , as it is a common perception MVC - on the client - really? But have faith once you get the hold of it, its a smooth ride.

Almost all events have listeners(AJAX implementation). The UI look and feel is brilliant, and you get the feature of in built themes. In addition to this you have community support, dedicated learning material and API documentation, huge number of examples and even support for mobile devices.

Having said that, it carries various licences, it does have a GPL3 as well , but with certain terms.

For your ease I am posting the link to both the framework as well as the licensing terms

Framework: http://www.sencha.com/products/extjs/

License: http://www.sencha.com/products/extjs/licensing

Licensed under: CC-BY-SA with attribution
scroll top