#### 应用目录结构:
```
├── app # 应用目录,一般开发者只需要编写到这个目录
│ ├── controllers # 控制器类
│ ├── data # 存放有关数据类的文件,例如进程id
│ ├── log # 存放有关日志类文件
│ ├── static # 静态文件,例如css,js,图片等等
│ └── views # 视图文件
├── command # 命令目录
│ ├── HttpCommand.php # http服务管理命令
│ └── WebSocketCommand.php # websocket服务管理命令
├── common # 公用目录
│ ├── components # 开发这自定义组件存放目录
│ ├── config # 配置文件
│ ├── services # 服务类
│ └── utils # 工具类
├── vendor # composer安装库目录
└── zcswoole.php # 框架单一入口文件
```
#### 核心目录结构:
```
├── App.php # 框架应用类
├── command # 命令目录
│ ├── CommandContext.php # 命令上下文类,用于解析命令
│ ├── CommandController.php # 用于实现业务的控制器
│ ├── CommandFactory.php # 生成命令对象工厂
│ ├── Command.php # 命令抽象类,定义了需要实现的方法
│ ├── HttpServerCommand.php # http服务
│ ├── ServerCommand.php # server服务
│ └── WebSocketServerCommand.php # websocket服务
├── components # 组件类,所有组件都为懒加载
│ ├── Component.php # 组件基类,用于管理组件
│ ├── Logger.php # 日志组件
│ ├── RpcClient.php # 远程rpc组件
│ └── Session.php # session组件
├── Config.php # 存放配置文件,只会加载一遍
├── Container.php # 容器,暂时未用到
├── Event.php # swoole事件
├── http
│ ├── HttpController.php # http服务控制器
│ └── Router.php # http路由
├── rpc
│ └── RpcProtocol.php # 远程rpc协议
├── ServiceLocatorInterface.php # 服务定位器接口
├── ServiceLocator.php # 服务定位器
├── services
│ ├── MysqliDB.php # mysql
│ └── ZRedis.php # redis
├── Table.php # swoole table 内存表
├── utils
│ ├── Console.php # 控制工具
│ └── Factory.php # 对象生成工厂
└── ZCSwoole.php # zcswoole单例
```
#### 命令管理
> zcswoole所有命令都存放在command目录,一个类文件表示一个命令,例如HttpCommand表示http服务,如下:
```php
php zcswoole.php http [start|stop|status|reload]
```
#### http服务
> http服务内置MVC模式,controllers存放控制层代码,视图层整合了smarty
#### websocket服务
> websocket服务除了可以使用websocket服务外,另外内置了http服务,即启动websocket服务时相当启动了http服务
#### 组件
> zcswoole框架的类库可以封装为组件,通过服务定位器模式定位组件,http代码可以使用ZCSwoole调用组件,例如ZCSwoole::$app->logger->write()
#### rpc
> zcswoole框架rpc已内置在http服务,通过ZCSwoole::$app->rpc->request()调用远程api