Professional Enterprise .NET Paperback – Oct 12 2009
|New from||Used from|
Customers Who Bought This Item Also Bought
No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
Getting the download link through email is temporarily not available. Please check back later.
To get the free app, enter your mobile phone number.
From the Back Cover
Make your enterprise systems code more flexible, testable, and extensible
Many businesses have begun investing in enterprise design with the hope that upfront costs will result in more efficient, maintainable code that will save them money down the line. However, building well-designed applications, incorporating them into existing systems, and responding to the demand for rapid delivery can be overwhelming to even the most experienced developer. This book is the definitive guide to the latest enterprise development patterns and methodologies that will make your code cleaner and more maintainable.
Examines the philosophy behind enterprise development, coding patterns, and common design patterns used in enterprise systems today
Walks you through the different ways to assemble your code in a loosely coupled, testable manner
Explores the pros and cons of the supporting tools (such as Inversion of Control containers, nHibernate, and ASP.NET MVC) that can ultimately lead to better system design
Shows you how to write and automate unit tests using tools such as nUnit and Rhino Mocks
Addresses the responsibilities of the data access layer and methodologies of persistence management
Wrox Professional guides are planned and written by working programmers to meet the real-world needs of programmers, developers, and IT professionals. Focused and relevant, they address the issues technology professionals face every day. They provide examples, practical solutions, and expert education in new technologies, all designed to help programmers do a better job.
Join our Programmer to Programmer forums to ask and answer programming questions about this book, join discussions on the hottest topics in the industry, and connect with fellow programmers from around the world.
Take advantage of free code samples from this book, as well as code samples from hundreds of other books, all ready to use.
Find articles, ebooks, sample chapters and tables of contents for hundreds of books, and more reference resources on programming topics that matter to you.
About the Author
Jon Arking is a software architect, author of books and technical articles, and instructor of classes on subjects such as advanced C#, VB, and Java programming.
Scott Millett is the senior developer for wiggle.co.uk and a regular contributor to the asp.net forums.
Top Customer Reviews
Most Helpful Customer Reviews on Amazon.com (beta)
So it comes as a pleasant, scratch that, 'fantastic' surprise to read this book that manages to convey a vast amount of information on a broad range of key design patterns and methodologies, like TDD, Inversion of control, Dependency Injection, Entity Frameworks and MVP/MVC and yet still remain a joy to read. I own and have part read books on similar subjects from the most established of authors, the likes of Martin Fowler and Bob Martin. While there is no denying these authors have a wealth of knowledge (having developed many of these patterns and methodologies), it's Professional Enterprise .Net that manages to cut past the waffle and terse examples and provide me with the key information I require.
Highlights for me are the topics on TDD and Refactoring, Inversion of Control and Dependency Injection, Business Logic layer patterns (Active Record & Domain Model patterns) and Data Access Layers including ORM. The examples given lead from the simple solution to the most complete and preferred solution. Each chapter is concise enough to be read through again for reference and is a great book to keep at hand when developing.
Minor quibbles I have are the inclusion of the C# primer in the appendix, I feel this has been used to pad out the book. The book is short for this sort of subject (at around 470ish pages), but I count that as a positive. Also I'd like to see a few more common patterns and practices included and given the same treatment relating to examples are guidance on when to use (maybe we need a 2nd book).
I thoroughly recommended this book, don't be put off by the 'Enterprise' in the title, this book is not dry and should be on any developers bookshelf who wants to improve and advance their code.
Chapter 2 introduces you to "enterprise code" and shows you how to design loosely coupled classes (by programming against interfaces instead of concrete classes). This in turn prepares your design for Unit Testing and Inversion of Control, two of the main themes of the book.
In the section The New Code - Changing the Way you Build things start to get more concrete. You see how to change an existing design with many dependencies and tightly coupled classes and refactor it into a more flexible design using interfaces and smart constructors that accept other interface types that are used internally. This manual form of dependency injection lays a nice foundation for Chapter 5 that deals with Inversion of Control / Dependency Injection. But first chapter 4 teaches you how to deploy Test Driven Development in your development strategy. It's an excellent chapter that shows you many best practices for TDD, shows how to use third party tools for TDD (NUnit in particular and a plugin to run NUnit from within Visual Studio), how to design for testability and how to use the many refactoring options that are available inside Visual Studio or through external, commercial tools.
If you're new to Unit Testing and TDD, this chapter may be a bit overwhelming at first, and you may want to read it twice. You're also advised to follow along with all the chapter's code in Visual Studio as I know from experience that actually seeing code run can greatly improve your understanding of it. The only problem I had with this chapter was with mocking. The authors do a great job at explaining how to use mocking to make testing easier, quicker and more reliable by abstracting away a lot of behavior in dummy (mock) classes. However, if you're new to this, you may take this too far and mock everything which in the end means you're testing nothing but your mock classes. It would have been nice if the authors had dug a little deeper in the decision process of what to mock and when, and how to combine unit testing with mocks on the one hand with integration tests using concrete classes on the other hand. While it's nice and useful to mock a lot of your code, there is a time where you really need tests that access your database. You need a way to ensure your database is accessible, your tables are setup as expected and your stored procedures align with your own code and the assumptions you have about them. You can't do this with Unit Testing alone as it would unnecessarily slow down your tests. Integration testing is very important, especially in Enterprise type of applications. More attention to integration testing and how to separate them from your unit tests would have made this chapter even more useful.
Chapter 5 shows you the Inversion of Control, or Dependency Injection principles. Building on the stuff you learned in earlier chapters, you see how to implement IoC using a number of different techniques, including an open source project called Structuremap.
Chapters 6 and 7 deal with middleware. You'll learn more about tiered designs, Service Oriented Architectures and WCF. You'll also find a discussion of a number of "persistence patterns", including Transaction Script, Active Record and the Domain Model pattern. While these two chapters contain a lot of useful information, I don't think two chapters are enough for this topic. In my opinion, this middleware layer is at the heart of your enterprise design. It's here where you make decisions that influence the design and flexibility of your application. I would have loved to see topics like Domain Driven Development and the design principles behind it in much more detail.
In Chapter 8 you learn a lot about data access layers and see frameworks such as LINQ to SQL, Entities Framework and NHybernate at work. You get an excellent introduction to each of these technologies, allowing you to compare them and make up your own mind about these frameworks. Again, I would have loved to see some more depth. It would have been nice to see a real Enterprise example of, say, the repository pattern as a layer on top of EF. Many examples show you how to use small, focused repositories often targeting a single entity. However, in practice I often find that having a single repository spanning multiple entities is a lot easier to work with. The book could have helped you with these design decisions by providing and describing a more detailed implementation of repositories using EF or NHybernate in an Enterprise application.
Chapters 9, 10 and 11 introduce you to the User Interface and to patterns such as MVP and MVC; two separate design patterns to separate the front end of your application from the model and your logic. Each topic only gets a single chapter, so you'll probably want to look at other books (such as Professional ASP.NET MVC 1.0 and Pro ASP.NET MVC Framework) as well if you want to dig real deep into these technologies. I still haven't made up my mind if I like the inclusion of both patterns. Clearly, it's great to see both discussed so you can choose a pattern that best suits your needs and development style. However, the two topics are competing for space which inevitably leads to less detail on each topic.
The last chapter in the book serves as a short summary and overview of what you learned throughout the book.
All in all, I think that Professional Enterprise .NET is well worth reading. Whether you're an intermediate developer looking to learn more about design, or a seasoned software designer looking for tips and ideas to improve your own designs (or maybe just looking for a confirmation of your own design decisions), you'll find valuable information in this book. I especially like the chapters on Unit Testing / TDD and Inversion of Control. I also liked the many pointers to open source applications (Structuremap, NHybernate, NUnit and more) and the instructions on acquiring and using them.
I give the book 4,5 stars out of 5. I would have given it 5 stars if it had dug deeper into integration tests and had given more Enterprise examples of repositories on top of your persistence framework.
Beyond knowing the programming language, this book is much more about what you do with that programming language. It's about the philosophy of writing code that fits into a large company environment. You wouldn't expect to run a company the size of General Motors using Microsoft Access. Nor should you expect that the complex environment in which large enterprises operate should be able to get by with a program that someone designed in an afternoon.
The coding aspects of this book expose you to a whole range of development tools and concepts that have unfamiliar TLA's (that's three letter acronyms) like MVC, MVP, TDD. To the Microsoft professional who is moving upscale to the enterprise level, this book presents the concepts that you'll need to know. It isn't light reading, but it does expose you to what's happening at the forefront of enterprise architecture.
There are high level descriptions, clear explanations of what we're trying to do, and concise examples of code implementing the ideas. Its so well laid out it seems like magic.
I think its a rare combination to find a book with as much technical detail, yet its written and edited like a pro!
I highly recommend you check it out!
There is nothing more frustrating than reading complex topics that are poorly written. This book sets an excellent standard.
From the very beginning, the subject of Enterprise is wonderfully introduced and leads us to concrete examples of design patterns.
Each chapter is writted just as rich covering class emancipation, TDD, middleware, data layer, front end, MVP, MVC pattern.
This book is great for those new to Enterprise development but a solid understanding of C # will make it easier/quicker to comprehend. The C # primer supplied at the end comes in handy as a refresher.
My only wish is that all the examples were part of one project but then again, it's not a step-by-step book. I give this book 5 stars.
Look for similar items by category
- Books > Computers & Technology > Microsoft > Development > .NET
- Books > Computers & Technology > Programming > Languages & Tools > C#
- Books > Computers & Technology > Programming > Software Design, Testing & Engineering > Software Development
- Books > Textbooks > Computer Science & Information Systems > Programming Languages
- Books > Textbooks > Computer Science & Information Systems > Software Design & Engineering