文档章节

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

丁川
 丁川
发布于 2016/10/02 11:59
字数 523
阅读 15
收藏 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

共有 人打赏支持
丁川
粉丝 4
博文 52
码字总数 4829
作品 0
南宁
程序员
私信 提问
ServiceStack 简单使用

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

麦田守望者LEO
07/23
0
0
redis在windows下面运行稳定吗?

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

孙小东
2015/08/12
2.6K
6
ServiceStack 4.5.10 发布,.NET Web 服务框架

ServiceStack 4.5.10 已发布,Service Stack 是一个高性能的 .NET Web 服务框架,简化了开发 XML、JSON、JSV 和 WCP SOAP Web 服务。它定义了符合 Martin Fowlers 数据传输对象模式,这是一个...

王练
2017/06/11
1K
2
ServiceStack v4.5.4 发布,支持 .NET Core

ServiceStack v4.5.4 发布了,该版本是一个针对 v4.5.2 的快速修复版本,修复了一些NuGet包的问题。 Service Stack 是一个高性能的 .NET Web 服务框架,简化了开发 XML、JSON、JSV 和 WCP SO...

王练
2016/10/24
2.4K
13
ServiceStack做WebApi服务器的问题

ServiceStack做WebApi服务器时怎样获取客户端访问者的IP信息,客户端请求过来的数据流信息? 我使用Request.UserHostAddress获取到的是 "[::1]:8888" (我开的端口号是8888), 数据流信息Req...

89655408
2016/01/13
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

使用form表单同时实现上传文件和提交文本数据

使用form表单同时实现上传文件和提交文本数据,此示例中在后台将文件上传到阿里的oss存储服务器中 申请oss相关账号: endpoint = "http://oss-cn-qingdao.aliyuncs.com"; accessKeyId = "key"...

貔貅叔
6分钟前
0
0
结合实际场景谈一谈微服务配置

作为 Nacos 5W1H 的系列文章,本文将围绕“Where”,讲述 Nacos 配置管理的三个典型的应用场景: 数据库连接信息 限流阈值和降级开关 流量的动态调度 上一篇:Nacos帮我解决了什么问题? 数据...

阿里云云栖社区
9分钟前
0
0
在Windows安装运行Kafka

https://www.cnblogs.com/flower1990/p/7466882.html 一、安装JAVA JDK 1、下载安装包 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 注意:根据3......

洛水
10分钟前
0
0
插件

sftp Bracket Pair Colorizer Guides Auto Rename Tag Chinese (Simplified) Language Pack for Visual Studio Code...

dragon_tech
11分钟前
0
0
Missing Number(leetcode268)

Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array. Example 1: Input: [3,0,1]Output: 2 Example 2: Input: [9,6......

woshixin
15分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部