We build our Sharepoint apps through a combination of SmartParts (as mentioned above) for simpler apps and _Layout applications for more complex stuff.
A _layout application lets you build a traditional ASP.NET web app and pretty much plop it right into Sharepoint. Here's a link to get you started.
http://msdn.microsoft.com/en-us/library/bb418732.aspx