Commit | Line | Data |
aa2b0d97 |
1 | =head1 NAME |
2 | |
3 | Catalyst::Manual::About - Basic explanation of Catalyst |
4 | |
5 | =head1 DESCRIPTION |
6 | |
7 | This document is a basic introduction to the I<why> of Catalyst. It does |
8 | not teach you how to write Catalyst applications; for an introduction to |
9 | that please see L<Catalyst::Manual::Intro>. Rather, it explains the |
10 | basics of what Catalyst is typically used for, and why you might want |
11 | to use Catalyst to build your applications. |
12 | |
13 | =head2 What is Catalyst? The short summary |
14 | |
15 | Catalyst is a web application framework. This means that you use it to |
16 | help build applications that run on the web, or that run using protocols |
17 | used for the web. Catalyst is designed to make it easy to manage the |
18 | various tasks you need to do to run an application on the web, either by |
19 | doing them itself, or by letting you "plug in" existing Perl modules |
20 | that do what you need. There are a number of things you typically do |
21 | with a web application, for example: |
22 | |
23 | =over 4 |
24 | |
25 | =item * Interact with a web server |
26 | |
27 | If you're on the web, you're relying on a web server, a program that |
28 | sends files over the web. There are a number of these, and your |
29 | application has to do the right thing to make sure that your data works |
30 | with the web server you're using. If you change your web server, you |
31 | don't want to have to rewrite your entire application to work with the |
32 | new one. |
33 | |
34 | =item * Do something based on a URI |
35 | |
36 | So that C<http://www.mysite.com/catalog/view/23> will go to a "view" of |
37 | item 23 in your catalog, and C<http://www.mysite.com/order_status/7582> |
38 | will display the status of order 7582, and |
39 | C<http://www.mysite.com/add_comment/?page=8> will display a form to add |
40 | a comment to page 8. |
41 | |
42 | =item * Interact with a data store |
43 | |
44 | You probably use a database to keep track of your information. Your |
45 | application needs an easy way to interact with your database, so you can |
46 | create, edit, and retrieve your data. |
47 | |
48 | =item * Handle forms |
49 | |
50 | When a user submits a form, you process it, and make sure it's been |
51 | filled in properly, and then then do something based on the |
52 | result--submitting an order, updating a record, sending e-mail, or going |
53 | back to the form if there's an error. |
54 | |
55 | =item * Display results |
56 | |
57 | You have an application running on the web, people need to see |
58 | things. You usually want to display things on a web browser; you will |
59 | probably be using a template system to help generate HTML code; you |
60 | might need other kinds of display, such as PDF files or RSS feeds. |
61 | |
62 | =item * Manage users |
63 | |
64 | You might need the concept of a "user", someone who's allowed to use |
65 | your system, and is allowed to do certain things only. Perhaps normal |
66 | users can only view or modify their own information; administrative |
67 | users can view or modify anything; normal users can only order items for |
68 | their own account; normal users can view things but not modify them; |
69 | order-processing users can send records to a different part of the |
70 | system; and so forth. You need a way of ensuring that people are who |
71 | they say they are, and that people only do the things they're allowed to |
72 | do. |
73 | |
74 | =item * Develop the application itself |
75 | |
76 | When you're writing or modifying the application, you want to have |
77 | access to detailed logs of what it is doing. You want to be able to |
78 | write tests to ensure that it does what it's supposed to, and that new |
79 | changes don't break the existing code. |
80 | |
81 | =back |
82 | |
83 | Catalyst makes it easy to do all of these tasks, and many more. It is |
84 | extremely flexible in terms of what it allows you to do, and very fast. |
85 | It has a very large number of "plugins" that interact with existing Perl |
86 | modules so that you can easily using them from within your application. |
87 | |
88 | =head3 What B<isn't> Catalyst? |
89 | |
90 | Catalyst is not an out-of-the-box solution that allows you to set up a |
91 | complete working e-commerce application in ten minutes. (There are, |
92 | however, several systems built on top of Catalyst that can get you very |
93 | close to a working app.) It is not designed for end users, but for |
94 | working programmers. |
95 | |
96 | =head2 Some background |
97 | |
98 | =head2 The MVC pattern |
99 | |
100 | =head1 AUTHOR |
101 | |
102 | Jesse Sheidlower, C<jester@panix.com> |
103 | |
104 | =head1 SEE ALSO |
105 | |
106 | L<Catalyst>, L<Catalyst::Manual::Intro> |
107 | |
108 | =head1 COPYRIGHT |
109 | |
110 | This program is free software, you can redistribute it and/or modify it |
111 | under the same terms as Perl itself. |