Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
Image

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.
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
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.

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.

*

This discussion has been archived. No new comments can be posted.

Programming .NET 3.5

Comments Filter:
  • Typo (Score:4, Informative)

    by Lacota ( 695046 ) on Monday November 03, 2008 @01:03PM (#25614445) Homepage
    Pogramming? :P PROGRAMMING.
  • Pogs (Score:3, Funny)

    by djdavetrouble ( 442175 ) on Monday November 03, 2008 @01:04PM (#25614459) Homepage

    Behold, the Ultimate Pog!

  • by Anonymous Coward on Monday November 03, 2008 @01:05PM (#25614489)

    I would like to send this to my programmers.

  • by prestamospersonales ( 1399451 ) on Monday November 03, 2008 @01:08PM (#25614547) Homepage
    this is a great book but is designed for advanced programmers only.
  • The act of doing a really bad job of gramming.

  • Pogrammers need to spell korekktly - just konsistenetely.
  • by Enderandrew ( 866215 ) <enderandrew@NOsPAM.gmail.com> on Monday November 03, 2008 @01:10PM (#25614573) Homepage Journal

    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.

  • by Alpha Whisky ( 1264174 ) on Monday November 03, 2008 @01:11PM (#25614595)

    How appropriate, it's a picture of a lame duck.

  • Is the picture on the book supposed to be a limping/lame duck?

  • Pog Ramming (Score:3, Funny)

    by sakonofie ( 979872 ) on Monday November 03, 2008 @01:16PM (#25614671)
    There should be a space between pog and ramming. Back in my day, we used pog "slammers," not "rammers," but you can call 'em whatever you want samzenpus.
    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)

    by Seakip18 ( 1106315 ) on Monday November 03, 2008 @01:31PM (#25614943) Journal

    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.

    • by melted ( 227442 ) on Monday November 03, 2008 @02:05PM (#25615535) Homepage

      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)

      From what I've gathered, LINQ sounds like craziness in terms of being able to keep SQL maintained.

      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

      • Is HQL statically typed?

        • 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?

          • 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.

            • I do not dispute that compile-type syntax checking is good. My point was that attacking LINQ as a "distortion of SQL", as GG...P did, was pretty silly, as similar "distortion" happened years ago with HQL and friends - pretty much as soon as ORMs appeared. LINQ just takes it to the next logical level.
    • Re:You know..... (Score:5, Informative)

      by BRSQUIRRL ( 69271 ) on Monday November 03, 2008 @02:34PM (#25616029)

      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.

      • The idea of LINQ as a general-purpose query language that can either be compiled directly as an expression, or parsed at runtime by an expression parser depending on the type of the object it is applied to, is also quite sound. After all, why should there be a difference in the query language between a set of in-memory collections, and a database? So long as both are considered relational sources with corresponding operators, it seems natural to treat them the same.
        • 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.

          • 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.

            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)

      by CodeBuster ( 516420 ) on Monday November 03, 2008 @03:02PM (#25616479)

      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.

      • 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.

        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]

      • by abradsn ( 542213 )
        Hello,
        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:
        • Speed
        • accuracy
        • security
        • graceful syntax
        • solution to a problem that I've been longing to solve. (
        • Memory usage is purposefully left out, since it hasn't greatly impacted me since 10 years ago

        Ho

  • So I'm a jerk, but (Score:5, Insightful)

    by jguevin ( 453329 ) on Monday November 03, 2008 @01:33PM (#25614969)

    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:

    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.

    Good lord.

    • 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".

    • I agree; I was going to forward this to one of our devs, but after a couple of paragraphs I can't help wondering if it wasn't written by a high-schooler.
    • It's choppy, uninsightful, and just painful to read.

      Just like C#! :P

  • by DaveV1.0 ( 203135 ) on Monday November 03, 2008 @02:04PM (#25615491) Journal

    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.

    • by Tridus ( 79566 )

      It shows just how pointless tags here are. They're used as a faster comments section.

    • Or juvenile behavior.

  • by CodeBuster ( 516420 ) on Monday November 03, 2008 @03:09PM (#25616603)
    The APress offering in this category, Pro C# 2008 and the .NET 3.5 Platform [amazon.com], is almost certainly superior in both breadth of topics covered and details presented. I own the Apress book and have found it to be a useful reference on numerous occasions, but read the reviews and look at the scores before deciding what to buy. If you only have funds for one or the other then get the Apress book, you won't be disappointed.
  • Alright, I understand that "Eclispse" doesn't suck, but can someone enlighten me as to what it is? Sounds like a good name for an IDE for CLISP [cons.org].
  • The world of the .NET framework is taken to the next level by the release of .NT 3.5

    Bah! Tell me when they release version 2!

E = MC ** 2 +- 3db

Working...