ASP.NET MVC Development tool - asp.net-mvc

Following on from my previous question, If I am beginning to learn asp.net MVC, will the express edition of visual studio web developer be enough, or should I consider the expensive full version of Visual studio. What are the limitation of such express version I may run into? or am I better using an Expression tool? (or is this something I can progress to later.) Any advice anyone? Thank you.

Re-sharper (everyones favourite add in ;-)) requires the full version of VS. It's worth getting for that reason alone in my view.

One thing that comes to mind is lack of the SQL tools in the express versions, such as the Server Explorer (http://msdn.microsoft.com/en-us/library/cd2cz7yy.aspx). I am not sure if you can effectively do LINQ to SQL or LINQ to Entities without it.
On that note, I strongly encourage the full version of Visual Studio 2008 Professional.
I know that since you are using the express versions, you qualify for the upgrade price for Visual Studio 2008 Professional.
On a side note: the Expression products are more geared for designers, not coders.

Express is definetly a good start, and if you're just learning you shouldn't miss some of the features from the full version too much. For SQL management, Microsoft now offers SQL Management Studio Express as well (along with SQL Server Express, of course).
The major things that I personally miss when I'm using Express rather than a full version are:
Class Diagrams - these are pretty useful when you're starting off a project and want to map out the classes you'll want to create. With a simple MVC application there probably won't be a huge need for them, however.
Attaching to a process for debugging - Express editions include the full debugger, but you can't attach to an already running process. This is particularly useful if you're using NUnit and you run into a problem and want to debug. There's some workarounds, but they aren't particularly elegant or simple.
Integrated testing - I'm actually surprised this wasn't included - Microsoft should realize that getting new developers to learn good habits like Unit Testing should be encouraged.
The Expression suite is targeted towards designers more than developers. I don't think it's a good fit for what you are looking for.
SharpDevelop is another free option. It's good if you find Express lacking, but I personally don't find the experience as "smooth", and it's particularly short on features relating to web development.

"Full versions" of Visual Studio are not free! If you are beginning to learn asp.net MVC, you shoud try Visual Web Developer first. Yes, it does not support integrated testing but you can use any 3d-party tool (xUnit is the best) for testing.

Related

mono or RoR for new application run on linux?

I have little experience with ruby itself. I am going to hire somebody to write a web based application and I wanted it to be written in RoR but I was recommend mono. I guess because they like mono and because they think the RoR is slow.
The whole application would be some kind of social media meta management tool. There will be front end web based part and then back end doing the 'real stuff'.
I have no experience with mono at all and I am not experienced enough to comfortably say that RoR is the best choice.
I understood that if RoR is configured properly it could be pretty fast. I read that RoR has some troubles with scalability. I will start the application small and if it's successful I need to scale it up.
What would you recommend?
in the light of
performance
scalability
easiness to test
easiness to maintain, develop code/project
( I like ruby but I am not going to be the developer myself. I prefer to choose the 'better' option if there is such answer to that question)
please feel free to suggest anything else ...
If you are not going to write it yourself, you may want to go with what the person who will write it is most comfortable with.
Full disclosure: I have developed several sites now using Mono and I love it. I have used Ruby-on-Rails but not for anything nearly as big as what I have done in Mono. Keep that in mind.
Quick answer: In the greater scheme of things, Ruby-on-Rails and ASP.NET MVC have more in common than not. My choice would be ASP.NET MVC on Mono but I doubt you would regret choosing either.
Architecture: If you want one way of doing it out of the box, choose Ruby-on-Rails. If you want to be able to choose what you feel are the best-of-the-best technologies from a range of choices, choose .NET (Mono).
Ruby-on-Rails is more of a turn-key solution in that it provides a standard way of doing pretty much everything you need out of the box. .NET (Mono) offers a lot more power (my opinion let's say) but there are a lot of different pieces to choose from and you have to choose a technology stack yourself. As an example, RoR has a standard way of accessing databases while .NET Mono let/force you to choose from a dozen different ways to do that.
Mono and .NET generally have a little better separation of concerns so the purist in you might like that. If not, you actually find the roll-up-your sleeves and get it done attitude of Ruby more to your liking.
Performance and Scalability: This should clearly go to .NET and Mono. In fact, I believe the fastest way to run Ruby-on-Rails is to use IronRuby to run it on .NET. StackOverflow is written in ASP.NET MVC and, given the amount of traffic, it obviously performs great. Proof is in the pudding. That said, the performance bottleneck will probably not be your choice of framework.
Testing: Old style ASP.NET (now called WebForms) is considered pretty hard to test. The newer ASP.NET MVC was designed to be easy to test and is similar to RoR. One major factor is that in Mono you will probably be using a statically typed language (like C#) while Ruby is of course a dynamically typed language. You have to write more tests in a dynamic language (because the compiler/interpreter will not catch type problems) but it can also be easier to write tests if you are not fighting the compiler. I think it is a matter of taste and style (I like static) but this is a major factor in answering this question.
Of course, since .NET/Mono is a multi-language platform, you could always write your ASP.NET MVC tests in a dynamic language. You could even do it in Ruby (IronRuby). Perhaps that would be the best of both worlds (static checking on your real code and flexible dynamism in your tests). I have considered doing this myself using IronPython for tests.
Maintenance and development: This is a tough one. It depends what you are writing, what third-party libraries you might need, and what tools you are going to use. I would say that RoR is probably the more advanced MVC framework. My own thoughts are that Ruby-on-Rails is probably a shade easier to write but a little bit harder to maintain.
Community: I like the Ruby community more than the .NET one but I think I like the Mono one the best. That makes it a little confusing. The core Mono guys (like Michael Hutchinson that answered here) are simply awesome. I really like MonoDevelop as a tool (IDE) as well. It just keeps getting better and better. Michael, thank you for Git support if you had anything to do with that. :-)
Tools: If you are writing for Mono you can use the whole universe of .NET tools (VisualStudio, ReSharper, Reflector, etc) so that is pretty hard to beat. That is assuming you develop on Windows of course. On Linux or Mac the tool of choice for Mono would be MonoDevelop. It supports version control, a software debugger, and NUnit tests right in the IDE and is completely cross-platform.
It seems like a lot of Ruby folks just use a simple text editor. This may just be because an IDE just does not have as much to offer a dynamic language as it does a static one. Here is a SO question on what people like for Ruby:
What Ruby IDE do you prefer?
EDIT: Just to make things confusing...there is another MVC framework for .NET/Mono that is even more like Ruby-on-Rails; MonoRail even has an implementation of ActiveRecord. MonoRail has actually been around longer than ASP.NET MVC but I would stick with ASP.NET MVC these days as that is where the future lies. ASP.NET MVC is open source by the way and ships with Mono out of the box (the actual Microsoft code).
I can speak more to Rails than Mono. RoR is pretty scalable these days with all of the cloud hosting services available. Web applications query data and render web pages using that data, which really isn't that big of a deal. Most performance issues are caused by database and schema design issues, not the web framework. Typically, database response times dwarf other portions of server processing. RoR is also very easy to test. Testing is a more natural part of development than in other languages that I use. When I started RoR programming I was used to the much more structured world of Java, and the more dynamic Rails won me over for web development.
Firstly, I work on MonoDevelop, a crossplatform IDE for Mono (including ASP.NET & ASP.NET MVC), so feel free to consider my answer biased, but hopefully it will be helpful anyway.
Performance: a decent JIT compiler (Mono) should be much faster than an interpreter (Ruby). But it depends on the programmer's skill too - well-written Ruby could be faster than really badly written C#. The libraries and database and caching mechanisms you use will be a big factor too, but these aren't fundamental to the languages/frameworks.
Scalability: AFAIK there is no magic bullet for web app scalability, and although I don't have practical experience in this field, here's some info I've picked up. It really depends on your database usage, how your session state is stored, and how caching is implemented. This isn't really fundamental to either framework - once you start scaling to multiple machines, you'll probably have many machines/processes for database servers, cache servers, message queues, frontends, servers for static content, etc. Likely only the frontends will be ASP.NET or ROR, and if they're stateless, you can simply clone them and handle the scalability problems on the backend.
Testing: I can't speak for Ruby, but ASP.NET MVC (but not vanilla ASP.NET) was designed to be easily testable using .NET testing tools such as NUnit (Mono's own unit tests use NUnit).
Maintenance and development: Again, I can't really speak for Ruby, but it's pretty much a given that it will be easiest to develop (at least initially) in the language & framework that the developer already has experience with. Also, .NET has some amazing development tools on Windows - Visual Studio, ReSharper, etc. - and there's a huge pool of experienced C# and ASP.NET developers you can hire, though few of them will know Linux/Mono.
Also, StackOverflow uses ASP.NET MVC :)
To introduce a little levity...
How about DOS on Dope: the last MVC web framework you will ever need?
There are of course a dizzying array of choices but another nice alternative is Django.
It is basically Ruby-on-Rails for Python so most of the comparisons of RoR vs. ASP.NET MVC would apply. Depending on what kind of site you are building, the really interesting feature of Django is the automatic admin interface.
If you need to be up and running quickly, I would go for RoR. Scaling rails is becoming easier with time and you have a big range of ruby runtime environments to choose from MRI 1.8, 1.9, REE 1.8, JRuby (run on java VM), Rubinius.
ASP.NET MVC is nice, but I still think it has some way to go before it offers the same speed of development as RoR.

ASP.NET MVC with Postgres; ORM recommendations?

I'm project managing an intranet application being developed at work. We're in the early planning stages. I've previously done all my development in Python using Django, but as we're a windows shop we're probably going to go with ASP.NET MVC.
We won't really be able to afford a SQLServer license though, so we were perhaps looking into using Postgresql. However I can't seem to find many examples or guides for people who want to utilise a third party ORM - or at least, an ORM with similar usage as Django - that works with Postgresql.
Ultimately we'd like to handle authentication via Active Directory [including groups], but store actual content within the db.
There have been previous questions of a similar nature, but most of them are over a year old when MVC was stil in Beta.
Any ideas?
NHibernate by a country mile.
It also supports MySql and should you want to change it has the main commmercial ones too. Haven't switched between db vendors but if you don't do much bespoke t-sql and say use fluent nhibernate you could almost plug and play between database platforms.
The support and community behind NHibernate when it comes to Mvc is second to none. It is categorically the ORM of choice.
You can try DataObjects.Net - open source ORM with GPLv3 or commercial licenses. It also supports Postrges.
NHibernate supports PostgreSQL. See http://vampirebasic.blogspot.com/2009/02/nhibernate-with-postgresql.html for some advice on how to integrate the two.
Also worth mentioning is that NHibernate now supports LINQ syntax. See http://ayende.com/Blog/archive/2009/07/26/nhibernate-linq-1.0-released.aspx for more details.
I'd recommend Mindscape LightSpeed. It supports PostgreSQL and has a visual designer baked into Visual Studio with full database round tripping to PostgreSQL.
When there was no add-in for Visual Studio to support PostgreSQL from the Server Explorer the guys wrote a free visual studio add-in for supporting it.
Solid O/R Mapper with LINQ mixed with first class visual model development against PostgreSQL. It is a commercial product however there is a free edition for small databases.
Mindscape LightSpeed O/R Mapper
Try Devart LinqConnect - http://www.devart.com/linqconnect/. This Framework supports PostgreSQL, Oracle, MySQL, SQLIte.
Unfortunately, most answers you get on a question like this are going to be based on the responder's opinion and experience and not based on yours.
Most of the suggestions here are good... however... if you are looking for a lightweight/fast ORM that is similar to Django, JackD has the right solution (LinqConnect)...
I've used most of the solutions listed including Django, and find that I usually pick LinqConnect if I'm looking for fast, lightweight and easy. For heavier (read larger) projects I would use something more robust like NHibernate.
But to answer your question correctly... the closest match and least learning curve for someone using Django would definitely be LinqConnect.

Is F# ready for production environment?

I believe a functional language would be helpful for the domain my company works in (financial) where we read in a ton of data, do some mathematical processing on it, and then store it again. Something which is fundamentally very parallelizable and not well-suited to extensive object-graphs with state (in my estimation).
As a .NET shop, I immediately thought of F# but I'm wary of the fact that the words "research" are prominently interspersed throughout almost all of the MS materials on it.
Does anyone know if F# is going to be something which MS is going to support going forward or would I be better of trying to convince the powers that be to go with Scheme/Haskell/et al?
It is going to be in visual studio 2k10 as a formal language.
(See e.g.
http://blogs.msdn.com/dsyme/archive/2008/12/10/fsharp-to-ship-as-part-of-visual-studio-2010.aspx
http://blogs.msdn.com/dsyme/archive/2009/05/20/visual-studio-2010-beta1-with-f-is-now-available-plus-matching-f-ctp-update-for-vs2008.aspx )
Microsoft seems to be really gung-ho about promoting F# as a first-class language in the new Visual Studio, so I expect that they will continue supporting it with tools and documentation for quite a while.
See also e.g.
https://stackoverflow.com/questions/966039/which-companies-are-using-f-internally-and-what-are-they-using-it-for
which is suggestive of a few big companies that are already using F#.

Can I really develop on ASP.NET MVC for free? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
I'm currently developing a web app on Django/Python, and I consider moving to ASP.NET MVC. I downloaded the Visual Web Developer Express edition, read NerdDinner, and I'm ready to go. I will probably keep working on MySQL.
One of the reasons I chose Django+MySQL in the first place was that it was free of charge. I'm bootstrapping a business and can't afford to pay for expensive software, even for deployment (storage and bandwidth are the exception).
My question is: can I develop on the express edition and get my product to production without having to pay to Microsoft? This is both a legal question and a practicality question (Assume I'll use open source version control, build server, etc).
I'm not experienced in Microsoft's different licenses, I wondered if anyone has any experience in driving a product to the web based solely on the express editions (I know you guys are not lawyers, but some of you are probably working at companies paying lawyers to help with such decisions...)
You've asked two questions here, so let's take a look at both.
From a legal standpoint the answer is pretty straightforward: yes, Visual Web Developer Express is provided free of charge and there is no limitation regarding using it commercially.
Your second question has to do with the practicality of using Express editions commercially. The short answer is: yes. The longer version of the answer sounds a little more like "yes, but...".
Although Visual Studio Express editions are fantastic -- especially when you consider their price -- you should be aware that they do lack functionality. To me, the most important things Express editions lack are --
Extension support. There's a healthy Visual Studio add-in ecosystem out there that you'll be locked out of. Not a fatal flaw, for sure. Just something to keep in mind.
Ability to create setup projects. Again, not fatal. You can do it manually or using some external solution. Also, if you are developing something for use on one customer (or for yourself) this is a complete non-issue.
Native 64-bit support. This is the one I can't work around. If you need to work on 64-bit environments and use some 64-bits controls, you're in a pickle.
Support for test projects. If you are into test-driven development, this is a very cool feature you'll miss on the Express editions.
Also, they have no class designer, some (small) limitations on debugging and most development tools you'll find that work with Visual Studio won't work with the Express editions.
All in all, you can definitely develop with VS Express. Compared to the tools you probably had for Django+Python, Visual Studio Express is a big leap forward anyway IMHO.
Also, you can always go with the Express edition for now and upgrade later if necessary.
Point 7 in the "Express" FAQ probably answers it best:
Can I use Express Editions for commercial use?
Yes, there are no licensing restrictions for applications built using Visual Studio Express Editions.
Other then that, reading the EULA should confirm that there is no "products built with this software is for private use only" clauses.
Not only can you develop ASP.NET MVC for free, you can do it on Linux using Mono, as Miguel points out and Michael explains... so in addition to no license fees for the runtime or IDE, you can host on free operating systems too!
You can also use MonoDevelop on Mac OS-X and although I'm pretty sure Windows users will prefer Visual Web Developer Express, they are getting MonoDevelop running on Windows, too.
When you've made your first million dollars, then you can 'upgrade' to Visual Studio 2010 :)
Yes, the Express editions are really free.
yes, you can develop on the free versions of microsoft software. you will have to pay for the os license of the development and hosting servers though.
for a business you may want to investigate the bizspark program which can give you up to three years of everything, including hosting.
It is absolutely possible to develop and deploy ASP.NET and ASP.NET MVC applications without having to pay to Microsoft. I see no any limitations/differences (both legal and practical) in deployment of ASP.NET applications, developed in express/full versions of VS. Personally I would recommend to buy VS2008 Pro (or maybe wait for VS2010) - it's much more powerful then VWD Express. Yes, It is expensive but I think it is worth its money.
UPDATED:
Reliable Dedicated/VPS hosting is expensive for both Linux/Windows platforms. So if your site will grow quickly - yor main costs will be hosting not tools
in development yes it is free visual studio express is really free but when it comes to deployment you will really need Windows server 2003 or 2008 you might also need another edition of SQL server if express doesn't meet the requirement :)
There is no need to settle for the Express editions or open source. If you are a legitimate startup, you can join Microsoft's relatively new BizSpark program and get a free MSDN subscription, which includes full editions of all the software for development purposes (e.g. Windows Server, SQL Server, etc).
Plus for web apps you get licenses to deploy the software in production, which I think makes BizSpark unique versus other MS partner programs. It doesn't include free hosting however.
Check out the site for eligibility requirements and restrictions.
(sorry Matt I know you mentioned Bizspark, but I wanted to provide more info and emphasize how relevant this is for the question).

Best way to learn about .net MVC for a php programmer

Ok i know theres a ton of questions around books and tutorials to learn MVC in dot net, BUT after I started reading some of that stuff i realized they are not oriented to people like me.
I have been working with php on Zend in a MVC configuration and done some ruby on rails so i do have a good idea of the pattern, but i have absolutly no idea about: IIS, Visual Studio and asp/C#... so, what is the best way(could be 1 book, a couple of tutorials, a guide, a manual, a blog-post) to get a very good idea of this technology.
At least i would except being able to know(first hand) the pros and cons of all this!
Screencasts help me more than anything. Seeing someone actually do something is many times more instructive than reading. Watch the screencasts on http://asp.net/mvc. Scott Hanselman's preview 3 videos are still relevant, as there haven't been many huge, sweeping changes since then. They show you how to drag data around, use LINQ, and other .NET specific things. After watching and coding along with those, check out the others.
If you're really starting from scratch, first step would be to download and install Visual C# 2008 Express Edition, Visual Web Developer 2008 Express Edition, and SQL Server 2008 Express Edition. Those are the free versions of Microsoft's Visual Studio and database products.
Then start with a basic C# tutorial like this one to get comfortable with the features of C# that differ from PHP. You will probably cruise through it but I think it will be valuable to have this foundation.
Find a LINQ to SQL tutorial as most of the MVC tutorials use this for data access and it is probably very different from what you've seen in PHP.
From there I think you would have enough to start the MVC tutorials. Spending some time learning plain ASP.NET would certainly help you transition to ASP.NET MVC, but you would also spend a lot of time working with concepts that are absent from MVC.
Also, have MSDN at hand as a reference for the .NET framework.
Your at a disadvantage because you have no formal training in C# and are unfamiliar with the .Net framework. Fortunately there is always time to learn. Here is what I suggest you do. Get a C# for beginners book and start learning some C#, once you are up on that flex your html and php skills to use the MVC Framework. Another thing that might help is getting a .Net job, seriously this is the best way to learn stuff!
Learn core C# skills 2.0 to 3.5 , thus generics / LINQ / Lambda Expressions / List / Keep on writing apps in visual studio express , console apps, winforms , and web apps.
You have got to get the fundamental core C# language down. If you know PHP, then at least you understand logic ... conditionals and html / jquery / css. However, you will really want to get decent with C# before really doing MVC as you will stare at generics and lambda expressions and be totally lost.
Attack it from all angles, mostly trial and error on hand coding from scratch, then some videos from pluralsight / microsoft etc.. The MVC 3 books are good too, but .NET C# book will be a big first.

Resources