silverlight阅读器——面向领域的浏览器(二)——Silverlight阅读器架构

news/2024/7/19 12:12:27 标签: ui, 爬虫

 

读者最关心的是阅读的内容而不是内容的来源,同一本图,网上有图片版也有文字版本,阅读器可根据用户阅读习惯(比如用户只希望阅读图片章节)自动从网络找到相关图书内容。

阅读器核心价值是提供比浏览器更好的用户体验:

1、 无广告,没弹出窗口

2、 根据用户习惯预加载,阅读无延迟

3、 章节更新通知

4、 统一UI、阅读方便

5、 用户收藏图书保存到开放平台,可以通过开放平台阅读。如:把收藏图书保存到qq空间。

6、 更安全,基于Silverlight,恶意代码在解析器已经被过滤比Html更安全。

以上功能都是浏览器无法提供的。

主要业务流程

阅读器核心的功能是为用户提供方便、友好的阅读方式,以用户阅读小说:凡人修仙传图片章节为例说明阅读流程。

image

核心业务功能

核心功能:提供用户友好的阅读方式。

非核心功能:电子书制作,以插件方式提供。

image

核心系统功能

为提供友好阅读体验,完成业务功能,阅读器需要如下系统功能支持。

核心系统功能:

灵活高效的Html解析功能。HTML解析模块能支持任意html解析,并且可以自动将解析结果生成xaml或领域对象。

自定义解析站点,用户只需把自定义解析文件放到阅读器指定目录就可以自动增加解析站点。

缓存机制、预加载机制可以满足在线阅读无延迟。

MVVM模式、MEF提供扩展性与可移植性。

自动解析测试,在站点改版后可以自动到服务器下载新解析文件。

URI生成:可以根据现有URI生成目标URI,减少一次网络通信(非核心)

image

约束

目前浏览器基于Silverlight实现,下面一些问题限制了浏览器的功能。尤其最近百度文库的问题吵的沸沸扬扬,阅读器在设计之初,即考虑到只做单纯的浏览器使用,只是根据阅读习惯把来自web的内容以更好的方式展现出来。

图书不保存到服务器,不通过强大的服务器支持阅读。而通过增强缓存功能、预读取功能来实现阅读流畅。

image

阅读器开发架构

阅读器由三部分组成,阅读器程序(UI)、Html解析器、聚焦爬虫

目前聚焦爬虫未实现,这一部分输出的小说网址通过配置文件实现。

image

阅读器UI部分架构

阅读器架构的最上层UI部分,采用MVVM架构,为调整UI、移植到其他平台提供方便。

image

功能路线图

目前阅读器是第二个版本,(如果从最开始算起是第三个版本)

1. 最初版本,使用SilverlightToolkitUI,测试版

http://www.cnblogs.com/bluewater/archive/2010/07/06/1772466.html

2. 第二版本,新UI,类似iPod界面(V1)

http://www.cnblogs.com/bluewater/archive/2010/12/20/1911769.html

3. 第三版本,主要是非功能方面的改进

http://www.cnblogs.com/bluewater/archive/2011/04/07/2007913.html

image


http://www.niftyadmin.cn/n/1222535.html

相关文章

linux for matlab,Matlab for Linux安装过程笔记(图)

今天在Ubuntu下把Matlab装上了,当前Matlab我还没有用,或许以后会有用的,下面是Linux Matlab安装过程。MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信…

svn 子目录 配置权限_SVN服务器之用户权限配置——authz文件

本文主要是分析SVN服务器中用户权限的配置,作为SVN服务器基本配置的提高篇。如果读者还未了解SVN服务器的基本配置,可以参见本人的另外一篇博文《使用自己的Linuxsvnserve服务器》,链接:,本文中下面简称《基础篇》。本…

一道关于继承和多态的题目

#include<iostream> #include <complex>using namespace std; //---------------------------------------------- class Base//基类 { public:virtual void f(int);virtual void f(double);virtual void g(int i10); };void Base::f(int) {cout<<"Base…

c语言编程求一个数的逆序数,归并排序求逆序对个数-题解(C语言代码)

解题思路:归并排序 只不过加了个记录变量ans注意事项:参考代码:#includelong long ans 0;int a[500005], b[500005], n;void merge(int low, int mid, int high) {int i, j, k;for (i low, j mid 1, k i; i < mid && j < high; k) {if (b[i] < b[j])a[k]…

gradle引入子module配置_Android 多Module统一配置Gradle,只需三步

为什么要统一配置Gradle最近在尝试模块化开发&#xff0c;当我创建到第二个module时&#xff0c;就突然一阵心慌&#xff0c;gradle这样配置下去后边怎么维护啊&#xff0c;难道改个buildToolsVersion、buildToolsVersion什么的要到每个module里的 build.gradle文件里改一遍&am…

c语言vs命令行编写程序,VS2017使用命令行编译C语言代码

研究了一下午找到的方法添加环境变量&#xff1a;环境变量Path:添加&#xff1a;VS2017安装目录\2017\Community\VC\Tools\MSVC\14.15.26726\bin\Hostx64\x64例如&#xff1a;D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\Ho…

五大列级庄_五大名庄背后的1855分级

1855列级名庄1855年的历史文献&#xff0c;当时的梅多克分级只有四家一级庄(右侧)1855年&#xff0c;法国以庆祝滑铁卢战役以来的40年和平为名举办了巴黎世界博览会。而在当时&#xff0c;法国的葡萄酒&#xff0c;已经受到了其他国家(英国、荷兰)的青睐。为了更有利于波尔多葡…

CGI 环境变量

SERVER_NAME CGI脚本运行时的主机名和IP地址. SERVER_SOFTWARE 你的服务器的类型如&#xff1a; CERN/3.0 或 NCSA/1.3. GATEWAY_INTERFACE 运行的CGI版本. 对于UNIX服务器, 这是CGI/1.1. SERVER_PROTOCOL 服务器运行的HTTP协议. 这里当是HTTP/1.0. SERVER_P…