What are some things Mono is not a good fit for? - asp.net

I've started your typical web project from scratch using the Mono platform. You know, web services, a UI, MySQL database, all that. I've heard around the net that it's not a picture-perfect implementation of the .Net platform, but so far I can't find anything it's not good at. I see the odd "Not Implemented" pop up in intellesense, but haven't run into any snags or dead ends.
Have you hit a brick wall with a .Net feature that's not implemented in Mono?

From my understanding, the guys working on Mono have pretty much feature completed their version of ASP.NET 2.0. Now I know they have been working on getting the .NET 3.5 things like LINQ and such implimented, but I'm not too sure how far they've gotten with that. I do know that working the desktop has been a little more difficult and they've been working to get a few of the desktop specific namespaces worked out like System.Windows.Forms.
Here is an article that dives a little bit deeper into the whole Mono setup. It's a little old, but has a lot of code and descriptions to digest.
Good luck, and hope Mono works out for your project.

License is a problem, noncompacting GC is another problem, there is no WPF, WF, Entity Framework, has only basic WCF, MonoDevelop has a long way to race with Eclipse/VS.Net, mod_mono isn't stable or perfect as tomcat/IIS, I couldn't find any high traffic site using it...but, You probably will not face with a serious problem, if your project isn't enterprise level. C# is probably the best architected language ever and evolving fast. .Net framework is far better than jdk in my opinion and mono people working hard, but there are other problems as I said; another choice is Java. Java has the mature / rack-solid state of art projects like Terracotta, Hibernate (ported to .net), Ehcache, Compass,... but some people say that Sun is out of money and Java isn't evolving for years (as a language) so began to die,...
I think the most important thing is finishing the job done right and on time. Select the technology which you know best and like most and don't waste your time by looking back. It'll be not a problem until your project grows too much.
Cheers,

Related

It is okay to migrate to Asp.NET 4.0 now?

Okay today, as most of you noticed Framework 4.0 has been released. I've been working on a project which is being built on framework 3.5. Since I want to use dynamic keyword and most of the asp.net features like Tableless Menu Control, ClientIDMode and clean web.config etc. I am kinda urging to migrate the unfinished project to 4.0 but I am little hesitating about that.Some times I think it is way better to wait for SP1.
So what do you think about it? You guys will migrate to unfinished projects or will still hang out with 3.5 for a while.
Thanks.
The .Net 4.0 runtime environment has been out for a while (mind you not RTM, but RC1 and so forth). A lot of people have tested it and I would guess that almost all of the bugs have been shaken out. There should be no problem switching at this point. They have introduced a number of items that improve .Net. Are they necessary, no, but they can make programming in .Net easier.
You can always download 4.0 locally and test it out on your project. Worse comes to worse, the project blows up and you reload it from your source control system.
What you should be aware of is that there are breaking changes in both C# and VB.Net in 4.0 runtime environment. You'll need to watch out for those.
The following probably applies to most framework-base development.
Do the new features save more time than fixing the old things the upgrade breaks?
If you're going to waste lots of time making old things work, perhaps you're better off just to sit it out on 3.x and port to 4.x at a later phase.
If you really need features from 4.0 and would have to spend time implementing them yourself, perhaps it's a net time saving.
Can you support this version of the framework? (ie can your server people handle the upgrades and monitor things okay?)
If your server bods can't make this work in the field, give up now. I don't know your organisational structure or who runs your servers but I know some companies have a pretty thorough testing regime they'll put software through before allowing it. As a brand new version, they might be weary.
And let's be frank, just because something goes through several pre-release versions, they don't catch every bug because they're rarely used in production scenarios. You know the drill.
And if installing 4.0 on the server breaks old things, you might be waiting a long time.
Is your project's launch likely going to be after the first round of bug fixes?
If you're developing this for 3+ months away, you've probably got enough time to sort the platform issues, fix the code issues and get framework bugs reported with the (blind) hope that they fix them or you can work around them safely.
If you're launching tomorrow, it's not enough time to test it.
I will only upgrade when there is a need to do it. For example I have one application that must use features delivered in .Net Framework 4. So that application will get upgraded ASAP.
I have another application that is 3.5 with no driving need to upgrade at this time. That one will get upgraded when time and budget allows.

Quick to learn ORM for .NET 2.0

I want to throw together a .net website as an interface to a subsystem I manage.
I'm planning to use ASP.net (on .net 2.0) because this is the shop's standard.
I would like to use an ORM because I was playing with Django a little bit ago and realize the time saver and code simplifier it was. I realize I may not get the time saving aspect because of the setup but I think it should make maintenance easier.
Can someone recommend a stable, very easy to learn/setup ORM product that works with ASP.NET 2.0. I prefer open source, but as long as the product is free it's fine.
Because learning something is dependent on the learner I want to share that I'm an experienced developer. I use a lot of languages and generally learn quickly with good material.
I'd recommend Castle Active Record.
It's built ontop of NHibernate, which is a pretty popular one, but Castle's AR is faster to get off the ground with in my opinion.
I used it on my last ASP.NET project so can vouch for usefulness there. :)
Edit - Here's a quick link to "Getting started".
I recommend NHibernate. It is full featured, very mature and (in my experience) quite stable. Take a look at the summer of nhibernate screencasts (also free) and you'll have enough knowledge to get up and running in no time!

IronPython and ASP.NET: ready for prime time?

Has anyone actually built and deployed a website with IronPython and ASP.NET. What were your experiences and is the combination ready for prime-time?
I asked this question just over a year ago. And the consensus seemed to be "not really".
What's the status now?
I haven't actually ever tried it, however I do know there's a library available which allows you to write inline python in your ASP.NET.
It would seem to me that this is very usable in a production scenario.
Gestalt
I believe that if you want to do anthing useful/em> with .NET + IronPython, you need better support for the dynamicy of Microsoft's CLR environment, and you'll need VS2010 for that.
You may have better luck just building a strait up python app. Why bother using ASP.NET? Are you integrating with another codebase?
I don't believe that ASP.NET was ever ready for prime time. The framework is contrived and an awful fit for designing web applications. It was made for VB6 programmers that only know how to drag controls onto a design surface.
Most decent(and pretty much all bad) applications written on ASP.NET don't use it as it was designed, and if that's the case then what's the point.

What are the secret productivity tips to be awesome at ASP.Net, Visual Studio 2008, and Sql Server 2005

Recently I witnessed an acquaintance developing an ASP.Net site with SQL Server 2005 and Visual Studio 2008, and I was blown away by his level of productivity.
I mainly develop servers and sometimes Windows Forms applications. I only do a ASP.Net project every once in a while. So, when one comes up, there's usually a little bit of ramp up time to get my productivity back.
This guy, he was developing complicated .aspx and .ascx pages with seemingly little effort.
How can I become that guy? What are the secrets that I should know?
Experience is the best productivity boost I could ever hope for.
To me, "secret" is a word used to sell books more than anything else. Nothing is really a secret when it comes to software development techniques and patterns.
I think the key to being highly productive is to gain a very solid understanding of software development patterns, and to be reasonably proficient with your technology of choice.
There are no real secrets (well, aside from that one I won't tell you) but, basically, the trick is to use things that do your work for you.
Unit testing
ORMs
Deployment tools
Build tools
etc. There are many many others. But generally, try and avoid doing work, and focus only on actual 'application-specific' things.
At least that's what I do.
A note of advice: Asp.net has everything you need out of the box to develop small website. You will be able to do practically everything you want to do. Practically. And then you start hitting the virtual ceiling and it takes considerably longer to implement what you thought would be a simple change. Basicly, asp.net is a leaky abstraction (interesting article) when you start to do medium and larger websites.
Anyway, back to your actual question, to keep the productivity level high, avoid the AJAX.net stuff. Use jquery, dojo any other library instead.

When should new .NET projects be designed for .NET 4 Framework

I am preparing to start on a new short-term contract (1-2 months) that involves replacing an Access application by moving it to ASP.NET and SQL Server.
I am only responsible for the ASP part and connecting it to the database.
The only requirement is that whatever technologies I use be relatively well-known in the area, so that if they need to have someone else work on it, it isn't specialized knowledge.
So, I could do this in Rails or ASP.NET, but, when should the development be aiming for .NET 4 Framework, as there are many changes coming out that may be advantageous to use.
Or, even though it may be useful, when is it better to just ignore new features and stay on an older version of .NET?
I am assuming that hardware isn't the limitation, as many computers won't be able to run .NET 4 Framework, but that would be an issue for a hosting company, as they can find a hosting company to support whichever framework the application is designed for. If Rails makes the most sense, as their hope is to have the application written quickly, but have it reliable, then again, the hosting company would need to support it, or they use a different one.
This company hasn't used a hosting company, they need to find one, so there isn't a relationship that could be an issue.
UPDATE: Part of my concern is that initially the application will not require javascript, but phase 2 will be to make it more interactive, as some clients won't be allowed to have javascript on their computers. In order to limit how much javascript must be known by a developer there are frameworks that will adapt to browsers and situations fairly well, which is why I am also thinking about RoR and the fact that there appears to be changes coming out in .NET 4 that may help with this.
As a general rule of thumb, I wait one year before building sites in a new framework unless the client specifically asks for the newest technology. This has worked out very well for me. The advantages are:
The technology is much more stable (hotfixes, service packs, etc.)
Common complaints about missing functionality are usually resolved
Hosting companies, support communities and corporate IT departments have had time to get used to the technology, find out more about it, play around with it and have it mature within their organization
Unless there is specific need for new functionality introduced by .Net 4, there is no point in subjecting your clients to the immediate problems with an initial release, or making it more difficult for them to find hosting. You should either investigate all of this up-front, or use .Net 3.5 in the meantime.
The only requirement is that whatever
technologies I use that it be
relatively well-known in the area, so
that if they need to have someone else
work on it, it isn't specialized
knowledge.
I would have thought that requirement was enough not to develop this project on .NET 4.0 - it takes time for a new framework version to filter down into the market, and it will be a while yet before there are a lot of developers around with .NET 4.0 experience.
Also, you would be essentially developing on top of a BETA product - while I'm sure most of the features will remain unbroken from BETA -> RTM, there is always a risk that something will break or not work like it did in BETA, so why risk this on a commercial project?
I wouldn't target .NET 4.0 yet on a commercial project unless there was a specific reason for doing so, and even then you would have to have buy-in from the client, ie "I can do this much more quickly and with less effort if we use the current beta version X rather than established, stable version Y" - good luck with that.
I worked on a commercial project that used the CTP version of LINQ to SQL - then when we went to VS2008 / 3.5, suddenly everything changed and we had to make a lot of changes just to get LINQ to SQL working again.
Stick with 3.5 - it's easier for hosting and getting developers.
Just a couple of thoughts, I wouldn't even think about creating an application for production use in .NET 4/ASP.NET 4 until:
There is a release candidate. It's
not the first time I've seen
features in beta's not make it to
RC/RTM.
Microsoft have permitted development and deployment
of production applications by way of a 'Go
Live' license.
There are some hosters out in the market such as OrcsWeb who are participating in public beta testing, but they aren't intended for production use.
I'd run with the .NET 3.5/ASP.NET 2.0 or MVC bits for now. Better safe than sorry.
Generally speaking it's going to be easier finding hosting for a Rails app. If you want to run .net 4.0 you're probably going to have to run a VPS or dedicated machine. However if you're bailing after the application is finished and assuming your client is in Knoxville, they're going to have a tougher time finding a Rails developer to maintain the application.
I think the bigger question is your role. They're looking to you to solve this problem for them. Are you productive in both technologies? How about getting a Windows server up and running? A Linux server? How's your SQL Server vs MySql? I'd guess that you're probably stronger on one stack vs the other - for a contract that short I wouldn't want to be doing a lot of experimental development.
i wait until the OS that everyone will be using has it.
Just last month i took a dependancy on GDI+, which first shipped with Windows XP.

Resources