一、准备工作

我们将创建一个下载app,这个app的功能就是提供在线文件下载。源码请到此处下载http://www.wojilu.com/Forum1/Topic/237

为这个新的 app 创建一个类库项目

然后在项目中手工建立 Controller, Domain, views 三个文件夹。
因为这是一个简单的项目,所以,没有必要进行严格的分层,我们采用充血模型方式开发(详见:http://www.wojilu.com/Forum1/Topic/167 )。
因而你在项目中没有必要建立 Service 文件夹。

然后,右键在项目上打开属性,在生成事件->“生成后事件”中添加如下脚本:
xcopy /s /y "$(ProjectDir)views\Download" "$(SolutionDir)wojilu.Web\f ramework\v iews\Download"
这一步,是为了让新建的项目中的视图在每次编译之后,能自动复制到网站views目录下的Download里面(如果Download目录不存在,请先创建)

【补充1】
项目所在路径不要有空格;

关于“生成后事件”请参考:http://msdn.microsoft.com/zh-cn/library/aa833259(VS.90).aspx 

关于xcopy命令,请在命令行下输入 xcopy /? 查看详情


【补充2】

有时候在手动输入的时候,往往多了一个换行,所以报错。请依照下面步骤:

a)请点击下图中的“编辑生成后事件”

b)在出现下图窗口中,拖拉弹窗的右下角,把这个编辑框拉大

c)这样编辑窗口就很大了,你可以检查脚本中有没有多出不必要的换行

【补充3】
如果出现“命令***已退出”的错误,请检查目标文件夹是否已经存在,比如这里的 wojilu.Web/framework/views/Download 文件夹,如果不存在,请先创建这个文件夹


二、建立 app 的领域模型

请在 domain 文件夹下,建立这个app的领域模型:DownloadApp
注意:
1)每个app的模型的命名,都必须符合“以App结尾”的约定(请参考《约定优于配置》一文);
2)都必须实现 IApp 接口


文件夹下的其他领域对象,先不要管,下面再说。

、app的入口

每个程序总有入口,正如一个控制台程序要有一个 main 方法,网站要有一个 index 或 default 页面。在 “我记录网站综合系统” 这个平台上,每个 app 也要有入口。一个最简单的程序,一般至少要有两个入口,1)是前台显示入口 2)是后台管理入口

如下是 “模板下载” app 的前台显示:


如下是 “下载” app 的后台管理


对于博客、相册等程序,因为是给用户使用,所以除了 1)用户展示 2)用户数据管理 两个入口之外,还有另外两个入口:

一是所有用户的数据聚合显示入口,如下图的“图片”频道:


二是网站后台对所有用户的图片集中管理入口:

总结一下,对于博客等用户程序,要有4个入口:1)用户展示入口 2)用户后台入口 3)聚合展示入口 4)网站后台入口

四、添加入口控制器

对于这个下载app,因为只是网站使用,并不是给用户使用的,所以只需要两个入口。

第一个入口:请在 Controller 文件夹下添加 DownloadController 
第二个入口:请在 Controller 下新建一个文件夹 Admin ,然后在其中添加 DownloadController 
如下图所示:

注意,根据“约定优于配置”的原则,你添加的这两个入口控制器的名称不能随意,必须和你的app的名称一致。因为你的App名称是Download(前面定义了DownloadApp),所以入口的控制器名称就是 DownloadController。

如果是博客这种用户程序,其他两个入口控制器的命名约定依次是:

1)用户博客的聚合入口,统一叫 MainController,放在 Blog 命名空间下:

2)网站后台管理入口,也叫 MainController,但放在 Admin/Apps/Blog 命名空间下: