文档章节

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

AA海纳百川
 AA海纳百川
发布于 2016/10/02 11:59
字数 523
阅读 38
收藏 1

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

     研读了官方示例的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

AA海纳百川
粉丝 6
博文 53
码字总数 4829
作品 0
南宁
程序员
私信 提问
加载中

评论(0)

ServiceStack 简单使用

提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛。首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Building Cro...

麦田守望者LEO
2018/07/23
0
0
使用ServiceStack构建Web服务

提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛。首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Building Cro...

yangecnu
2014/09/09
0
0
ServiceStack.Redis 请求次数6000次异常

原文:ServiceStack.Redis 请求次数6000次异常 Redis是一个非常NB的内存级的数据库,我们可以把很多”热数据“(即读写非常多的数据)放入其中来操作,这样就减少了和关系型数据库(如SqlServ...

osc_iz97ycwh
2018/04/09
2
0
浅谈WebService的版本兼容性设计

在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform、WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所有这些客户端的需求,实现...

yangecnu
2014/11/03
0
0
redis在windows下面运行稳定吗?

有没有人在实际项目上将redis运行在windows下面? 因为redis官方不支持win,github上面的ServiceStack是微软搞出来的。 不知道大家在实际项目中应用的效果怎么样?...

孙小东
2015/08/12
3.4K
6

没有更多内容

加载失败,请刷新页面

加载更多

认知智能技术三大技术体系之认知维度道翰天琼

认知维度技术体系是认知智能三大技术体系(认知维度,类脑模型,万维图普)之一 。认知维度技术体系以中西方哲学思想体系,认知语言学,形式语言学,三体论等思想体系为基础,以划分人类认知...

jackli2020
34分钟前
19
0
Oracle中如何实现分页+排序? 其中遇到的问题,你,注意了嘛???

分页 + 排序 一.简单分页: 需求:分页查询台账表T_ACCOUNT,每页10条记录 分析:我们在ORACLE进行分页查询,需要用到伪列ROWNUM和嵌套查询 我们首先显示前10条记录,语句如下: select rownu...

煌sir
36分钟前
125
0
使用JavaScript获取当前URL? - Get the current URL with JavaScript?

问题: All I want is to get the website URL. 我想要的只是获取网站URL。 Not the URL as taken from a link. 不是从链接获取的URL。 On the page loading I need to be able to grab the ......

技术盛宴
46分钟前
11
0
PHP实战之Cookie会话控制

目录 1. 前言 2. HTTP协议简介及原理 2.1会话控制简介及HTTP浅析 3. COOKIE的使用 3.1 Cookie简介 3.2 cookie使用场景 3.2.1操作cookie思维导图 3.2.2操作cookie代码 3.2.3 setrawcookie的使...

六道木
47分钟前
19
0
Python笔记:批量提取PDF表格数据(每页都含有相同表头的)

现在有一份PDF数据,里面有两页,每页都有相同的数据结构但数据内容不同的数据表(每页都有相同的表头),现在需要使用Python将它批量提取出来。 我们需要使用pdfplumber模块(因为有墙的原因...

tengyulong
59分钟前
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部