31,19 €
ASP.NET 3.5 is equipped with a built-in security system, standard design templates, and easy configurations for database connections, which make it the ideal language for building a content management system. With the strong community support for the ASP.NET platform, you can be assured that what you write today will be around and supported for years to come. You can imagine how easy it is to get lost in the myriad features especially if you are a newcomer.
This book shows you how to make use of ASP.NET's features and create a functional Content Management System quickly and conveniently. You will learn how to build your site and see the different ways in which you can customize your code to fit your needs. With this book in hand, you can easily set up users and groups, create valuable content for your users, and manage the layout of your site efficiently. All you need is a basic understanding of coding and a desire to learn, and this book will take care of the rest.
This book will teach you to get your site up and running quickly, and maintain its content even if you have little or no web design or programming experience. It will give you all the knowledge you need to use the tools as well as the code required to make yourself a strong developer far beyond your site. It begins with setting up your programming environment and coding a Content Management System. You will learn how to install and configure a database and connect it to your CMS. You will be able to create content and manage the layout of your site, and also make it available beyond the browser. At the end of this book, you will have designed and built a CMS that allows you to administer an Articles section, Images and Files sections, as well as a full set of Administrator tools for your site.
Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:
Seitenzahl: 335
Veröffentlichungsjahr: 2009
Copyright © 2009 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author(s), Packt Publishing, nor its dealers or distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: June 2009
Production Reference: 1190609
Published by Packt Publishing Ltd.
32 Lincoln Road
Olton
Birmingham, B27 6PA, UK.
ISBN 978-1-847193-61-2
www.packtpub.com
Cover Image by Vinayak Chittar (<[email protected]>)
Authors
Curt Christianson
Jeff Cochran
Reviewers
Jerry L. Spohn
Brigida Ivan
Acquisition Editor
James Lumsden
Development Editor
Dilip Venkatesh
Technical Editors
Gaurav Datar
Shadab Khan
Editorial Team Leader
Gagandeep Singh
Project Team Leader
Priya Mukherji
Project Coordinator
Leena Purkait
Proofreader
Sandra Hopper
Indexer
Rekha Nair
Production Coordinator
Dolly Dasilva
Cover Work
Dolly Dasilva
Curt Christianson has been involved in the tech community since the mid 1990's and has been a professional developer for more than a decade. He is an active community contributor on the ASP.NET forums, as well as a Forum Moderator. He has won six Microsoft Most Valuable Professional (MVP) awards for his work with ASP/ASP.NET. He is writing a number of open source add-ins and starter kits. He is based in Wisconsin, U.S.A. as a professional developer, as well as contributing to books and articles, both printed and on the Internet.
Curt is in the process of entering into the life of a married man—thanks to his better half Jessyca. They plan on settling down with lots of little ones running around.
Jeff Cochran is a Senior Network Specialist for the City of Naples, Florida. A large part of his job includes web design and coding, as well as web server management. Jeff has nearly two decades of experience with the Internet, having started one of the first Internet Service Providers in Southwest Florida, and has worked with Windows and Unix-based web servers. Now primarily concentrating on Windows technologies, Jeff has been a Microsoft MVP for Microsoft's Internet Information Server for nearly a decade, and is active in the ASP Classic and ASP.NET communities as well.
Jeff has been married for twenty years to Zina, a graphic designer and, according to most accounts, the driving force that keeps him focused on… Oh look—A Pony! In the off-hours, Jeff and Zina spend much of their time remodeling a 1950's bungalow in Naples, Florida, trying to keep the rain out and the cats in. Jeff also has a long-term addiction to classic pinball machines, tropical fish, and off-road vehicles, all of which compete with home repairs for a share of his income.
Jerry L. Spohn is a Manager of Development for a medium-sized software development firm in Exton, Pennsylvania. His responsibilities include: managing a team of developers, and assisting in architecting a large, multilingual, multi-currency loan account system, written in COBOL and Java. He is also responsible for maintaining and tracking a system-wide program and database documentation web site, for which he uses DotNetNuke as the portal.
Jerry is also the owner of Spohn Software LLC., a small consulting firm that helps small businesses in the area with all aspects of maintaining and improving their business processes. This includes helping with the creation and maintenance of web sites, general office productivity issues, and computer purchasing and networking. Spohn Software, as a firm, prefers to teach their clients how to solve their problems internally, rather than require a long-term contract, thereby making the business more productive and profitable in the future.
Jerry currently works and resides in Pennsylvania. He enjoys spending time with his two sons, Nicholas and Nolan.
ASP.NET Content Management Systems are often at the heart of many businesses and customer interfaces. They help you to maintain and update content on a web site, even if you have little or no web design or programming experience. Imagine how great you'll feel when you have all the knowledge to get your site up and running quickly and also extend it into the future.
This book walks you through the creation of a functional Content Management System using the ASP.NET programming language. You will learn how to build your site in a number of ways, allowing customization. You can set up users and groups, create valuable content for your users, and manage the layout of your site efficiently when you have this book in hand.
Chapter 1 covers planning and building your first Content Management System.
Chapter 2 is about how to replace the file-based system with a database version. It also explores SqlDataSource, and using SQL Server 2005 Express as a source for data in our application.
Chapter 3 covers Content Management System architecture. It helps us build the database, a data access layer, a business logic layer, and a presentation layer for our Content Management System.
Chapter 4 discusses how to configure ASP.NET forms authentication, along with how to provide controls for users to log in, as well as ways to secure the content displayed on the pages.
Chapter 5 covers the basics of how to display your articles, how to create them, and how you may want to extend them.
Chapter 6 covers the concepts of why we lay out the site in a particular way, as well as beginning to help us understand all the pieces involved in this process.
Chapter 7 discusses a great deal about dynamically providing content to the users. It explores streaming files and images from the database, as well as generating RSS feeds "on the fly".
Chapter 8 covers maintaining users, adjusting permissions, approving Articles, and viewing site settings and stats—all key aspects of the Control Panel, which could be called the "brain" of any CMS.
Chapter 9 discusses a few additional options such as upsizing SQL server, using base pages and inheritance, and so on that may help extend a CMS.
This book is for beginning to intermediate ASP.NET users, who have managed to learn Visual Web Developer and want to take on their first real world application. It will help those who have used SQL Server Express, completed a few sample projects, and who now wish to explore a Content Management System.
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply drop an email to <[email protected]>, and mention the book title in the subject of your message.
If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or email <[email protected]>.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Visit http://www.packtpub.com/files/code/3612_Code.zip to directly download the example code.
The downloadable files contain instructions on how to use them.
Although we have taken every care to ensure the accuracy of our contents, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in text or code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration, and help us to improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the let us know link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata added to any list of existing errata. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.
Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works in any form on the Internet, please provide us with the location address or web site name immediately so that we can pursue a remedy.
Please contact us at <[email protected]> with a link to the suspected pirated material.
We appreciate your help in protecting our authors, and our ability to bring you valuable content.
You can contact us at <[email protected]> if you are having a problem with any aspect of the book, and we will do our best to address it.
Welcome, and thank you for picking up this book. The purpose of this book is to walk through the creation of a basic Content Management System using the ASP.NET programming language. During the course of this book you will learn:
This book assumes that you know how to create a basic application in ASP.NET 2.0 using Visual Web Developer and deploy it on an IIS web server. You should also have a basic programming knowledge and you should have worked at least a little with a database. We'll be using both the SQL Server 2005 Express and Visual Web Developer, available free of cost from Microsoft.
In this chapter, we'll cover some basic needs such as setting up your programming environment, and some basic background. You'll need to know about Content Management Systems. We'll also jump right into coding a basic Content Management System, and then step back to analyze what work we've done and why we've done it.
By the end of this chapter, you should be able to:
So, let's get going.
A Content Management System or CMS sounds like an easily defined subject. It's obviously a system to manage content. But what is content, and how do you manage it? And what is managing in the first place? These very basic questions don't have basic answers, and in many cases, the answer depends on who you are and what you need.
For example, a medical facility such as a hospital or clinic has plenty of content, including patient records, billing information, instruction manuals for equipment, employment records, press releases, employee newsletters, photos of the facility, material safety data sheets for chemicals used, shipping and receiving documents, vehicle registrations, medical licenses, email, training videos, contracts, letters to donors, x-rays, and just about everything else you can think of. All are content. Most of it needs to be managed. But is it all worth having a CMS for?
Of course not. Email is best kept with an email archiving system, which is itself a specialized type of content management. Instruction manuals might use a Content Management System, called a file cabinet, which predates computers. And employee newsletters may simply be printed and forgotten. But all of this content could potentially qualify for a Content Management System.
So, how do we narrow and define content? In our situation, we're going to narrow the content by defining the type of Content Management System we're going to build—a Web Content Management System. Web content consists of anything you might want to put on a web site, mostly text and images.
Web Content Management Systems are designed to allow users with little or no web design or programming experience to maintain and update content on a web site. They often provide a What You See Is What You Get (WYSIWYG) editor for the content, along with security for granting access to update or delete content, and some kind of workflow management for the content. Workflow management may include entry, approval, and publishing steps so that a user can enter new content. However, another level of security is required to approve and publish that content. Content is often dated, sometimes with an expiration date, and reusable on other pages of the site.
The site itself is usually templated in some manner, separating content from the presentation layer of the CMS, and the coding for the site is hidden from the users. In this setup, a programmer would create the application and provide enhancements to it, a designer would create the look and feel, and content authors and editors would work solely with the content to be displayed.
In many cases, there may be restricted content, viewable by only a specific class of users, and there would be a user management system to handle the creation of users and assignment of permissions. There will normally be some sort of navigation mechanism, and a search mechanism would make retrieving content easier for the end user. For a Content Management System to be useful, content should be dynamic, and should be displayed to specific users, based on specific queries or navigation choices.
A CMS is not necessarily a portal, a community site, a group of forums, or an e-commerce site. While these sites will often have content management as part of their functionality, they are not part of a CMS by default. On the other hand, blogs are purely content management—articles and comments are the content, and it's only the fact that the template creates a blog style which makes them a blog. There's really no difference between an online newspaper and a blog, or a site full of product documentation. All of them have specific content, whether articles, blog posts, or documents, which needs to be managed.
Over the course of this book, we will develop a Web Content Management System, and we'll use the acronym CMS for this. We'll program a basic content system based on articles, along with workflow for the process. This will require a user security system, based on membership of groups that are allowed to perform certain tasks, and we'll add a template system to provide for the layout of the pages separate from the content. We'll use ASP.NET, Visual Web Developer, and SQL Server 2005 Express as our environment, although you should feel free to use tools you are comfortable with, provided they are compatible.
Why should we choose ASP.NET? There are plenty of suitable programming languages and frameworks, including PHP, Ruby on Rails, Java, and even Classic ASP, which would work fine. Content Management Systems have been developed in pretty much every language and technology ever developed for computer systems, and you might even be more familiar with them than you are with ASP.NET.
ASP.NET, specifically ASP.NET 2.0, has some definite advantages for developing a Content Management System quickly and conveniently. A security system, complete with membership features, is already part of the framework, and so are standard design templates in the form of master pages. Easy configurations for database connections and controls for displaying the data are built in, and by using Visual Web Developer (or Visual Studio) we can take advantage of rapid development techniques to speed up our time to deploying a usable application.
ASP.NET 2.0, as well as the extensions to it (curiously named ASP.NET 3.0 and ASP.NET 3.5), is not a programming language, but a framework to develop applications within. ASP.NET is language independent. You can use any language that supports the ASP.NET framework, but for our application we will use Visual Basic .NET. Visual Basic is a simple, forgiving language that is easy to follow in code and has been used for hundreds of millions of lines of code in web applications around the world. If you feel comfortable translating VB to C#, please feel free to follow along in the language of your choice. Compiled application code resulting in Dynamic Link Libraries (DLLs) can be accessed by any language, meaning we could program in both VB and C# for separate parts of the application, but that would make this book harder to follow.
ASP.NET 2.0 introduced membership and profiles to create users, assign security roles, and provide for authentication and validation of security credentials, all within the ASP.NET framework. This means developers don't have to build an authentication system for applications (unless they want to), and accounts can be protected by one-way hashed passwords, while allowing a simple assignment of access and authority to application pages.
Until the release of ASP.NET 2.0, developers were left to craft their own security system for their applications, including user management functions such as assigning and changing passwords. Add to it the functionality provided by roles in ASP.NET, and an entire security and authentication system for a site can be built with mouse clicks. User profiles are icing on the cake, allowing administrators and users to control their online profile, which can be easily integrated into an application.
ASP.NET 2.0 introduced the concepts of Master Pages and Themes to help in designing a consistent look and feel to the pages throughout a web application. Master Pages contain common elements, including menus, controls, and graphics, which are displayed on all pages. Content pages contain the individual content that changes on a web page, and are merged with the Master Page when ASP.NET renders the final HTML to the browser.
Master Pages contain ContentPlaceHolders where dynamic content is injected when the page is rendered. A browser requests the content page, which has a declaration for the Master Page, and ASP.NET places the content defined on the content page into appropriate content place holders on the Master Page. The result is that should you want to change the look and feel of your site, you change the Master Page once for your application without touching the content pages. This allows for very simple styling by designers without the need for them to touch the underlying code or having to edit any content to change the look.
ASP.NET 2.0 also introduced Themes, which can be used to alter the look of a site, including controls used on the site. Themes are a combination of control skins (.skin files), style sheets (CSS), and graphics that are applied as a group to a page, site, or even an entire server. Even more than with Master Pages, which require at least minimal ASP.NET programming to use, designers can create themes that can be used on a site to alter the look and feel, without touching any other files on the system.
Microsoft has done the programming community a disservice in the numbering of ASP.NET versions. ASP.NET 1.0 was the first version released to the public, and was upgraded to a 1.1 version. The next release, ASP.NET 2.0, was an entirely new framework with many enhancements, including Master Pages and membership that are important to our application in this book. ASP.NET 2.0 also included data access and display controls, as well as navigation controls, which we will use.
ASP.NET 3.0 added the Windows Presentation Foundation (WPF) and Windows Communication Foundation (WCF), but used the same ASP.NET 2.0 framework to run these extensions. ASP.NET 3.5 added AJAX and LINQ, but still just extended the 2.0 framework. So, ASP.NET 3.5 is really ASP.NET 2.0 with "extra stuff" that makes the framework more usable, but it doesn't really change the framework. Microsoft would have been better off numbering these as ASP.NET 2.1 and 2.2 to avoid confusion in the community, but we're stuck with the confusing numbering for now. Microsoft does have some logic in changing its numbering, but it makes sense mostly to the marketing folks and not programmers.
For this book, we will use ASP.NET 3.5—partly because it's the most current and default version for Visual Web Developer 2008 and also because it adds some functionality that we'll be using later. LINQ (Language Integrated Query) provides a uniform query language to access any data source, treating the data as an object and making the application extremely extensible to third-party data sources. We'll use LINQ to SQL for a portion of our application.
ASP.NET 3.5 also provides some new data display options such as ListView and Datapager, and provides much better support for nested Master Pages than earlier versions. AJAX, included in ASP.NET 3.5, also allows for a richer user experience, though we won't be making use of it in our basic application.
