Perl在电子商务平台的主要应用_[完整版]_第1页
Perl在电子商务平台的主要应用_[完整版]_第2页
Perl在电子商务平台的主要应用_[完整版]_第3页
Perl在电子商务平台的主要应用_[完整版]_第4页
Perl在电子商务平台的主要应用_[完整版]_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、perl在电了商务平台的主耍应用演讲者:james zhengemail: jamesperlc简 介:來白成都.服务于一家美国公司,止在从事基于oracle + perl +catalyst + mason的屯子商务平台开发,欢迎更多优秀的工程师加到我们的队伍屮来目录一、我们的系统结构二、平台、语言、框架及其它相关的三、perl在我们体系的全而应用四、我们的团队(与perl无关或有关)五、讨论(如果有多的吋间或邮件给我)一、我们的系统结构二、平台、语言、框架及其它相关的redhat linuxperlmason/ catalystapache/mod_perloracle/m

2、ysqlhtml/xhtml/ajaxpostfix/memcached/mogilefs三、perl在我们体系的全血应用1、web及邮件应用开发(这次主要讨论的)2、数据维护与备份等方面(下次聚会)3、服务器监控与同步方面(下次聚会)4、支付及信用卡处理方而(下次聚会)5、其它更多(例如dns维护,志处理,内部管理等)(卜次聚会)什么是mason?mason是一种组建化开发的框架式结构,其专门为大型商务类网站所设计。 在其官方网站称为“嵌入perl语言到html的模板技术”,但似乎在这里除了基 本的语法同perl 一样外,已经完全不是那种顺序型解析的页而语言了。mason 主页:http:/

3、.masonhq3></a>/mailinglists: http:/.masonhq/?mailinglists3.1.1、当前我们mason项目网站的主要框图3.1.2、mason页而部分autohandler#所有止常访问都被先执彳亍口动处理器dhandler#所冇错误访问都被执行mason_data #被编译的mason数据mason的处理(redirect /cache/global/内存处理session/持续性的数据库连接 或数据库连接池/深入mason的运行方式/非顺序化编译的mason)mason的处理redirect $r-&gt;redirect

4、( “next.jsp”);这个吋候客户端是不会发现被跳转的, 实际内部已经发生了变化。cache在mason当中可以把数组或变量成为cache并且可以设置有效期。global变量 可以被注册到内存屮让所冇mason组建共享,这就是全局变量。内 存处理session 持续性的数据库连接或数据库连接池,使用mod_perl的 apache:dbi模块可以轻松实现持续性的数据库连接。深入mason的运行方式,mason在执行的时候首先由apache交给mason的 模块进行分析编译。之后会把你的组建编译成为mod perl模块并且存储在mason data fl录中,而服务器真正执行的是注册在内存

5、中的mason modules來 运行的。 非顺序化编译的mason ,与目前大部分的网页处理技术不同。mason 对代码的处理不是顺序性的.catalyst是什么?catalyst是一个优雅的web应用框架,极为灵活又特别简单。它类似于rubyon rails、java 的 spring 和 maypole (原来就基于 maypole 建立)。建议您多去p学习更多的知识catalyst: / http:/.mailinglists: ccataly

6、st &gt; some numbers10 engines (apache,fastcgi,standalone +)8 models (cdbi,tangram,dbic, xapian +)6 supported views ( rcmasonh込petal +)48 plugins in trunk (session, forms, cache +)16,539 total physical source lines of code (catalyst trunk)445 tests1077 committed revisions50% chance gabbana is dr

7、unkcatalyst -flow (我们正在开发中,欢迎更多有兴趣在这个加入我们的团队).catalystf/ catalyst优势(我们正在开发屮,欢迎更多有兴趣在这个加入我们的团 队)在整个perl web应用方而的优势(前而己经的some numbers里讲过).2.在我们体系里的优势.1) 友好的分开每个层次,让不同的工程师尽可能的做最专注的事.2) 我们的业务每天都在随着用户的要求不断变化,通过这个后我们可 以做尽可能少的改变,减少bug发生的机会.3)在这个catalyst里,出于可以很方便的增加插件(它已经冇很多够用的 插件),方便于我们扩

8、展更大的市场.catalyst介绍(我们正在开发中,欢迎更多有兴趣在这个加入我们的i才i队) catalyst介绍(catalyst是一个优雅的web应用框架,极为灵活又特别简单)1、mvcmodel模型 存取和修改数据内容。class:dbk plucene> net:ldap等 5></a><b style=,color:white;background-color:#880000'>view 视图向用户展示内容。template toolkits mason、html:template 等controller控制器控制整个请求阶段、检杳参数、派

9、发动作、流程控制。 也就是catalyst!2. 灵活性多模型、视图和控制可重用组件无限制url-to-action调度对 cgi、mod_perk apache:request 的支持3 简洁性搭积木似的接口自动发现组件常用模块对应的预定义组件内建测试框架helper scripts简单的开始install$ perl mcpan -e &#039;install bundle:catalyst&#039;setup$ catalyst.pl myapp$ cd myapp$ script/myapp_create.pi controller library:loginrun

10、$ script/myapp_server.pl现在可以用你喜欢的浏览器或者代理程序來访问卜 面的地址來检查catalyst的运行状况:http:/localhost:3000/http:/localhost:3000/library/login/catalyst工作原理&gt;应用类在模板、视图和控制组件以外还有一个代表你的应用的类。在这个类里面可 以配置应用、加载插件、定义应用级的动作、扩展catalystopackage myapp;use strict;use catalyst qw/-debug/;myapp-&gt;config(name 二&gt; &am

11、p;#039;my application&#039;,root 二&gt; &#039;/home/joeuser/myapp/root&#039;,# you can put anything else you want in here:my_configuration_variable =&gt; &#039;something&#039;,);sub default: private my ( $self, $context) = _;$context-&gt;response&gt;output(&#03

12、9;catalyst rockz!&#039;);1;对大多数应用来说,catalyst只要求你定义两个配置参数:name,应用的名字。root,模板文件、图片或者其他静态数据所在的路径。catalyst工作原理&gt;语境($c)catalyst自动把context对象“赐”给你的应用类,这样整个应用里都能访 问。context不但用来和catalyst打交道,也能把应用的components联系起 來。(比如想要在template toolkit模板里面使用context,貝要这样: &lt;hl&gt;welcome to %

13、%!&lt;/hl&gt;)context包含了几个重要的对彖catalyst:request($c-&gt;req )请求对象包含了各种请求相关信息,例如查询 参数、cookie、上传内容、头信息等等。catalyst:response($c-&gt;res )响应对象有点类似请求对象,但是只包含响 应相关的信息。catalyst:config 配置信息catalyst:log 日志信息stash,是特别设立出來在应用的各组件之间共享数据的哈希表(注意stash 只能在每次请求周期内传递数据,对新的请求它会被清空。如果你需要更加持久 的数据,请使用sessio

14、n )catalyst工作原理&gt;动作(行为)catalyst控制器是由动作來定义的。动作是一个带有属性的了程,支持几类 动作:1.literal 字面动作 sub bar : path(&#039;foo/bar&#039;) 仅仅匹配 http:/localhost:3000/foo/bar。2正则匹配动作(regex) sub bar: regex( <aitem(d+)/order(d+)$, )匹配任 何符合动作模式的 url 如 http:/localhost:3000/item23/order42。3顶级动作 package myapp; sub

15、 foo : global 匹配http:/localhost:3000/foo。函数名字直接匹配在url的基础部分后面。4. 名字空间为前缀的动作 package myapp:c:my:controller; sub foo : local 匹配t* http:/localhost:3000/my/controller/foo。这个动作类型匹配的 url 必须 带有组件的类名(包名)相应的前缀。5. 私有动作sub foo : private 不匹配url,也不可以被相应的正则匹配的 url的请求来调用。私有的动作只能在catalyst应用内部通过forward方法来 调用:内建私有动作de

16、fault: private这个动作在没有其他的动作匹配的时候调用。可以用来显示 一个主应用的通用首页,或者某个控制器的错误页面。begin : private在请求的开始被调用,在任何匹配的动作z前被调用。end : private在请求的最后(所有的动作z后)被调用。url路径处理,可以把url路径的一部分作为可变参数来传递。sub boo :path(&#039;foo/boo&#039;) . sub hoo : path(&#039;foo/boo/hoo&#039;) .参数处理,在url查询吊里面传递的参数用catalyst:request类的方法

17、來 处理。它的param方法和cgi.pm里面的param方法冇相同的功能。流程控制,用forward方法来控制应用流程,它按照传递给它的动作键来执 行。这可能是同一个或者不同的catalyst控制器屮的动作,或者是一个类名(有 可能带一个方法名)。在forward结束后,控制会返回到发起forward的方法。catalyst工作原理&gt;组件catalyst有个非同寻常的灵活的组件系统。你可以自由的定义任意数量的models> views、controllers<>所有的组件都必须继承于catalyst:base,它提供简单的类结构和通用类方 法如config和n

18、ew (构造器)。package myapp:c:catalog;use strict;use base &#039;catalyst:base&#039;_package_-&gt;config( foo 二&gt; &#039;bar&#039;);1;catalyst 工作原理-&gt;views视图,为要展示如何定义视图,我们要用代表template toolkit的基类 catalyst:<b style='color:white;background-color:#880000'>view:tto

19、我们需要做的 只是继承这个类:package myapp:v:tt;use strict;usebase& #039;catalyst:<bstyle='color:white;background-color:#880000'>view:tt&#039;1;(还可以用辅助脚本来口动生成这个:script/myapp_create.pl <b style='color:white;background-color:#880000'>view tt tt 这里第一个 tt 告诉脚 木创建一个template toolkit视

20、图,第二个tt告诉脚本它将被命名为tt。)这 就产生 了一个 process()方 法,因此 可以用 $c-&gt;forward(&#039;myapp:v:tt&#039;)来套用模板。基类已经提供了 process()方法,因此不用再说 $c&gt;forward(qw/myapp:v:tt process/)t osub hello : global my ( $self, $c ) = _;$c & gt;stash-&gt;template = & #039;hello.tt&#039;my ( $self, $c )

21、 = _;$c&gt;forwa rd(&#039; myapp: :v:tt&#039;);通常总是在请求的末尾来套用模板,因此使用全局的end动作来完成是最 好的。catalyst 工作原理-&gt;models我们还是使用现存的基类。这次是catalyst:model:cdbi代表的class:dblpackage myapp:m:cdbi;use strict;use base &#039;catalyst:model:cdbi&#039;_package_-&gt;config(dsn二&gt; &#039;db

22、i:sqlite:/tmp/myapp.db&#039;,relati on ships =&gt; 1);1;catalyst会门动载入表结构和关系。用stash来传递数据给模板。package myapp;use strict;use catalyst &#039;-debug&#039;_package_&gt;config(name 二&gt; &#039;my application&#039;,root 二&gt; &#039;/home/joeuser/myapp/root&#039;);_packag e_&gt;setu p;my ( $self, $c ) = _;$c&gt;stash-&gt;template | |= &#039;index.tt&#039;$c & gt;forward(&#039;myapp:v:tt&#039;);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论