Adobe Flex vs. .NET WinForms

  • Thread starter Thread starter Jules Winfield
  • Start date Start date
J

Jules Winfield

Guys,

I've been designing applications for the financial services industry using
MSFT technologies for many years (Win32 API, MFC, and now .NET WinForms).
All applications are Internet-based, with a "thick client" which makes calls
to my grid of servers via a socket or remoting connection.

Customers are pleased with my work but it seems that over the past twelve
months or so, those same customers have expressed a strong demand to access
my application via a browser. They don't like having to install the .NET
runtime and they don't like having to install my MSI file. Banks and large
brokerage firms in particular are wary about installing MSI files [for
obvious and legitimate reasons]. They want browser-based access. I can rely
upon Windows as the customers' OS, but not necessarily an Internet Explorer
browser. Firefox use is common.

I've never been a huge fan a developing browser-based applications,
primarily due to my hatred of JScript. I don't mind using JScript in small
doses to connect major elements on a web page but the idea of using it as my
main client-side programming language is not appealing at all.
Unfortunately, given that AJAX seems to be at the forefront of web
development technology these days, and given that the 'J' in 'AJAX' stands
for JScript, I feel as though I'm running out of options.

....but after doing some research, I ran across a technology by Adobe called
Flex. I ran some of the demo apps and was completely blown away! They have a
very modern look and they are as responsive as desktop apps. Have any of you
made the transition from WinForms to Flex? What are the pros and cons? I get
the impression that the Flex user interfaces are created using a language
called ActionScript. What are your thoughts on this language?

Recall that all of my server side logic is C# (.NET) based and can be
accessed via HTTP remoting, sockets, etc. What mechanism does a Flex
application use to retrieve information from the server?

In the C#/WinForms world, I can purchase components like grids, charts, and
fancy navigational tools from third party component vendors. Is the same
thing true in the Flex world?

Any information is appreciated.

Thanks,

Jules Winfield
 
I'd look at WPF in the browser in next generation .NET
in 3.0 before making a huge leap.

If I'm not mistaken, doesn't Flex require the Flash plugin
to run ActionScript? So, you are running ActiveX
or Java in the browser anyway.

There is nothing you can't "really" do with AJAX that
you could do with Flex. Running a windows app is
great for when you need to run disconnected
"at some time" or when you need access to the file
system. Do they need to work offline say on
an airplane or some place where network
activity is unavailable or prohibited.

It won't be long and MS will be mandating upgrades
to include the .NET Framework as part of windows
updates. Vista has .net 2.0 shipped with it I believe.

So, your users could typically just download a zipped
up file and run the exe.

--
Robbe Morris
EggHeadCafe.com
http://www.eggheadcafe.com/articles/adonet_source_code_generator.asp



Jules Winfield said:
Guys,

I've been designing applications for the financial services industry using
MSFT technologies for many years (Win32 API, MFC, and now .NET WinForms).
All applications are Internet-based, with a "thick client" which makes
calls to my grid of servers via a socket or remoting connection.

Customers are pleased with my work but it seems that over the past twelve
months or so, those same customers have expressed a strong demand to
access my application via a browser. They don't like having to install the
.NET runtime and they don't like having to install my MSI file. Banks and
large brokerage firms in particular are wary about installing MSI files
[for obvious and legitimate reasons]. They want browser-based access. I
can rely upon Windows as the customers' OS, but not necessarily an
Internet Explorer browser. Firefox use is common.

I've never been a huge fan a developing browser-based applications,
primarily due to my hatred of JScript. I don't mind using JScript in small
doses to connect major elements on a web page but the idea of using it as
my main client-side programming language is not appealing at all.
Unfortunately, given that AJAX seems to be at the forefront of web
development technology these days, and given that the 'J' in 'AJAX' stands
for JScript, I feel as though I'm running out of options.

...but after doing some research, I ran across a technology by Adobe
called Flex. I ran some of the demo apps and was completely blown away!
They have a very modern look and they are as responsive as desktop apps.
Have any of you made the transition from WinForms to Flex? What are the
pros and cons? I get the impression that the Flex user interfaces are
created using a language called ActionScript. What are your thoughts on
this language?

Recall that all of my server side logic is C# (.NET) based and can be
accessed via HTTP remoting, sockets, etc. What mechanism does a Flex
application use to retrieve information from the server?

In the C#/WinForms world, I can purchase components like grids, charts,
and fancy navigational tools from third party component vendors. Is the
same thing true in the Flex world?

Any information is appreciated.

Thanks,

Jules Winfield
 
I am not much aware of .netWinForms but I feel developing a web based
application using Flex is one of the best options available now. Flex
has its own pro's n cons. let me put my thoughts below your
comments.....Flex is based on a xml type language called MXML and it
also uses ActionScript as and when re


Guys,

I've been designing applications for the financial services industry using
MSFT technologies for many years (Win32 API, MFC, and now .NET WinForms).
All applications are Internet-based, with a "thick client" which makes calls
to my grid of servers via a socket or remoting connection.

Flex can communicate with remote servers using HTTPService and its
pretty easy to do that.
Customers are pleased with my work but it seems that over the past twelve
months or so, those same customers have expressed a strong demand to access
my application via a browser. They don't like having to install the .NET
runtime and they don't like having to install my MSI file. Banks and large
brokerage firms in particular are wary about installing MSI files [for
obvious and legitimate reasons]. They want browser-based access. I can rely
upon Windows as the customers' OS, but not necessarily an Internet Explorer
browser. Firefox use is common.

Flex applicatiosn need Flash Player 9 and above to be installed on the
client machines for it to run. If Flash Player 9 is installed, it can
seemlessly run in any browsers on any OS that supports Flash Player
9 .Commonly supported OS and browsers are:- Windows, Mac OS X, Linux.
Then IE, Firefox, Opera, Safari etc...

I've never been a huge fan a developing browser-based applications,
primarily due to my hatred of JScript. I don't mind using JScript in small
doses to connect major elements on a web page but the idea of using it as my
main client-side programming language is not appealing at all.
Unfortunately, given that AJAX seems to be at the forefront of web
development technology these days, and given that the 'J' in 'AJAX' stands
for JScript, I feel as though I'm running out of options.

You may not encounter JScirpt but you will have to use MXML and
ActionScript to get most of your job done. You can also use CSS to
glorify your app. MXML is kind of XML based language.
...but after doing some research, I ran across a technology by Adobe called
Flex. I ran some of the demo apps and was completely blown away! They have a
very modern look and they are as responsive as desktop apps. Have any of you
made the transition from WinForms to Flex? What are the pros and cons? I get
the impression that the Flex user interfaces are created using a language
called ActionScript. What are your thoughts on this language?

Viewing Flex demo can make any one go crazy about Flex. I recommend
you to go thru some of cool n awesome demo of flex at
http://www.quietlyscheming.com/blog/

Recall that all of my server side logic is C# (.NET) based and can be
accessed via HTTP remoting, sockets, etc. What mechanism does a Flex
application use to retrieve information from the server?

You can retain your server-side logic. You can request an HTTPService
to access your server-side logics. no worries here.
In the C#/WinForms world, I can purchase components like grids, charts, and
fancy navigational tools from third party component vendors. Is the same
thing true in the Flex world?

Things that you may need to purchase for flex development is
1. Adobe Flex Builder - the default IDE used to develop flex
applications.
2. Flex Charting SDK - An SDK package that will make creating fancy n
interesting charts quite easier. (check charting demos at
http://www.quietlyscheming.com/blog/)
3. Lots of custom components are available for free as well as for
some money. Most of the commonly used components comes free with Flex
SDK.


If you are an expert coder, you can skip Flex Builder IDE and code
even in your notepad and compile it using the freely available Flex
SDK.

One of the advantages of Flex is you can convert your Flex web based
applications to Apollo (now Adobe AIR) desktop based application with
minimal changes. ( Oh yeah you need Adobe Apollo runtime to be
installed on the client machine for this.)

And Finally WELCOME TO THE WONDERFUL WORLD OF FLEX.

regards,
-Anish
 
Thanks, Anish, for the thoughtful reply. I'll investigate the web site to
which you referred. I'd like to ask a followup question to one of the points
you rasied:
You may not encounter JScirpt but you will have to use MXML and
ActionScript to get most of your job done. You can also use CSS to
glorify your app. MXML is kind of XML based language.

You mentioned CSS. So it sounds like FlexBuilder not only allows you to
build the dynamic application(s) that are built into a web page, but it also
allows you to build the web page itself. So would I use DreamWeaver to build
the site and FlexBuilder to build the embedded applications, or would I use
FlexBuilder for both the site (HTML and CSS) and the embedded applications?

Thanks,

Jules
 
...but after doing some research, I ran across a technology by Adobe called
Flex. I ran some of the demo apps and was completely blown away! They have a
very modern look and they are as responsive as desktop apps. Have any of you
made the transition from WinForms to Flex? What are the pros and cons? I get
the impression that the Flex user interfaces are created using a language
called ActionScript. What are your thoughts on this language?

I haven't any experience in either AJAX or Flex application so I won't be
able to give you definitive advices on either but I've got a few general
thoughts about that. Just like you, I dislike web browser based application
both as an end-user and as a developer point of view. I have been
unfortunate enough to have to do some simple Flash developement with
ActionScript and integrate that into a .NET application and, boy, that was
painful... But I'm sure that Flex being specifically targeted as developing
application (as oposed to Flash animations), it is perfectly usable by
"traditional" software developers without too much pain.

If I had to switch from tradtional desktop application development to
browser based application development using either AJAX or Flex, I would be
extremely careful before taking the plunge and choosing Flex in favor of
AJAX for a number of reasons:

- Flex applications are nothing else than Flash files. This means that by
choosing Flex, you are tying yourself to a proprietary format, runtime and
environment. Of course, it is unlikely that a company like Adobe will
collapse in the near future or that they'll pull the plug on Flash. AJAX on
the other side is based on (now) standards and is widely supported by all
the major players in the industry.

- Flex requires Flash 9 to be installed on the client machine while AJAX
applications require nothing but a resonably recent web browser. This might
or might not be an issue. On the other side, AJAX probably requires a lot
more testing and tweaking to make sure that the application works fine in
most browser while Flex applications should work the same in every browser
as they run on top of the Flash runtime.

- Support: with the explosion of the AJAX buzz and number of AJAX based
application, the amount of available books and online resources (web sites,
discussion forums...) dedicated to AJAX development is almost limitless.
What about Flex?

- Development tools: with AJAX being well on its way of becoming the next
main development platform after Windows, there are loads of tools and
environment developed by many different companies to make development
easier. And this is probably just the beginning. With Flex, you'll probably
always be stuck with what Adobe has to offer.

- Whenever you'll need to hire a developer or a consultant to work on your
applications, how easy will it be find a suitable candidate? With ASP .NET
and AJAX it should be reasonably easy these days and in the future to find
good developers with all the required expertise and experience. I have my
doubts on the Flex side. On top of that, I guess that a number of Flex
developers are former Flash designers who are great at designing
fancy-looking UIs but have little to no experience and background knowledge
in developing robust and secure business applications. Also, if you choose
Flex and need to find somebody able to work on both the front-end and
back-end of your system, you'll need to find somebody with expertise in
both Flex and .NET. I suppose these kind of people are quite thin on the
ground.

- Of course, given the type of applications you're developing, I suppose
that security is a paramount in every aspect of your work. I can't comment
on this but obviously what each framework offers in terms of security
features would be an important parameter.

These are just some random thought, I probably forgot the most important
ones but what's for sure is that the look & feel or either Flex or AJAX
applications is definitely not the only or even the most important point to
take into account here.
 
Hi Mehdi,

Thanks so much for the comments. They are much appreciated.

It's a very tough decision for me. I wish I could stick with the
traditional Windows desktop model as I highly favor mature technologies over
the "bleeding edge" stuff like Flex or Silverlight. This isn't to say that
competing technologies like AJAX aren't mature; JScript and DHTML have
obviously been around for many years. Perhaps it's just my perspective
coming from a Windows application development background, but AJAX seems to
have a certain "hack" feel to it. I can't quite put my finger on it but
using AJAX to design complex applications gives me the distinct feeling that
I'm torturing older technologies into doing something that they weren't
really designed to do.

Sure, we can point to large companies like Google and Microsoft that
have created absolutely incredible AJAX-based solutions that meet or exceed
their desktop counterparts -- and don't get me wrong, I'm absolutely blown
away by what they've done. But these large companies have access to hundreds
of developers and QA testers to investigate and iron out all of the various
browser-specific quirks and provide a consistent user experience. I don't
have that; All I have is myself (the main developer with a C#/C++
background) and a couple of really good designers. I think Flex is a better
fit for my specific situation.

All things considered though, I'm still planning to heed your advice.
I'll play it safe and weight the pros and cons. I'll buy some books on Flex,
train myself on the technology, and then reevaluate whether or not the
project is feasible in a Flex environment. Time will tell. If Flex isn't
suitable and AJAX is my only alternative, it's probably time for me to
retire. :)

Wish me luck!

Jules
 
have that; All I have is myself (the main developer with a C#/C++
background) and a couple of really good designers. I think Flex is a better
fit for my specific situation.

You mentioned Silverlight earlier, if you use that, you can program in
C#, much like you do now and it supports IE, Firefox, and Safari on
Mac. Consider that alternative.
 
You mentioned Silverlight earlier, if you use that, you can program in
C#, much like you do now and it supports IE, Firefox, and Safari on
Mac. Consider that alternative.

I'm keeping a close eye on Silverlight too. I was a bit turned off when I
read that there are no built in controls (i.e. labels, text boxes, etc.),
but it turned out that the reason for this is that Silverlight is still in
"alpha" stage. It's not ready yet. Do you happen to know anything about the
Silverlight release timeline?

Thanks for reminding me though. I'll investigate a bit further.
 
You mentioned CSS. So it sounds like FlexBuilder not only allows you to
build the dynamic application(s) that are built into a web page, but it
also
allows you to build the web page itself. So would I use DreamWeaver to
build
the site and FlexBuilder to build the embedded applications, or would I use
FlexBuilder for both the site (HTML and CSS) and the embedded applications?

No, FlexBuilder does not edit html.
FlexBuilder is just the Flex IDE, based on Eclipse.
A bit slow, not fancy wizards, ok UI designer.
But the debugger part is worth it.

BTW, why don't you just give it a try?
Version 3 beta is available at the Adobe labs:
http://labs.adobe.com/technologies/flex/
 
Thanks, Anish, for the thoughtful reply. I'll investigate the web site to
which you referred. I'd like to ask a followup question to one of the points
you rasied:


You mentioned CSS. So it sounds like FlexBuilder not only allows you to
build the dynamic application(s) that are built into a web page, but it also
allows you to build the web page itself. So would I use DreamWeaver to build
the site and FlexBuilder to build the embedded applications, or would I use
FlexBuilder for both the site (HTML and CSS) and the embedded applications?

Thanks,

Jules

The output you get from a Flex is a .swf flash file. Generally its a
trend that people use the .swf file alone and bare little HTML just to
embed that .swf . Infact you can check most of the flex demo's are
entirely of flash (right click anywhere on the page and you can see
its flash).

But that said, its not a constrain that you should use .swf only. We
can take that .swf output and just embed into out existing HTML code
using the <object> tag just as we embed any .swf files. So you can
build most of your app using dreamweaver and embed the .swf file
whereever its required.( But here again you can do all the stuff you
do in dreamweaver in flex too)

regards,
-Anish
 
I haven't any experience in either AJAX or Flex application so I won't be
able to give you definitive advices on either but I've got a few general
thoughts about that. Just like you, I dislike web browser based application
both as an end-user and as a developer point of view. I have been
unfortunate enough to have to do some simple Flash developement with
ActionScript and integrate that into a .NET application and, boy, that was
painful... But I'm sure that Flex being specifically targeted as developing
application (as oposed to Flash animations), it is perfectly usable by
"traditional" software developers without too much pain.
Yes I agree. its lots more easier to develop web based applications
using Flex.
If I had to switch from tradtional desktop application development to
browser based application development using either AJAX or Flex, I would be
extremely careful before taking the plunge and choosing Flex in favor of
AJAX for a number of reasons:

- Flex applications are nothing else than Flash files. This means that by
choosing Flex, you are tying yourself to a proprietary format, runtime and
environment. Of course, it is unlikely that a company like Adobe will
collapse in the near future or that they'll pull the plug on Flash. AJAX on
the other side is based on (now) standards and is widely supported by all
the major players in the industry.

- Flex requires Flash 9 to be installed on the client machine while AJAX
applications require nothing but a resonably recent web browser. This might
or might not be an issue. On the other side, AJAX probably requires a lot
more testing and tweaking to make sure that the application works fine in
most browser while Flex applications should work the same in every browser
as they run on top of the Flash runtime.

AJAX based apps require lots of testing n tweaks before we can make
sure it runs as expected on all web browsers. With flex we have the
luxury that we can develop for one web browser and be sure that it
runs exactly the same way on other browsers too provided they have
flash player 9 or above ;-)

- Support: with the explosion of the AJAX buzz and number of AJAX based
application, the amount of available books and online resources (web sites,
discussion forums...) dedicated to AJAX development is almost limitless.
What about Flex?
Even I feel there arn't as much supporting sites for Flex when
compared to AJAX. but definetly Flex has some good books and good
start up tutorials. TotalTraining has some nice video tutorials on
flex. http://www.totaltraining.com/prod/adobe/flex2_ria.asp



- Development tools: with AJAX being well on its way of becoming the next
main development platform after Windows, there are loads of tools and
environment developed by many different companies to make development
easier. And this is probably just the beginning. With Flex, you'll probably
always be stuck with what Adobe has to offer.

The chances of being struck with Adobe is more, but that said now we
can expect more as Flex is open sourced (http://www.adobe.com/go/
opensourceflex)

- Whenever you'll need to hire a developer or a consultant to work on your
applications, how easy will it be find a suitable candidate? With ASP .NET
and AJAX it should be reasonably easy these days and in the future to find
good developers with all the required expertise and experience. I have my
doubts on the Flex side. On top of that, I guess that a number of Flex
developers are former Flash designers who are great at designing
fancy-looking UIs but have little to no experience and background knowledge
in developing robust and secure business applications. Also, if you choose
Flex and need to find somebody able to work on both the front-end and
back-end of your system, you'll need to find somebody with expertise in
both Flex and .NET. I suppose these kind of people are quite thin on the
ground.

Getting a Flex developer is not an easy task. May be Flex is quite new
and it still needs to generate lots of enthu for developers to begin
learning it.
- Of course, given the type of applications you're developing, I suppose
that security is a paramount in every aspect of your work. I can't comment
on this but obviously what each framework offers in terms of security
features would be an important parameter.

I feel Adobe has taken security in consideration. But again it depands
on what kind of applications we are developing.
These are just some random thought, I probably forgot the most important
ones but what's for sure is that the look & feel or either Flex or AJAX
applications is definitely not the only or even the most important point to
take into account here.


Open Lazlo :- This is one of the competing technologies with Flex and
open Lazlo is open source. But i felt its not quite easy to develop
apps using Open lazlo. It lacked Flex Builder kind of IDE
http://www.openlaszlo.org/

Hope all this thoughts will help you decide the best.

regards,
-Anish
 
Yes I agree. its lots more easier to develop web based applications
usingFlex.






AJAX based apps require lots of testing n tweaks before we can make
sure it runs as expected on all web browsers. Withflexwe have the
luxury that we can develop for one web browser and be sure that it
runs exactly the same way on other browsers too provided they have
flash player 9 or above ;-)


Even I feel there arn't as much supporting sites forFlexwhen
compared to AJAX. but definetlyFlexhas somegoodbooks andgood
start up tutorials. TotalTraining has some nice video tutorials onflex.http://www.totaltraining.com/prod/adobe/flex2_ria.asp


The chances of being struck withAdobeis more, but that said now we
can expect more asFlexis open sourced (http://www.adobe.com/go/
opensourceflex)




Getting aFlexdeveloper is not an easy task. May beFlexis quite new
and it still needs to generate lots of enthu for developers to begin
learning it.


I feelAdobehas taken security in consideration. But again it depands
on what kind of applications we are developing.
Jules,

I am currently considering investing into Flex also pretty much for
the same reasons. ActionScript in its third generation is a great
language now. It pretty much there on the OOP side of things so as a
C#/C++ developer the concepts will be native to you and it will just
be a case of picking up the namespaces (oops I mean packages as they
are called in AS).

Adobe have built a great framework the only thing I am battling is the
data binding options available to you. Web Services are pretty slow
and if you are offering the user a ultra smooth and fast UI coupled
with slow data connectivity I am not sure how about the combo. The
question for me is can you really develop data centric apps with this
amazing technology without the frint end user being faced with an hour
glass every five minutes as Flex battles to suck data out of slow
responding web services.

Flash Remoting is a solution to this problem but it is also an
expensive one that I am told often loses in the cost vs benefit sum
up.

You should check out WebOrb as it delivers native object from .NET
directly to Flex without having to use WS. I am still getting my head
around it so you should go check it out if you haven't already.

http://www.themidnightcoders.com/weborb/

Have fun. Its exciting stuff especially when you can easily port your
apps to Adobe Air (Apollo). Try porting your winforms to ASP.NET that
easily.

Shion
 
Back
Top