Develop a line of business application in silverlight 4 - silverlight

Currently as my job profile i am more working on asp .net application but i also wanted to have my hands on silverlight application. so, i just decided to build one silverlight 4 application in my spare time and on weekends.
We are having a team of around 4 people. We also tried for commercial application but as we can only develop it in our available time we can not commit on timeline as well as we people are new to SL, so first we need to learn concept and implement it. (Though we know the concept of binding, commanding,templates etc.)
Now i just thought to work on project like creating a social networking site in SL 4
having facilities like forum, blogs, calander, task, dashboard etc.
We want to use features like .Net RIA Service, Entity Framework, MVVM pattern, SL 4.
Objective here is to learn new concepts as well as to get some good project experince in silverlight.
Now,
what you people suggest is it a good idea ?
If yes then the project selected is correct or you suggest some other project ?
Any pattern or technology related suggestions ?

This is quite a vague set of questions but I'll attempt to give my 2 pennies worth of advice.
As a learning project this is as good an idea as any to get going with. As a commercial idea it probably isn't such a good one due to there not being any niche in your product. It has all already been done, and been done successfully by the likes of Facebook and Twitter. Developing any kind of social media site is incredibly difficult as the market is already fairly saturated. As I said though, as a learning project it's quite nice as you can just borrow concepts and ideas from other sites and you can concentrate on you main goals of gaining knowledge in the various technologies.
Whatever you decide to do I'd say split the project up into much smaller components rather than having the end goal in sight. Try to take more of an agile approach by setting yourself 2-3 week targets. It should help keep the momentum going. My experience is that learning projects tend to die a death as people get bored of the concept and lose motivation to do it. By keeping the tasks small you get to see small results often. This should help keep you motivated as you move from requirement to requirement.

Personally I think setting up personal projects and goals like this are a great way of learning new technologies - good for you!! :-)
From a tooling perspective it sounds like SL4 is an ideal route to follow. This is highly likely to be released in early 2010 and has some awesome new features compared to SL3. Would also recommend using VS2010 and WCF RIA Service too.
From a code sharing POV have you considered hosting your project on Codeplex? This will give you a hosted TFS server to manage your source code in a distributed way. This is bound to save you some big bucks.
As far as document management is concerned Google Docs are certainly worth a look (as is Google Sites as a really easy to set up (albeit simple) project management portal).
Finally, I can't recommend learning SketchFlow highly enough. As a prototyping tool for silverlight it is really, really cool. Take a look at the PDC video for a great kick start on this.
Good luck :-)

Related

Master silverlight application development code, xaml and all

Assume a mechanic wants to start developing in silverlight and has managed to make a few sample childish applications.
What resources would you recommend to make him an expert?
Generally speaking becoming an expert will involve years of training, lots of trial and error, and working on a large-scale applications always helps. For some good resources, you might want to check out things like the Enterprise Library update for Silverlight which contains some good examples of architecture and scenarios you might encounter:
http://www.microsoft.com/download/en/details.aspx?id=7319
Otherwise the Prism framework/guidance from Microsoft Patterns and Practices offers some information and examples on basic scenarios you might run into:
http://compositewpf.codeplex.com/
And lastly, stepping a bit outside of these examples you might want to try a book like Silverlight 4 Business Intelligence Software by Bart Czernicki. It covers a lot of concepts for one type of SL scenario but the scope of the topics and exploration of concepts + framework is quite good:
http://www.amazon.com/Silverlight-4-Business-Intelligence-Software/dp/1430230606/ref=sr_1_1?ie=UTF8&qid=1311760201&sr=8-1
You can also find a slew of experts on places like Twitter, try following someone like #Wynapse who does excellent daily coverage and can help you expand out to other experts in the area.

Is there a path of least resistance that a newcomer to graphics-technology-adoption can take at this point in the .NET graphics world?

For the past 5 months or so, I've spent time learning C# using Andrew Troelsen's book and getting familiar with stuff in the .NET 4 stack... bits of ADO.NET, EF4 and a pinch of WCF to taste.
I'm really interested in graphics development (not for games though), which is why I chose to go the .NET route when I decided choose from either Java or .NET to learn... since I heard about WPF and saw some sexy screenshots and all. I'm even almost done with the 4 WPF chapters in Troelsen's book.
Now, all of a sudden I saw some post on a forum about how "WPF was dead" in the face of something called Silverlight. I searched more and saw all the confusion going on at present... even stuff like "Silverlight is dead too!" wrt HTML5.
From what I gather, we are in a delicate period of time that will eventually decide which technology will stabilize, right?
Even so, as someone new moving into UI & graphics development via .NET, I wish I could get some guidance from people more experienced people. Maybe I'm reading too much? Maybe I have missed some pieces of information? Maybe a path exists that minimizes tears of blood?
In any case, here is a sample vomiting of my thoughts on which I'd appreciate some clarification or assurance or spanking:
My present interest lies in desktop development. But on graduating from college, I wish to market myself as a .NET developer. The industry seems to be drooling for web stuff. Can Silverlight do both equally well? (I see on searches that SL works "out of browser").
I have two fair-sized hobby projects planned that will have hawt UIs with lots of drag n drop, sliding animations etc. These are intended to be desktop apps that will use reflection, database stuff using EF4, networking over LAN, reading-writing of files... does this affect which graphics technology can be used?
At some later point, if I become interested in doing a bit of 3D stuff in .NET, will that affect which technologies can be used?
Or what if I look up to the heavens, stick out my middle finger, and do something crazy like go learn HTML5 even though my knowledge of it can be encapsulated in 2 sentences?
Sorry I seem confused so much, I just want to know if there's a path of least resistance that a newcomer to graphics-technology-adoption can take at this point in the graphics world.
I understand your confusion (having been there myself), but first let me start by saying Silverlight and WPF are not dead yet! And you would not be wasting your time in learning either!
There are quite a few (terrifying) posts to the contrary, but if you keep searching you'll also find those that support WPF/Silverlights extended life in development, one for example is http://www.wpfblogger.com/post/Silverlight-is-not-dead-clarifies-Bob-Muglia.aspx (this is a nice summary of what Bob Muglia said - there's a link to his full statement). Another assurance is that Microsoft has invested quite a bit in WPF themselves in designing VS2010 in it, so its not likely that they're about to give it the boot.
As for your hobbies and projects, if you intend on sticking to desktop clients I recommend WPF of which Silverlight is a subset, so you'll find that the transition isn't anything major on the face of it (there's a few more controls and such in WPF that aren't in silverlight and gives more flexibility for desky stuff [here's an article you can read if interested - http://briannoyes.net/2010/06/01/WPFNdashIrsquomNotDeadYet.aspx ]), this should be able to handle most of your stuff including playing with 3D objects (to create them I'd use something like Blender 3D, its free but the learning curve for a first timer is kinda steep).
Lastly, it probably wouldn't be a bad thing to learn HTML5, but booting out Silverlight to do it probably isn't the way you want to go. There's bound to be ways in which Silverlight will enrich the browsing experience even with pages using HTML5 in the future, so don't kick it all out yet :)
My present interest lies in desktop development. But on graduating from college, I wish to market myself as a .NET developer. The industry seems to be drooling for web stuff. Can Silverlight do both equally well? (I see on searches that SL works "out of browser").
The industry likes the web because deployment is easy and you usually don't have to support users running different versions of your application. Still, are reasons to choose WPF over SL (performance, things not yet implemented in SL). I'd say stick with learning XAML + C#. You'll be able to leverage it for WPF, Silverlight, and Windows Phone programming.
I have two fair-sized hobby projects planned that will have hawt UIs with lots of drag n drop, sliding animations etc. These are intended to be desktop apps that will use reflection, database stuff using EF4, networking over LAN, reading-writing of files... does this affect which graphics technology can be used?
Either way, database access should be done through services (not directly from a WPF app). There will be differences, but they should be mostly similar.
At some laaaater point, if I become interested in doing a bit of 3D stuff in .NET, will that affect which technologies can be used?
Silverlight 5 will have 3D support. Beta should be announced by this year's MIX conference and released by the end of the year. In the meantime, you can check out the WPF 3D API.
Or what if I look up to the heavens, stick out my middle finger, and do something crazy like go learn HTML5 even though my knowledge of it can be encapsulated in 2 sentences?
While SL is nothing like web programming, I think there is an expectation in the market that SL programmers should have a little ASP.NET (Web Forms or MVC) experience too. (Because, hey, you should know how to work with the environment its hosted in.) I think HTML5 is still a ways off since HTML5 applications will require users to have the latest browsers which are just coming out. Still, couldn't hurt to know it :-)
Fear not, WPF and Silverlight is going to be strong in Line of Business applications, there are some serious security features added even in SL5 and it ties in nicely with all the existing Microsoft infrastructure most corporations have.
It's a similar thing to all the bloggers crying the end of Flash after seeing some planned HTML5 features (and yet not even the codec for the video tag is settled), but upgradeable runtimes to support any browser (IE6 corporate market share is still sky high...) and the really nice Microsoft developer stack (VS + Blend) makes these technologies more resilient than people only using cutting edge technology would think.
Having used Flash for years before Silverlight I can tell you that developing custom UI with SL is a really pleasant experience, so if you're less into multimedia and games (which are areas where Flash still has edge), this is the place to be for you.
And there's Windows Phone 7, with the Nokia strategic partnership I doubt no one would want to get anything developed.
These being said, if you have the chance don't be afraid to venture off to learn some completely different programming languages, for me personally learning Ruby on Rails changed the way I look at backend development, and some of these eye opener ways of doing things more efficiently transfer nicely between environments.
WPF and Silverlight are definitely alive and well. Also, don't let people fool you into thinking it has a "steep learning curve" (which is a common myth.) WPF isn't a walk in the park, granted, but it is also not the hardest thing to learn.
I recommend the book "WPF 4 Unleashed" by Adam Nathan.
http://www.amazon.com/WPF-4-Unleashed-Adam-Nathan/dp/0672331195
It will teach you everything you need to get started with WPF (and Siverlight, which is WPF-based.)
Yes, silverlight can do desktop and web environment equally well, and is your best bet right now. As for 3D designs, you might want to learn XNA. Its quite easy to use.

Switching to silverlight for enterprise application?

After 9 month developing an enterprise application using MVC + JQuery our Management and stockholders interesting to convert and switch to silverlight! they think it's more powerful than Ajax, make development speed faster than our current solution, It's Windows and Web and less headache.
Unfortunately, our stockholders dos not know anything about web and stateless state of web application and they always compare with window applications.
But nobody in our team know anything about silverlight. I am not sure that is a good decision. I think we develop as fast as possible. we develop a great framework and code generator for fast develop.
Thanks and sorry for bad English.
Dumping what you have and going for a rebuild mid development is almost always a bad idea.
For a personal project, I did exactly this. It was originally built during the betas of asp.net MVC. I got the app to a stage where it was usable (actually I still use it daily), but it was nowhere near ready for the outside world. And this was the problem; it was going to take an enormous amount of work so that other people could use it...
When Silverlight 3 was announced, I literally grabbed the backend of the app - stuck RIA services in between and had a few screens up and running that day without any prior SL knowledge. I probably could have kept going down this path but something clicked when I started to realise the power of silverlight. The goal posts for my app moved, and I began a SL specific rewrite.
Since then, I've started re-writing about 5 times over. I guess I'm still just learning how to best build an app in SL, having spent the last 12 years or so of my career working on stateless web apps, there was a big mental shift involved.
I'm a much better web developer then I am a silverlight developer, but if it was for a real project (rather then a pet side project) - it would have been shipped and out the door by now.
I'm convinced that SL is the ideal platform for most web applications (as long as it being a plugin isn't going to be any issue).
With that said, shipping is still the most important thing. SL is great, but the learning curve is steep. If you guys are anywhere near completing the app, I'd insist you forge on with mvc and maybe get someone to build a SL branch.
Re-platform an application is always costly, although if you've got your MVC right it should theoretically be easier to replace the "VIEW" part of the application with something else.
As to whether Silverlight offers you more than HTML / JavaScript is down to what you're using it for. If what you are doing is media-related or highly graphical, Silverlight might be a good choice. If your application is like most business apps (i.e. some input fields backed by some read / write to database) Silverlight doesn't really offer any tangible time saving for this kind of operation.
If the web application is public and you care about search engine indexing, semantic HTML offers the best possible option.

Interface Architecture for Silverlight App

I'm getting ready to develop my first Silverlight app. It is going to be primarily used by my church for data input but also will need to generate at least one report, ideally in Excel but XML/XSLT is not outside the realm...
It will be Internet facing and will talk to a SQL Server 2008 db for which I will be creating a web service hosted at the ISP (db is also hosted at the ISP). The clients will be a mix of Windows and Mac.
My question specifically relates to the interface architecture. I know MVVM is big for this right now and I'm comfortable with that. I want to get this up fairly quickly (ie- next 3-4 weeks). I've also seen mention of Prism (Composite Application Guidance) and Caliburn. What are anyone's thoughts on these two? The initial version of the app is not going to be huge so I don't imagine it would be overly difficult to refactor a framework into it at a later date.
You are right, if it's your first development on SL, adding the complexity of MVVM won't help you much.
I think a good approach could be to go for something simple (e.g.: the good old Document/View could be just a good start http://msdn.microsoft.com/en-us/library/4x1xy43a(VS.80).aspx, or just breaking in standard layers, UI / BS / DL).
After that development you will have learnt a lot of good stuff, and then you will be able to throw your app and start new bigger challenges using more advanced architectures (about MVVM, a very good web cast: http://blog.lab49.com/archives/2650 it's WPF based most of the concepts can be ported to SL).
Good luck and enjoy for SL development.
Cheers
Braulio
Start with something you are very comfortable with especially if you need to get this up quickly. Follow good coding standards and should not be a problem to refactor later into other frameworks if you get a bigger team.
This is a useful pdf.
I haven't read it in detail yet myself, but this article looks rather useful:
RIA Architecture with Silverlight in mind

finding a "semi-pro" project for Silverlight, suggestions?

I'd like to get my feet wet in Silverlight. I think all the reading and tutorials in the world don't work nearly as well as a real project. Plus I've done tutorials, read some books, listened to podcasts and so on. I'm ready for the next step. I'm not sure how to make that step though. I'm certainly not ready to put "Silverlight development" on the resumé with any confidence. Some options:
get on elance and make some lowball bids for RIAs, assuming that part of my compensation is the experience
craigslist
find a designer who needs a programmer - already asked all my designer friends ;)
I'd like to find a non-profit ideally, it'd be cool if I felt like I was helping while I was learning. But that seems like a longshot. I'd really want it to be a publicly facing website so I can use it as a bit of a portfolio piece. And I'd be willing to work for free, or a sliding scale sort of fee. I'm not a designer, so I'd need some help in that dept. I've got some experience with that, but it was so long ago and I don't delude myself about my skills.
I've got about 4 yrs experience in ASP.NET, Winforms and C#.
Suggestions for finding this mythical project?
There is no shortage of non-profits who would love to have someone build software for them, and they don't care what technology it is (this is more or less the sentiment of any customer). I found a non-profit that has a technology need and I'm using ASP.NET MVC and Silverlight to fulfill that need, though admittedly with free time at a premium it's not progressing nearly as fast as a "paid" project. So, my advice is to find a non-profit whose mission you believe in and just send them an email. I doubt they'll turn you down.
Alternatively, help me out! :)
My first, and unfinished, project in Silverlight was started in November 2007. I was designing a poll map of the US in which the user could see realtime vote count, hover over a state and get a detailed breakdown. Similar to John King's Magic Map.
My newborn twins were three months old at the time, so I didn't have a chance to finish it but it was great experience. Silverlight is great for very visual applications. Some more ideas:
Anything geographical, like the polling stuff. There is a free XAML USA map available, Google "XAML USA map".
Graphs, charts, etc. There are some third-party controls available for this or you could experiment with rolling your own.
Drag and Drop type interfaces can really pop with Silverlight.
Games! (My personal favorite)
Here are some ideas:
Make a easily-skinnable shopping cart in Silverlight that integrates with an e-commerce back-end system
I'd try to join an existing Silverlight open source project as a contributor like
this Silverlight Ribbon project on CodePlex.

Resources