存放在Session有一些弊端,不能实时更新。server压力增大等...

要求:将从BO拿回来的数据存放在UI Cache里面,数据库更新了就通过RemoveCallback "告诉"UI Cache。实现更新。

环境:BO 提供一个WebService给UI取数据。UI也有一个WebService,提供给BO 通知UI更新数据。数据结构的原生类始终在BO层。

本来是想在数据库Update 后,在BO将Cache的数据推送至UI Cache,但当中遇到了自己解决不了的问题:

数据结构转换问题:

大家知道WebService数据通过一个数据协议,将数据序列化成xml传送。

UI Call BO的WebService取数据,数据原生结构在BO,数据也在BO,UI期望得到的数据结构是对BOWebService引用生成的Reference.cs里面自己主动生成的。

UI取数据能够成功。

可是BO Call UI WebService推送数据的时候就成问题了:

BO Call UI的WebService。数据结构非常应该是在UI层定义的(个人理解) ,可是如今数据结构的原生类始终是在BO层里面的。

BO数据原生结构

UI引用BO WebService生成Reference.cs

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDE2NzAxNg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

个人以为在BO 引用UI WebService生成Reference.cs时,EntyAuxiliary又会变了另外一个样子(由于UI的EntyAuxiliary是BO来的。而如今BO又引用UI的EntyAuxiliary,说的复杂点就是BO引用了UI引用BO的EntyAuxiliary)

可是BO引用UI WebService生成的Reference.cs代码里:EntyAuxiliary还是这个样子。

基于以上。BO Call UI WebService:

ReSetCacheData(string key,Object data);

报错:

就算我把原生类数据结构的数据转换成Reference.cs的数据结构也是报相同的错误。

为什么呢?

逼于无奈之下,仅仅好就需求改一改:数据库Update的时候。BO Call UI WebService,让UI自己又一次Call BO WebService取回更新后的数据。

这种方式就是BO通知UI。让UI自己去取数据。而达不到BO推送数据的优点了。

通知方式和UI轮询BO是否有数据更新方式  这种方式是否效率比較低下呢?个人比較不喜欢...

和W讨论过:如今普通的Call WebService流程是。第一种:UI主动Call BO,通过RQ 传送数据,UI主动Call BO。通过RS接收数据。

RQ,RS都是在BO层定义的,两次方式都是UI做主动。

另外一种:而我的情况是,UI 主动Call BO取数据,而BO 主动Call UI 推送数据。

这就是不同点。

W说 client和服务端之间通过WebService传送数据 的方式应该要像第一种。

我BO Call UI 推送数据的时候,数据结构就应该由UI层定义,可是我想:我UI有从BO WebService引用的Reference.cs自己主动生成了EntyAuxiliary,就把Reference.cs里面的EntyAuxiliary当做是在UI定义的数据结构不行吗? 在BO推送数据的时候。我还把原生类的数据转换成了Reference.cs里面的EntyAuxiliary,结果还是不行。。

可能归根结底UI层须要接受的数据类型的原生类型是在BO层里面定义的吧?

下面两张图片是个人记录..

缓存的思考:

问题:

WebService推送数据,数据结构应该怎样定义?的更多相关文章

  1. SQL Server 2000向SQL Server 2008 R2推送数据

    [文章摘要]最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现.我们服务器使用的是SQL Server 2008 R2,其他“服务器”使用的 ...

  2. Flume推送数据到SparkStreaming案例实战和内幕源码解密

    本期内容: 1. Flume on HDFS案例回顾 2. Flume推送数据到Spark Streaming实战 3. 原理绘图剖析 1. Flume on HDFS案例回顾 上节课要求大家自己安装 ...

  3. 使用SignalR ASP.NET Core来简单实现一个后台实时推送数据给Echarts展示图表的功能

    什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功能添加到应用程序的功能. 实时 web 功能使服务器端代码可以立 ...

  4. java接口对接——调用别人接口推送数据

    实际开发中经常会遇到要和其他平台或系统对接的情况,实际操作就是互相调用别人的接口获取或者推送数据, 当我们调用别人接口推送数据时,需要对方给一个接口地址以及接口的规范文档,规范中要包括接口的明确入参及 ...

  5. SuperSocket主动从服务器端推送数据到客户端

    关键字: 主动推送, 推送数据, 客户端推送, 获取Session, 发送数据, 回话快照 通过Session对象发送数据到客户端   前面已经说过,AppSession 代表了一个逻辑的 socke ...

  6. httpclient post推送数据

    客户端代码 /** * 从接口获取数据 * @param url 服务器接口地址 * @param json 传入的参数 若获取全部,此项为空 * @return 返回查询到的数据 * @throws ...

  7. Asp.net Core3.1+Vue 使用SignalR推送数据

    本文就简单使用 往前端页面推送消息 SignalR 是什么 SignalR是一个.NET Core/.NET Framework的开源实时框架. SignalR的可使用Web Socket, Serv ...

  8. hive向es推送数据

    第一步:首先要保证网络是通的,很多公司里子网遍布,要和运维和工程侧同事确认好网络是通的,es的地址可以通过curl es地址的方式测试一下. 第二步:下载需要的jar包,必须的是es-hadoop的包 ...

  9. C#服务端通过Socket推送数据到Android端App中

    需求: 描述:实时在客户端上获取到哪些款需要补货. 要求: 后台需要使用c#,并且哪些需要补货的逻辑写在公司框架内,客户端采用PDA(即Android客户端 版本4.4) . 用户打开了补货通知页面时 ...

随机推荐

  1. was服务器下修改jsp无效果

    使用了jsp静态导入,修改了导入的jsp页面,但是目标页面没出现效果.先说下静态导入和动态导入的区别: include指令用于引入其它JSP页面,如果使用include指令引入了其它JSP页面,那么J ...

  2. android设置按钮按下的不同效果图

    <!-- 按钮设置按下去的不同效果的方式,设置android:background属性, 下面的 button_select实际上是button_select.xml --> <Bu ...

  3. Android 开发笔记 “Android 的消息队列模型”

    Android是参考Windows的消息循环机制来实现Android自身的消息循环的. Android通过Looper.Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都 ...

  4. Oracle中的EXCEPTION

    Oracle系统预定义的异常 比如:SELF_IS_NULL.VALUE_ERROR.ZERO_DIVIDE等Oracle中自带的异常类型 使用方法: DECLARE V_Result ); BEGI ...

  5. Visual Studio调试技巧 -- Attach to Process #Reprinted#

    from:http://www.cnblogs.com/lyosaki88/p/3481338.html 一般写完代码时,我们通常会启动调试运行一下看看是否正确,启动运行的方式无非是F5-- Star ...

  6. jQuery 动态元素添加

    有这么一道题 <!DOCTYPE html> <head> <title>前端工程师面试题</title> <meta http-equiv=&q ...

  7. C语言 结构体数组保存到二进制文件中

    在项目中我定义了一个结构体数组,头文件如下: C/C++ code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ...

  8. pod update --verbose --no-repo-update

    最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing dependencies不动 原因在于当执行以上两个命令的时候会升级Co ...

  9. 队列的定义与实现(C语言实现)

    小时候.我们做早操的时候或者军训的时候,都排成一列,有头有尾.如果你迟到了,仅仅能站到最后面一个.退场的时候.都是由第一个先走的.这就是队列雏形. 队列的定义 队列是一种特殊的线性表 队列仅在线性表的 ...

  10. 整合SSH三大框架用注解时报An AnnotationConfiguration instance is required to use

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 's ...