文档章节

ServiceStack 项目实例 004 建立第一个服务--添加信息

丁川
 丁川
发布于 2016/10/02 11:55
字数 737
阅读 24
收藏 1

    下面我建立一个服务的Operation,实现添加一条信息的功能,在SOA模式开发中,Operation相当于MVC框架中的一个Action,但是SOA服务中是没有视图层和显示页面的,它对外提供的是数据服务,通常为XML或JSON格式。

 

    这个功能实现需要在三个文件中分别添加代码:

 

     在SS服务端项目中添加一个类文件Submission.cs , 其中定义Submission类和SubmissionResponse类:

1

2

3

4

5

6

7

8

9

10

11

12

13

[Route("/Submission""POST")]

    public class Submission

    {

        [AutoIncrement]

        public int Id { getset; }

        public DateTime SubmissionTime { getset; }

        public string Headline { getset; }

        public string Body { getset; }

    }

    public class SubmissionResponse

    {

        public int Id { getset; }

    }

 

    Submission类是一个实体类,对应数据库中的表,其中[AutoIncrement]是主键字段的标记,SubmissionResponse是出口类,用来返回一个整形值,这个整形值返回新增的记录的ID。

 

    添加一个SubmissionService.cs类,这个类中定义一个服务,用来添加一条新闻。

1

2

3

4

5

6

7

8

9

 public class SubmissionService : Service

    {

        public DataRepository Repo { getset; }

        public object Any(Submission submission)

        {

            int id = Repo.AddSubmission(submission);

            return new SubmissionResponse() {Id = id};

        }

    }

 

   DataRepository 是注入的数据库服务类,这个类的定义在DataRepository.cs中(后面将说明这个类),在服务类文件定义中,包含有三个关键的和接口相关的项,

1

public object Any(Submission submission)

    其中的object是出口类,也就是服务响应用户的请求后,返回给客户端的数据,这个数据是强类型的,可以在客户端自动转换为JSON、JSV、XML等格式。object可以返回任意类型数据,建议写成实际的数据类型,可以提高性能和可读性,这里实际的返回类型是SubmissionResponse,也就是出口类指定的数据类型。

  Any 是允许的HTTP请求类型,支持的类型有GET、POST、PUT和DELETE以及PATCH等,对应的数据库访问功能分别为读取、添加、修改和删除,Any表示支持所有类型操作,如果明确这项操作的类型,要求写成实际的操作类型。

   传入的参数Submission submission是入口类数据,对于新增和修改操作,一般入口类是实体类,对应会操作数据库的一个表。这里通过 Submission 操作数据库中的Submission 表。

 

    服务和入口出口类的说明图:

 

    wKioL1SEGayAb4WzAAITLyPbvFw290.jpg

(注:图中的服务和类和代码中的并不是同一个,这里主要是用作结构和用法的说明)

 

    3   添加DataRepository.cs数据库访问类,在该类中添加一个IDbConnectionFactory 类型的属性,和添加新闻的服务。

1

2

3

4

5

6

7

8

9

10

11

        public IDbConnectionFactory DbConnectionFactory { getset; }

        //public IDbConnectionFactory DbFactory { get; set; }

        public int AddSubmission(Submission request)

        {

            using (var db = DbConnectionFactory.OpenDbConnection())

            {

                db.CreateTable<Submission>();

                db.Insert(request);

                return (int) db.GetLastInsertId();

            }

        }

     

 

   主要参考资料 :  Getting Started with ASP.NET MVC, ServiceStack and Bootstrap

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

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

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

麦田守望者LEO
07/23
0
0
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
redis在windows下面运行稳定吗?

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

孙小东
2015/08/12
2.6K
6
ServiceStack做WebApi服务器的问题

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

89655408
2016/01/13
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP生成CSV之内部换行

当我们使用PHP将采集到的文件内容保存到csv文件时,往往需要将采集内容进行二次过滤处理才能得到需要的内容。比如网页中的换行符,空格符等等。 对于空格等处理起来都比较简单,这里我们单独...

豆花饭烧土豆
今天
2
0
使用 mjml 生成 thymeleaf 邮件框架模板

发邮件算是系统开发的一个基本需求了,不过搞邮件模板实在是件恶心事,估计搞过的同仁都有体会。 得支持多种客户端 支持响应式 疼彻心扉的 outlook 多数客户端只支持 inline 形式的 css 布局...

郁也风
今天
8
0
让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字

让哲学照亮我们的人生——读《医务工作者需要学点哲学》有感2600字: 作者:孙冬梅;以前读韩国前总统朴槿惠的著作《绝望锻炼了我》时,里面有一句话令我印象深刻,她说“在我最困难的时期,...

原创小博客
今天
4
0
JAVA-四元数类

public class Quaternion { private final double x0, x1, x2, x3; // 四元数构造函数 public Quaternion(double x0, double x1, double x2, double x3) { this.x0 = ......

Pulsar-V
今天
18
0
Xshell利用Xftp传输文件,使用pure-ftpd搭建ftp服务

Xftp传输文件 如果已经通过Xshell登录到服务器,此时可以使用快捷键ctrl+alt+f 打开Xftp并展示Xshell当前的目录,之后直接拖拽传输文件即可。 pure-ftpd搭建ftp服务 pure-ftpd要比vsftp简单,...

野雪球
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部