文档章节

ServiceStack 项目实例 006 通过官方示例总结的项目结构方案

丁川
 丁川
发布于 2016/10/02 11:59
字数 523
阅读 13
收藏 1
点赞 0
评论 0

     研读了官方示例的ServiceStack.Examples 和 ServiceStack.Northwind,总结如下的项目方案结构,这种方式比较适合较大的项目,并且规范化很好,易于扩展和对接。

 

    

项目结构规范要求

 

根据ServiceStack官方示例项目,总结出如下项目规范:

 

项目目录结构,以产品管理模块示例:

 

需要建立三个项目:

 

>> Product.Web

 

>> Product.ServiceInterface

 

>> Product.ServiceModel

 

 

 

1 对外接口

 

Product.Web 中提供对外API接口,以及一般处理程序,也可以将测试页面和简单界面放在这个项目中。

 

 

wKioL1SPqNWjAKMVAACoSX9r600364.jpg

 

 

全局环境配置Gloabl.asax在Product.Web 项目中,这个项目提供的服务可以对接到其他的手机、软件及第三方网站。

 

 

 

 

 2 内部服务和接口 

 

 Product.ServiceInterface 中放置服务,同时也是内部调用的(dll模式)接口。

 

wKiom1SPqDeAcm-CAAC844r_sxs867.jpg 

 

定义的服务例如 

 

 

 

public class OrdersService : ServiceStack.ServiceInterface.Service

 

 

 

 

 

 

 

 3 类定义文件(包括POJO类和DTO类) 

 

Product.ServiceModel 是入口类定义和出口类定义,及实体类的定义

 

 

 

wKioL1SPqNaxarjmAAF1uz9Gy0A467.jpg 

 

 

入口类、路由定义在Operations目录下的文件中,例如Operations/Order.cs文件中内容如下:

 

 

 

[Route("/customers")]

 

public class Customers

 

{

 

}

 

 

 

public class CustomersResponse : IHasResponseStatus

 

{

 

public CustomersResponse()

 

{

 

this.ResponseStatus = new ResponseStatus();

 

this.Customers = new List<Customer>();

 

}

 

 

 

 

 

public List<Customer> Customers { get; set; }

 

 

 

 

 

public ResponseStatus ResponseStatus { get; set; }

 

}

 

一般情况下将一个服务用到的入口类和出口类写在一个文件中,如果是复杂和聚合的数据,需要把类的调用关系通过定义属性,并且在构造函数中初始化该属性。

 

 

 

路由可以使用多重路由,对于类似的,有不同参数的操作

 

比如获取全部记录、按ID指定的一条、按关键字搜索的结果,以及分页方式获取的数据可以写成一组路由公用一个入口类。

 

    [Route("/orders")]

 

[Route("/orders/page/{Page}")]

 

[Route("/customers/{CustomerId}/orders")]

 

public class Orders

 

{

 

public int? Page { get; set; }

 

 

 

public string CustomerId { get; set; }

 

}

 

 

 

 

 

 

 

一个模块的组件功能和调用说明图:

 

wKiom1SPq2SiUCXLAAOib6iI_xs144.jpg

 

 

 

 

 

 

多个模块及项目装配(以及通用库)

 

 

 

wKioL1SPrASBofx1AAMqQW4JF28507.jpg

 

本文转载自:http://soaop.blog.51cto.com/6164600/1590408

共有 人打赏支持
丁川
粉丝 4
博文 52
码字总数 4829
作品 0
南宁
程序员
ServiceStack 项目实例 007 ServiceStack.Examples - 1

ServiceStack的官网提供了不少的项目案例下载,不过有的示例不能拿来即用,而且案例中还有用的是用VS2010开发的,SS的版本也比较旧,要调整一下才可以运行。 官方示例项目下载地址 https://...

鼎六智能 ⋅ 2016/10/02 ⋅ 0

Redis 安装及配置 (转整理)

Redis 安装及配置 (转整理) Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合...

rootliu ⋅ 05/28 ⋅ 0

ServiceStack 项目实例 001 建立项目结构

ServiceStack 用于服务开发,可以为各种形式的网站、软件、APP等提供数据服务,可以提供REST,WebService以及二级制数据形式的服务。 下面根据我们具体项目要求,说一下建立项目的方式: 建立...

鼎六智能 ⋅ 2016/10/02 ⋅ 0

ServiceStack 项目实例 000 简介

ServiceStack 是一个功能齐全的服务开发套件,接近Java下的SSH的结构和思路,整体类似轻量级的SSH,主要是用于REST模式的接口服务的开发,后文中简称SS。 和SS功能相似的框架有WCF、WebAPI,...

鼎六智能 ⋅ 2016/10/02 ⋅ 0

C#客户端Redis服务器的分布式缓存

介绍 在这篇文章中,我想介绍我知道的一种最紧凑的安装和配置Redis服务器的方式。另外,我想简短地概述一下在.NET / C#客户端下Redis hash(哈希类型)和list(链表)的使用。 在这篇文章主要...

鱼煎 ⋅ 2016/07/14 ⋅ 0

redis windows 安装

笔记 redis下载地址:https://github.com/ServiceStack/redis-windows Ⅰ.git clone完成, 进入downloads文件夹,找一份你喜欢的版本,解压. 如果有文件洁癖的同学可以解压到自定义文件夹中去....

___大侠 ⋅ 05/22 ⋅ 0

一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇阶段总结与WinForm篇展望

基础篇阶段总结 我在一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇中原计划是从UDA讲到ORM,再引出DAL层,经由DAL层引申出分层结构,进行讲解业务层,并且在UI--->BL--->DAL的基...

agilelab ⋅ 2010/10/10 ⋅ 0

AppBox升级进行时 - 拥抱Entity Framework的Code First开发模式

AppBox 是基于 FineUI 的通用权限管理框架,包括用户管理、职称管理、部门管理、角色管理、角色权限管理等模块。 从Subsonic到Entity Framework Subsonic最早发布于2008年,当时他的无代码生...

三生石上 ⋅ 2013/08/29 ⋅ 0

综合应用WPF/WCF/WF/LINQ之三十四:在XBAP项目中模拟弹出一个自定义的“模态窗口”

在实际应用中,我们有时候的确需要弹出一个自定义的模态窗口。为此,我们可以采用Popup控件的方法来接近这个需求,当然,这里的“模态窗口”并不是真的窗口。   为了方便大家学习,请单击此...

余二五 ⋅ 2017/11/14 ⋅ 0

Redis总结(二)C#中如何使用redis

  上一篇讲述了安装redis《Redis总结(一)Redis安装》,同时也大致介绍了redis的优势和应用场景。本篇着重讲解.NET中如何使用redis和C#。   Redis官网提供了很多开源的C#客户端。例如,...

章为忠 ⋅ 2015/11/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

linux 安装docker

通过以下命令下载安装docker wget -qO- https://get.docker.com | sh 执行以上命令后输出以下内容说明安装成功,注意红框中的内容,docker安装成功后默认只有root能使用,红框中给出的提示是...

haoyuehong ⋅ 18分钟前 ⋅ 0

482. License Key Formatting - LeetCode

Question 482. License Key Formatting Solution 思路:字符串转化为char数组,从后遍历,如果是大写字母就转化为小写字母,如果是-就忽略,如果遍历了k个字符(排除-)就追加一个-。 Java实现...

yysue ⋅ 36分钟前 ⋅ 0

聊聊spring cloud gateway的LoadBalancerClientFilter

序 本文主要研究一下spring cloud gateway的LoadBalancerClientFilter GatewayLoadBalancerClientAutoConfiguration spring-cloud-gateway-core-2.0.0.RELEASE-sources.jar!/org/springfram......

go4it ⋅ 今天 ⋅ 0

详解:Nginx反代实现Kibana登录认证功能

Kibana 5.5 版后,已不支持认证功能,也就是说,直接打开页面就能管理,想想都不安全,不过官方提供了 X-Pack 认证,但有时间限制。毕竟X-Pack是商业版。 下面我将操作如何使用Nginx反向代理...

问题终结者 ⋅ 今天 ⋅ 0

002、nginx配置虚拟主机

一、nginx配置虚拟主机可分为三种方式,分别为: 1、基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2、基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站...

北岩 ⋅ 今天 ⋅ 0

shell脚本之死循环写法

最近在学习写shell脚本,在练习if while等流程控制时,突然它们的死循环写法是怎么样的?经过百度与亲测记录如下: for死循环 #! /bin/bashfor ((;;));do date sleep 1d...

hensemlee ⋅ 今天 ⋅ 0

苹果的ARKit2.0有多可怕,看了就知道

序言 ARKit主要由三部分组成: 跟踪(Tracking) 跟踪是ARKit的核心组件之一,其提供了设备在物理世界中的位置与方向信息,并对物体进行跟踪,如人脸。 2.场景理解(Scene Understanding) 场...

_小迷糊 ⋅ 今天 ⋅ 0

5.1 vim介绍 5.2 vim移动光标 5.3 ,5.4vim一般模式下移动光标,复制粘贴

vim命令 vim是vi的一个升级版;vim可以显示文字的颜色 安装vim这一个包vim-enhanced 如果不知道安装包,可以使用 命令下面命令来查看vim命令是那个包安装的。 [root@linux-128 ~]# yum prov...

Linux_老吴 ⋅ 今天 ⋅ 0

vim一般模式

vim 是什么 vim是什么 ? 在之前接触Linux,编辑网卡配置文件的时候我们用过了vi ,vim简单说就是vi的升级版,它跟vi一样是Linux系统中的一个文本编辑工具。 如果系统中没有vim ,需要安装一...

李超小牛子 ⋅ 今天 ⋅ 0

docker实战

构建企业级Docker虚拟化平台实战 重点剖析虚拟化和云计算概念; 分析Docker虚拟化的概念和原理; 从0开始实战Docker虚拟化平台; 基于Docker构建Nginx WEB服务器和CentOS虚拟机; 基于开源监...

寰宇01 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部