1、首先说一下什么是DSF
DSF(到家服务框架):提供服务接口供客户端调用,实现服务端服务共享、避免服务的不一致及二次开发;(个人理解:类似于对外提供的API接口—只是这里是提供的服务的接口)

2、框架:
客户端程序、服务端程序、DSF容器:它们之间的连接通过RPC远程调用(基于TCP)

3、各模块实现
服务端程序:
(1)数据实体类(添加注解@Table(name=“表名”)):
与数据库相关——–表与数据实体类的成员之间的映射通过注解实现,存于entity包;成员变量(主键对应的变量:添加注解@Id(insertable = true)——表示主键,可设置属性可插入、可更新等;其他数据库中的变量@Column(name = “id”),对于不属于数据库表中的变量通过添加@NotDBColumn进行标注),各变量对应set、get方法,基本使用默认构造参数,有需要的话重写toString方法;这里还要注意(不像MyBatis,sql写在xml中)
与 序列化、反序列化相关——-针对Java数据实体类,要实现serialize接口():要序列化的Java实体数据类添加@DSFSerializable(name =Java实体数据类 )标注;实体数据类成员添加@DSFMember(sortId=1)标注,并指定sortId值(不重复、1-127之间)
(2)数据访问层(DAO):
定义数据操作接口(增、删、改、查);
定义数据操作接口的实现类(因为考虑到多个服务可能要同时访问、操作一个数据库,所以这里的实现通过单例模式实现–定义静态DAOOperator变量,通过静态方法获取变量,如果变量未进行初始化,则根据数据库连接配置文件db.config中的字段,初始化远端数据库连接:
public static DAOOperator getDAOOperator() throws Exception{
if(daoOperator == null){
String dbConfig = Config.getConfigFolder()+”/db.config”;
System.out.println(dbConfig);
daoOperator = new DAOOperator(dbConfig);
}
return daoOperator;
}
数据库配置文件db.config中包含:
- connectionURL : jdbc:mysql://IP:端口号/数据库?connectTimeout=1000&useUnicode=true&characterEncoding=utf-8&autoReconnect=true
driversClass : com.mysql.jdbc.Driver
username :用户名
password : 密码
minPoolSize : 1
maxPoolSize : 50
idleTimeout : 30
queryTimeout : 50
insertUpdateTimeout : 10
autoShrink : true
//其他配置信息视情况而定
(3)服务实现类:添加@DSFServiceBehavior(lookUP = “HouseRentService”)注解,服务代理(客户端)通过该标注中设定的lookUP值进行实际服务实现类的查找(因为可能同一个服务接口对应不同的服务实现类,同一接口的不同实现类通过lookUP值进行查找区分),服务的是实现(要确保DAO层静态DAOOperator变量被初始化了);
服务接口类:添加注解@DSFServiceContract;服务接口类中方法添加注解@DSFOperationContract
DSF容器服务端包含配置文件:dsf_config.xml、log4_config.xml

客户端程序(服务代理):
调用DSFInit进行初始化:
使用图片服务(DFSClient(Distribution File System))和DSF(Daojia Service Framework)时,特别要注意初始化方法,分别是:DFSInit.init(String filePath) 和 DSFInit.init(String config);
使用DSF服务代理工厂根据服务接口参数实例化服务接口变量;
调用服务接口提供的方法实现功能;
DSF容器客户端包含配置文件:dsf.config

服务是要部署在DSF容器中:/dsf/service/deploy、服务端分别导出entity、contract、componentjar包下的jar包,然后放入服务命名的文件夹(里面除了服务端导出的jar包,还包括服务端配置文件dsf_config.xml、dsf_log4.xml、lib文件夹—maven下载的所有的依赖jar包、conf文件夹–数据库等配置文件)
客户端的pom.xml文件要引入服务端对应导出的jar包,它的外层目录lib文件夹里面放的的共用底层的jar包;

注意:socket、http、telnet配置服务部署的IP、端口号要一样,还有在服务代理的服务URL中,我们要使用url = “tcp://服务名/服务实现类”;这里命名要对应起来。

DSF框架使用(DAO、序列化、注解、服务接口、服务代理)相关推荐

  1. dubbo服务接口如何mock_2019年Dubbo你掌握的如何?快看看这30道高频面试题!

    前言 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式 ...

  2. java 模块分离部署_GitHub - yangjiu/Mis: 模块接口服务,如何在一个模块内维护其对外暴露的接口(包括打包发布),而不是把接口和接口实现分离到两个不同的模块?...

    MIS 模块接口服务(Module Interface Service) MIS主要解决的问题是如何在一个模块内维护其对外暴露的接口(包括打包发布),而不是把接口和接口实现分离到两个不同的模块. Us ...

  3. Java实训项目11:GUI学生信息管理系统 - 实现步骤 - 创建服务接口

    文章目录 七.实现步骤 (七)创建服务接口 1.创建学校服务接口 2.创建状态服务接口 3.创建学生服务接口 4.创建用户服务接口 七.实现步骤 (七)创建服务接口 服务接口调用数据访问接口,可以添加 ...

  4. 微服务接口限流的设计与思考(附GitHub框架源码)

    http://www.infoq.com/cn/articles/microservice-interface-rate-limit?useSponsorshipSuggestions=true&am ...

  5. 快速开发php接口服务推荐框架

    推荐π框架,一个轻量级PHP开源接口框架,专注于接口服务开发,支持HTTP/SOAP/RPC协议,拥有自动生成的在线文档.多种开发语言的客户端SDK包以及可重用的扩展类库,可用于快速搭建微服务.RES ...

  6. 分布式服务框架学习笔记2 常用的分布式服务框架 与 通信框架选择

    传统垂直架构改造的核心就是要对应用进行服务化,服务化改造使用到的核心技术就是分布式服务框架. 分布式服务框架演进 应用从集中式走向分布式 大规模系统架构的设计一般原则就是尽可能地拆分,以达到更好的独立 ...

  7. spring dao层注解_Spring– DAO和服务层

    spring dao层注解 欢迎来到Spring教程的第三部分. 在这一部分中,我们将继续编写Timesheet应用程序,这次我们将实现DAO层,业务服务并编写一些测试. 在上一部分中,我们定义了Ge ...

  8. .Net 与 Java 的服务接口相互调用

    本文介绍.Net 与 Java 相互调用的例子.下面的介绍主要包括三方面:一是通过常用Web服务进行相互调用,二是使用TCP/IP套接字进行相互调用,三是使用Remote实现远程对象相互调用. 首先说 ...

  9. 用IDEA创建基于Spring Cloud的Feign的微服务:服务接口、服务提供者、服务使用者分离

    IDEA社区版本2019.3 , 用来创建接口包时需要做些额外操作.这里使用Eureka作为服务注册中心,整个系统结构如下: 业务层与逻辑服务层 业务层 VA-DICTATION-RT-BUS 引入接 ...

最新文章

  1. android 音乐播放器专辑图片旋转,如何在我的音乐播放器(Android)中显示专辑封面?...
  2. 18怎么确定板子形状_板绘怎么画线条排线?板绘小白画线不稳怎么办?
  3. php基础小结,PHP基础学习小结
  4. 元件原理图旋转45度_大口径大曲率半径光学元件的高精度检测
  5. CF666E-Forensic Examination【广义SAM,线段树合并】
  6. fastai学习:06_multicat Questionnarie
  7. STM32工作笔记0028---上拉电阻,下拉电阻
  8. 【转载】 深入浅出Windows的Dll文件
  9. IdentityServer的基本概念与特性
  10. oc基础-oc中之集合NSSet,NSMutableSet
  11. 制图折断线_CAD制图规范及技巧总结大全
  12. 欧标语言等级划分 C1,小语种欧标等级的要求
  13. 深夜读萧红《呼兰河传》
  14. Java项目集成海康威视门禁,NVR
  15. 哈希表、哈希桶(C++实现)
  16. react native 获取验证码
  17. 《软考系统架构师》(二、信息系统基础知识)
  18. 【机器学习实战笔记】Logistic回归
  19. 用 LCD1602 显示的时钟
  20. c++自定义弹窗_性价比APS-C相机购机建议 尼康Z 50真实感受

热门文章

  1. 网络口碑营销的特点、技巧、价值
  2. 网站后台服务器进不去,网站进不去后台有什么原因啊?急
  3. 微服务网关soul搭建
  4. SQL查询语句的书写顺序、执行顺序和注意事项
  5. vue3+Echart
  6. php 快递单号生成规则,Thinkphp 生成订单号小案例
  7. 简单的python画图小实例
  8. 【VScode】搜索栏语法
  9. hyperledger Fabric安装
  10. Vue Router路由守卫