Programming .NET 3.5 224
lamaditx writes "The world of the .NET framework is taken to the next level by the release of .NET 3.5. The intended audience of this book are experienced .NET programmers. There are no sections that tell you details about C#, SQL servers or anything like that. I don't recommend this book if you never worked on a .NET project and don't know how to set up a SQL database. You should be aware that the code is written in C#. You might use one of the software code converters if you prefer Visual Basic instead. I think the code is still readable even if you do not know C#. I appreciate the fact that the authors decided to use one language only because it keeps the book smaller. The authors assume you are using Visual Studio 2008. You don't necessarily need to update to 2008 if you are working with an older edition because you can use the free Express Edition to get started." Keep reading for the rest of Adrian's review.
The table of contents is available from O'Reilly — together with a chapter preview — here. The book does not come with any extras but includes the usual free 45 days access to the book on Safari.
Programming .NET 3.5 | |
author | Jesse Liberty & Alex Horovitz |
pages | 476 |
publisher | O'Reilly Media |
rating | 7/10 |
reviewer | Adrian Lambeck |
ISBN | ISBN 978-0-596-52756-3 |
summary | Covers all main .NET technologies found in .NET 3.5 |
This book covers the key technologies in .NET. There are books on each of these technologies: Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), XAML, AJAX,C# and Silverlight already, but this book shows you how everything is connected with each other. As the authors note: "Our goal is to show you the 25% that you will use 85% of the time.". From my point of view this is good because I have a .NET 2.0 background and wanted to know what is new in .NET 3.5 and how things are connected.
The book is divided in 3 main parts. The first is presentation, which covers XAML, WPF and AJAX. The second describes how to take advantage of the design pattern support in .NET. The last part covers the business layer which includes LINQ, WCF, WF and CardSpace.
The first part starts with XAML. This is the eXtensible A The next main topic is using WPF which is the successor of Windows Forms. The authors explain how to connect data structures to the user interface which I consider to be one of the most important parts of using WPF. You will also find a lot of code and XAML layout descriptions.
The chapter on Silverlight was not very helpful to me. Silverlight is the competitor of Adobe Flash. Giving samples how to layout a Silverlight application is essentially the same as a WPF application thus it dives into more details of XAML. I am missing the real Silverlight message so this part did not meet my expectations.
The third technology you will learn about is AJAX which leads us away from the desktop client to a web client. The explanation how AJAX works is pretty good. The authors show you step by step how to create a todo list web-application with a database backend using ASP.NET and AJAX. Again, this does not cover all AJAX controls or ASP.NET but it shows you how the parts are interconnected and assumes that if you know how to handle one control, then you can also figure out how to handle all the others. Most web applications need some kind of access control. At this point the authors argue that it is faster to implement your own security tables instead of using the ASP.NET forms-based controls.My opinion is that you should never do something that is not correct to teach something else. There are always people who get it wrong in a way you did not anticipate. My recommendation: use the ASP.NET components and do not implement them by yourself.
The second part about the design patterns was surprising to me because I expected the common introduction to standard design pattern. The Model-View-Controller project implements the pattern for ASP.NET and allows developers to incorporate it easily. The advantage is that you get a comprehensive and easy to understand introduction how .NET supports design pattern implementation. I guess this will lead some developers from theory of design patterns to actually implementing them.
I consider the third part to be the real interesting content. It starts with LINQ which bridges object-oriented code to relational databases. You get to know the differences to SQL and also the advantages it provides by explaining new concepts. The examples are easy to understand and successfully make their point.
Windows Communication Foundation (WCF) covers the hot Service-Oriented-Architecture (SOA) topic. The authors explain what it is all about but you will need some knowledge about Web Services and XML to really get it. The introduction is rather short but more details are explained in the corresponding example.
The chapter about Windows Workflow Foundation (WF) starts with a short example how you implement a workflow without WF. After that you get to see how you do the same with WF. This way the necessity for WF become clear and you understand how to take advantage of this technology.
Card Space is the successor of Microsoft passport which was not successful as an authentication service with respect to user acceptance. This is also the key issue that decides on the success of Card Space. Maybe the improved interoperability will help. The chapter provides you with a short authenticate-yourself test and shows you how to offer Card Space authentication in your ASP.NET application.
The book is a good entry to the world of .NET 3.5 because it gives you an idea about every part and what it is good for. Maybe you do not need all of it for your job but at least you know that it exists and how it might be useful. I think it is reasonable that a comprehensive introduction to .NET 3.5 can not satisfy everybody because the range of topics is too broad. One can argue that this kind of information could also be retrieved from the net. I consider the book to be a better resource because it already summarizes the important information such that you do not drown in a flood of information.
There is also some criticism as I pointed out earlier. Maybe I am just a little picky about the details but if you print code download references into a book, they must be available. Most examples can be downloaded but the Alex Horovitz site was not reachable when I tried to access it. Another personal remark is that I do not like to see quotes from Wikipedia. Other people might think different about that so you just need to decide on your own.
I rate this book a 7. The authors scratch the surface of every topic and choose an appropriate style to explain it. You can tell that they thought about how to explain each topic on it's own and give you not just the "how" but also the "why".
Adrian Lambeck is a graduate student in "Media and Information Technologies" and worked with .NET for a few years.
You can purchase Programming .NET 3.5 from amazon.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Typo (Score:4, Informative)
Re: (Score:3, Funny)
It's slashdot, and it's a Microsoft tech. Presumably he meant to say Pogromming .NET 3.5
Re:Typo (Score:5, Funny)
Dovelopers, dovelopers, dovelopers!
Re:Typo (Score:5, Funny)
Thats ok, lint will pick that up when you compile it.
Typo. (Score:4, Funny)
Actually it's Pooh-gramming. A child-like state all programmers try to enter into.
Re: (Score:2)
Pogs (Score:3, Funny)
Behold, the Ultimate Pog!
Re:Pogs (Score:5, Funny)
.NET is back...in Pog form.
Is there a Hindi translation? (Score:5, Funny)
I would like to send this to my programmers.
Re: (Score:3)
recommended for advanced programmers (Score:3, Insightful)
Re:recommended for advanced programmers (Score:5, Funny)
Re:recommended for advanced programmers (Score:5, Insightful)
You know, after having had a go at scripting languages (Ruby, Python, PHP) etc. and trying to weed through the morass of Java libraries and excessively complicated deployment and Flex being a fscking joke- .Net/C# comes out the winner.
It's tight, it's typed and cake to deploy. LINQ has potential for low memory use(fast) queries and Sliverlight seems to be much better than AS3/Flash because you get the cheat of direct access to WPF.
eh. Not much of a zealot for any tech here- I would use Smalltalk if it would get the job done. Just a review and some thoughts.
Re: (Score:2)
You miss the real reason why it's all so much less complicated on .NET : There's only one platform to target, and that platform is Microsoft. You don't have to care about other platforms, because you _can't_ care about other platforms. Oh well, yeah, you can insert a Mono reference here, but as soon as you try to use it (I haven't, but I'm sure it works ok), you'll realize that you now face the same kind of complications that other cross platform languages face. I'm not saying .Net is bad or anything, just
Re: (Score:3, Insightful)
None of the reasons the GP mentioned in this post have anything to do with "one platform". He seems to be mostly content with C#-the-language, not .NET-the-platform. Java could have its own LINQ analog and type inference already, if only Sun (or Google, or IBM, or other of the big players) wanted it - which they don't. End result - talented language designers like Ne
Re:recommended for advanced programmers (Score:4, Interesting)
Java could have its own LINQ analog and type inference already, if only Sun (or Google, or IBM, or other of the big players) wanted it - which they don't. End result - talented language designers like Neal Gafter are leaving the Java scene and joining Microsoft [artima.com] to work on C#.
Well...Linq is sort of a hybrid thing, but it's mostly Microsoft finally adding an ORM language to .Net.
Quite frankly, as a developer who uses both Java and .Net in my job (and am currently using .Net 3.5 sp1), Linq is an embarrassment.
I have found the following problems:
1) I cannot easily be sure which parts will run in the database and which in the VM.
2) I have little control over how caching works.
3) Does an extremely poor job of modeling relationships other than "Has A" and "Belongs To" (the very common "Has and Belongs to Many", for example, is missing).
4) Some functions that work in BOTH the database and the VM don't work with Linq, or don't work reliably (examples I've found: shift operator, bitwise and when used with ulong).
5) Almost all of the database functionality in Linq will not work with anything besides SQL Server.
All of these reasons are why I'm sticking with Hibernate for Java, and NHibernate for .Net for as long as I can. Hibernate behaves predictably and reliably, and you can figure out what its doing when you have to and optimize queries that are taking too long, and you seldom have to worry about it failing in unpredictable ways.
The only complaint I have with Hibernate is that you can't do subselects containing aggregate functions in Hibernate Query Language.
Re:recommended for advanced programmers (Score:5, Insightful)
As many others, you're confusing LINQ to SQL, LINQ to Entities / Entity Framework, and LINQ in general. LINQ to SQL is not a proper ORM, and is restricted to MSSQL. Entity Framework is a LINQ to SQL replacement that is a proper ORM, and is database-agnostic (there was an Entity Framework provider for PostgreSQL released recently, and more are in the works).
LINQ in general is not an ORM. It can be used as a query language for an ORM, which is what LINQ to SQL is about (another example is NHibernate - the recent versions also support LINQ queries). But LINQ is also used in scenarios which do not have anything to do with ORM, or databases in general - LINQ to Objects/XML, to DataSet, and so on. LINQ itself is just a set of standard operators on lazy sequences, established years ago in the functional land - map, filter, fold, take etc - lifted as syntactic sugar into the language itself, with an extensibility API.
Re: (Score:2)
Sounds like what you're saying is that Linq is just the language that goes along with an ORM mapper. Something like what HQL is capable of doing.
In the rest of the programming world, one would make no such distinction. ORM=>ORM+API sublanguage.
And I see no reason to make such a distinction here. It's not like Hibernate isn't capable of dealing with things besides databases. Why should we place an emphasis on that when talking about Linq to (*), but not when dealing with anything else?
Even if we were.
Re: (Score:3, Interesting)
I'm not quite sure what you mean, but my point was that there is no such thing as a "pure generic SQL". SQL generated for Oracle will not work for Postgres or MSSQL. You can probably h
Re: (Score:2)
generally the real reason its less complicated on .NET is because of Visual Studio. I had the pleasure of maintaining some VB.NET code very recently, and even with my very limited VB.NET skills (this was my first vb.net app!) it was kinda easy.. mainly because the IDE filled everything out for me.
If I had to do it in notepad, I'd have been screwed. I'm not saying it is a good language as there was plenty of 'issues' in the class libraries I used, and it was a real PITA to remember to just forget about objec
Re: (Score:2, Insightful)
"And I've had wonderful, painless experiences with both technologies in equal measure with the miserable, agonizing experiences."
Agreed. Completely. Perhaps I am just at a stage of being 'over' Java after its changing so many times at really fundamental levels.
I like that there is only VS. I like that there is only IIS and only one (fundamental) .NET config. I like easy delegates...
If I am biased, it's toward easy as opposed to 'for' M$.
That's where I am now. Who is to say that will not change when the Evil
Re: (Score:2)
Funny .. I've have had to analyze broken C# code (because the only guy who knew it left the company and everyone else writes in Java) and thought it was all a piece of shit and impossible to navigate. It's so nice to not have to deal with all the stupid file types and code spread out over programs and resource files and who knows where.
I guess we all have opinions, no matter how unwilling we are to admit they are biased towards what we know best and against what we know least.
Pogramming, def: (Score:2)
The act of doing a really bad job of gramming.
Re:Pogramming, def: (Score:5, Insightful)
Re: (Score:2)
Nor confused with Pogrammer ... awesome programmers like myself who just can't get a job.
Re: (Score:2)
Spellink (Score:2)
Microsoft devs (Score:3, Funny)
Microsoft devs who focus on .NET are known as pogrammers. Microsoft is right and the rest of the world is wrong. Better get on the bus.
Re: (Score:2)
Surely that should be pogrommers? The reference [wikipedia.org] here being specifically directed at any non-MS user.
Re: (Score:2)
Apparently moderators can't detect sarcasm.
Re: (Score:2)
Anyone else see the cover and think... (Score:5, Funny)
How appropriate, it's a picture of a lame duck.
Re: (Score:2)
One's a sick duck and I can't remember how it ends, but your mother's a whore."
HA HA HA HA!
Re: (Score:2)
If it quacks like a duck and walks like a duck...
Re:Oh...I get it! (Score:4, Insightful)
Lame duck? (Score:2)
Is the picture on the book supposed to be a limping/lame duck?
Pog Ramming (Score:3, Funny)
Also, I am still confused as to what this has to do with Card Space. Is there a new crossover between pogs and yuugio/magic/pokemon? I hope so. I believe children nationwide will benefit from throwing large chunks of brass at the ground during school.
You know..... (Score:5, Insightful)
It's a sad day at Slashdot when more people would comment on a typo than offer criticism about a book. So let's fix this.
It explains some of the newer things 3.5 brings but does it deal with their actual implementation with business logic or otherwise? From what I've gathered, LINQ sounds like craziness in terms of being able to keep SQL maintained.
Roll with that.
LINQ does not sound like craziness (Score:5, Insightful)
I use LINQ almost exclusively in two ways:
1. To access stored procedures
2. To do SQL-like queries on in-memory collections
It works GREAT for both.
Re: (Score:3, Informative)
Sorry to tell you this, but LINQ has run almost to the end of its short life. Turns out the ADO.NET folks are going to kill it off. They like EntityFramework better [codebetter.com].
LINQ was good at a few things, and a LINQ to Objects/SharePoint/etc. that was fully matured would have been nice. But, it won't get there now.
Re:LINQ does not sound like craziness (Score:4, Informative)
Linq TO SQL is dead. Not Linq.
Now people will be using Linq to Entities instead of Linq to SQL.
http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx [microsoft.com]
The ability to use Linq on other random collections will not be affected.
Re: (Score:2)
yeah, but it works shit with Oracle, DB2, MySQL and PostgreSql.
Way to go to lock yourself in to a single DB provider. Oh hang on a moment....
Re: (Score:3, Informative)
LINQ to SQL is no different in concept than Hibernate's HQL, or any of the other dozen self-designed query languages. Well, except that it's "language-integrated".
Nor is it limited to databases. A project I work on has none, but uses LINQ heavily for queries on plain object collections and XML. It really cuts down on boilerplate code (but then again, those who have been using Haskell or ML, and know what "ma
Re: (Score:2)
Is HQL statically typed?
Re: (Score:2)
Yes, it is statically typed, though probably not in a sense you mean here - since HQL exceptions are (typically) hosted as plain string literals within the host language, the type verification only happens when they are processed by the HQL parser - which is run-time from the point of view of the application as a whole. LINQ, in contrast, is type-checked at compile-time, since it shares the type system with the host language.
Anyway, how is it relevant to the original issue?
Re: (Score:2)
You said "LINQ to SQL is no different in concept than Hibernate's HQL, or any of the other dozen self-designed query languages."
I was pointing out a difference. Whether that difference changes the "concept" depends on one's point of view. There are certainly developers who prefer to find their errors at compile-time rather than run-time. I find the difference significant. YMMV.
Re: (Score:2)
Re:You know..... (Score:5, Informative)
I blame Microsoft for perpetuating this misconception, but LINQ (at its core) has nothing to do with SQL or databases.
I too am a little skeptical about LINQ-to-SQL, the implementation of LINQ that allows querying/manipulating SQL databases. But basic LINQ -- the idea of overlaying the .NET class library with a set of generic query operations and then providing new programming language keywords to twiddle them -- is pretty cool. For example, LINQ can work over in-memory collections of objects or XML documents, which allows you to replace lines and lines of arcane search loops with a single LINQ query statement that is infinitely easier to understand and maintain.
Re: (Score:2)
Re: (Score:2)
indexing.
whilst you can get a decent performance from querying a DB because its designed to be used like that, applying the same principles to an in-memory collection is not always going to be the best choice, in fact is probably always going to be a really bad choice.
Its like choosing a list structure for your random access needs, so just be aware that what is easy for you to code up doesn't mean its the best solution for your users.
Re: (Score:2)
There's nothing magical about databases - in-memory collections can be indexed just as well, and it's trivial to write a LINQ provider for them that takes advantage of that fact.
Nonetheless, a typical RDBMS SQL query will use indices for joins first
Re:You know..... (Score:5, Insightful)
LINQ sounds like craziness in terms of being able to keep SQL maintained.
You have to look beyond SQL and see the real value of having an abstract in-language query facility which can be remapped, using any number of methods from XML configuration to dependency injection, to any data source which supports LINQ. This is no more complicated than the previous state of affairs in many high level languages with generic data table and grid objects or strings built up as queries. The genius of LINQ is that it compliments the better solutions while replacing the inferior ones and providing some additional goodies, lambda expressions for example. LINQ stands for Language Integrated Query and is NOT just LINQ to SQL (although Microsoft has promoted the hell out of that implementation). Sometimes it pays to look beyond the hype and see what a new technology really does (or does not) bring to the table and if LINQ is just another way to write SQL to you then perhaps you should take another look, because LINQ has much more to offer than just LINQ to SQL.
Re: (Score:2)
Indeed. And to anyone who truly wants to understand what LINQ actually is, and what are its long-term goals, should really read Eric Meijer's excellent essay "Confessions Of A Used Programming Language Salesman: Getting The Masses Hooked On [microsoft.com]
Re: (Score:2)
I'm one of the people that doesn't understand the usefulness of linq. Though I really do want to...
I need to know the answers to a questions before I adopt a new technology:
What enhancement does the new technology give me that I did not already have?
It needs to have something new from the list below:
Ho
Re: (Score:2)
Re: (Score:2)
The beauty of features like LINQ being added to .NET is that they're case studies on FOSS double standards, because if that had been added to Java or Python, everyone and their little sister would be screaming to the four winds how totally cool it is and LOLOL, Microsoft doesn't have it.
Prove it.
So I'm a jerk, but (Score:5, Insightful)
I'm sorry, this is a really poorly written review. It's choppy, uninsightful, and just painful to read. And then there are "sentences" like:
Good lord.
Re: (Score:2)
You are not a jerk for thinking it is a poorly written review. The jerks are the people who are tagging this article with "microsoftsucks" and "flaimbait".
Re: (Score:2)
Re: (Score:2)
Just like C#! :P
O/S bigotry right in the tags (Score:4, Insightful)
How is a book review flamebait? Why tag a book review with "microsoftsucks" and "vssucks" and even "eclipsesucks"?
There is only one reason, and that is zealotry and bigotry.
Re: (Score:2)
It shows just how pointless tags here are. They're used as a faster comments section.
Re: (Score:2)
Or juvenile behavior.
Re: (Score:2)
No, it couldn't, because Microsoft does not actually suck. Parts of Microsoft suck (some products, their general business practices), but the whole does not, in fact, suck.
And more to the point of what this article addresses, .NET certainly does not suck.
Re: (Score:2)
As well it may be, how is it in any way relevant to the subject of TFA? I understand picking on .NET - that is at least on-topic. But "microsoftsucks" tag does indeed feel like there's a bunch of zealots who got tired of waiting for the next Twitter story, and are trying to vent their frustration in any way they can.
Re: (Score:2)
Re: (Score:2)
Get with the pogrom?
OK - no problem. You're absolutely right, AC. Microsoft is very much not unlike an outcast religious group, typically Jews.
Poor, poor, downtrodden Microsoft.
Or - wait - you're saying that Microsoft is the chosen people in computing?
Oh, drek - this is too much.
Re: (Score:2)
I miss the yes, no, maybe tags.
The APress book is Better (Score:5, Informative)
!eclispsesucks (Score:2)
.NT 3.5? (Score:2)
Bah! Tell me when they release version 2!
Re:Mono 2.5 released (Score:4, Informative)
actually, iirc, mono is compatible with all of .NET 2.0 and quite a bit of 3.5, so they aint that far behind, see: http://www.mono-project.com/FAQ:_General [mono-project.com]
Re: (Score:3, Funny)
I hear that they're ahead in some areas, patent infringement for example.
Re: (Score:2)
The problem is that "quite a bit" of 3.5 (+SP1) is, in fact, a very big bit: they're missing WPF, WCF, and WWF, as well as LINQ to SQL and LINQ to Entities.
The only bits of 3.5 they seem to have are C# 3.0 language features in the compiler, and basic LINQ to Objects/XML/DataSet.
Given that MS has just announced .NET and C# 4.0, yes, Mono guys are clearly falling behind.
Re: (Score:2)
I must admit I have pretty much zero experience with WWF (workflows? why bother, when I can code the same much faster?). But WPF is, in my opinion, much more impressive - at least it's the first UI framework from Microsoft that's built around data binding from ground up (which enables proper MVC/MVP). WinForms had data binding bolted on in later versions, and that really shows - there are quite a few corner cases where it just doesn't work, and then some more where it sorta does, but performance is abysmal
Re: (Score:2)
WCF.. apart from my pet peeve with it: its sockets implementation is 'specially optimised for great ECF to WCF performance', ie it doesn't provide any interoperable tcp/ip socket, its a layer on layer on layer technology.
WCF runs on top of COM+, which was pretty poor for performance, which is layered on top of DCOM, on top of TCP/IP. Its queue connectivity - on top of MSMQ.
I think there's the potential for it to be good, and its webservices is better than running ASP.NET webservices (but not as good as gsoa [fsu.edu]
Re:LINQ = Doomed (Score:4, Informative)
People implement it left and right because its easy: its just one interface to implement (its not trivial, but its not hard either). Also, having something exposed as IQueryable (what you need to "implement LINQ") also allows you to expose it to ADO.NET Data Services, which is a huge time saver.
I don't see why you get "less maintainability for designers" though. Functional programming (which LINQ somewhat is) is a heck of a lot easier to maintain than the alternative.
Re: (Score:2)
So what's different between this and templates in C++? You could template a query class and use it on tons of data structures. Everyone is making this out to be the second coming of Jesus.
Re: (Score:2)
Your template wouldn't work for "tons of data structures". It would work for only one scenario -> collections/lists/arrays/objects/whatever.
If you do LINQ to XML, the LINQ expression tree has to be converted to efficient XML cursors (DOM is too slow). If you want to query relational databases, you need to translate it to, well, SQL. If you want to query a ldap, you need to convert it to an ldap query. If you want to query a REST dataservice, you need to convert it to a path + query strings. If you want t
Re: (Score:2)
I guess my question was more rhetorical...
Why wasn't this effort put into a C/C++ lib instead? I mean... besides money. Everyone talks of the removal of boilerplate code (which could easily be done with a few smart classes/templates as OO intended.) The only thing I see here is a marketing sales pitch instead of some serious "world altering" code contributions.
Re: (Score:2)
C++ is missing stuff at the core syntax level that templates won't help with. You need lambda expressions (which isn't yet part of C++), and extension methods to be able to tack on methods (with implementation) to some core interfaces (that I guess you could somewhat do with templates I guess, but it would be harder to make retroactive, but its possible, if messy). Then you need a compiler change to map the LINQ syntax sugar to these things so they're "understood".
Then, you need a way to be able to get the
Re: (Score:2)
on the other hand the C# stuff moves sofastyoucan'tkeepup. LINQ to SQL is already a dead technology, MS is killing it off in favour of entity framework. C# was modified specially to have lambdas, and now dynamic typing and extension methods. What's going to come next to screw with the original 'nice design'? You know that its going to go wrong sooner or later - just think of the projects you've worked on where the customer or tech lead insisted on adding all kinds of stuff in knee-jerk reactions to the late
Re: (Score:2)
So that stuff can be added. It's not like it's impossible. I'm not talking about adding things to the standard. I'm talking about using the constructs of the language to do precisely the same thing. Hell, there's already the Boost.Lambda tools to do much of what you're talking about concerning lambda functionality.
And I still don't understand why you'd need run time compilation except for cross platform (ie: x86 vs PPC vs SPARC... even then, I'm contradicted to find a good reason) applications where the
Re: (Score:2)
OK, short answer, .NET already has the basic components of Templates [wikipedia.org], they're known as Generics in .NET. This whole LINQ thing actually lets you write queries (that resemble SQL) right into the code. Initially, you're writing these queries against plain old objects. So you can basically write a select against your collection of customers.
Now the queries are "Language-Integrated". So they're intellisensed and they compile, which are both big productivity wins. You also get Anonymous Types, which are almost l
Re: (Score:2)
Suddenly, we've added this very powerful Functional syntax to our Imperative language.
"we've ... our ..."
So why not take the time to add it to the already established languages?
I stated in an above post. This sounds more like market speak to me. The technology is already there. This is more of a "my way is better" kind of rhetoric. I'm the big bully in school, and I'm taking my cookies over here. At least... that's how it sounds to me.
I mean, this stuff isn't new hat by any means. It's a culmination of technologies. Heck, I could probably do much of the same in Ruby or even AS
Re:Just one question... (Score:5, Informative)
Yes they do. Various versions depending on when the products were released (keep in mind .NET 3.5 is .NET 2.0 with a lot of extensions, its still .NET 2.0), so you have Windows Workflow in Biztalk and Sharepoint, Expression Blend is in WPF, of course, many of their own sites use Silverlight 2.0, etc etc etc. .NET 3.5 is fairly recent, especially 3.5 SP1, so we don't see that -as much-, but .NET in general is fairly pervasive at MS.
Re: (Score:2)
I know, but do the Office guys use it? I recall when the Ribbon toolbar control came out (developed by the Office team) and it was for MFC only. There was a little outcry from the C# community at the time.
So it seems to me Office still uses MFC, I doubt they'll be quick to rewrite it in .NET, and Office is the number 1 important division at MS. So I'd love to know more about how things are panning out in Redmond regarding this.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
As others have mentioned, they are.
Beyond that... no, .NET is not the right tool for every task. It is not necessarily what you want to write your next OS in. It is a very good choice for most of the business software development I've seen in my career, however.
I still don't change it... (Score:4, Insightful)
"Perhaps a language which changes so drastically and so quickly should be avoided. Especially when that company is Microsoft, and especially when that stands a major chance of ruining all of your previous hard work."
You know I just had to reply to such a curious complaint. FOSS is not only subject to change, but more so due to it's open nature and "defacto" leadership. And no one complains about all the changes required when some code you're depending on changes, or your existing assumptions don't work as well as you thought.
Re: (Score:2)
Re:I still don't get it... (Score:4, Informative)
Perhaps a language which changes so drastically and so quickly should be avoided.
Eh, not really. New editions of .NET, for the most part, only add options and functionality; they don't break existing code. If you don't want to use generics, WCF, LINQ, etc. as they're introduced, don't -- they just present what amount to easier/cleaner options to achieve the same goals, in some cases. Instead of iterating through a collection and picking out the objects that match your chosen criteria, maybe you write a LINQ query to do it instead. The latter is less code and probably a lot easier on whoever has to maintain your code down the line (it's easier to read/understand/modify), but the former still works.
I've spent a lot more time dealing with fallout from PHP 4 code that isn't valid PHP 5 code (for example) than I ever have with old-version .NET code -- and I spend a lot more time working with .NET code.
Re: (Score:2)
I can't think of any significant, remotely-close-to-good-practices .NET code that breaks in subsequent .NET versions.
Of course, I'm also not a freetard, so I won't FUD that they'll stop adhering to this behavior.
Re: (Score:2)
Re: (Score:3, Informative)
So far, MS has a pretty good track of backwards compatibility with .NET. C# in particular goes to great lengths to not break stuff. For example, one of the new features in C# 3.0 is type inference for local variables, similar to "auto" in C++0x. So, you can write:
Re: (Score:2, Funny)
Re: (Score:2, Funny)
Thank you everyone, I'll be here all night.
...and don't forget, the 8 o-clock show is the same as the 7 o-clock show
Re: (Score:2, Informative)
If you're a professional, then you can afford the Visual Studio Professional kits. It's $689. Extremely reasonable and in line with the cost of other professional tools like Photoshop for graphics, Ableton for audio (once you pick up their live packs, anyway), whatever. If you can't afford $689 and can't score a legal free copy (which they hand out like candy at events), you are obviously not a professional.
If you're an enthusiast, Visual Studio Standard is $250. Still reasonable. A little pricier than, say
Re: (Score:3, Interesting)
o'reilly .NET books in general seem to be fairly awful. I have their design patterns with C# 3.0 book, which advertise itself as a book that takes the Gang of Four design patterns and show how they can be implemented better using built in C# 3.0 features (such as the observer pattern with delegates or events)
That sounds promising, except the author clearly fails to understand what C# 3.0 has to offer, and thus most of the book uses only C# 2.0 features (and explains them in great details, as if they were ne