不涉及具体语言也行,能告诉我思路或者给些提示吗?高手请进!!!

stidio_zhougang 2003-06-26 10:58:21
公司要做一个协同修改程序,具体要求是:N个人共同通过网络修改一个Office文档,比如说WORD,PowerPoint等。就相当于有一块白板,所有人都可以在上面画,当不会发生冲突那种。
现在有二种思路:
一,每次只能一个人修改,等修改完后提交,然后把修改后的文件传送给请求队列中的下一个人。
二,所有人那里最初都有一份文档的COPY,每次每人对文档的修改部分都能抽象成某些操作,比如:
<删除 位置=,内容=></删除>
然后把这些操作广播出去给其他文档的所有者!
但是我对这两种都不是很满意:
第一种:每次都只能一个人修改,有点违背协同修改这个名次:)
第二种:可能出现某人对某部分进行了删除,但是又有人对该删除部分进行了提交这种矛盾情况。
就算满意也还存在着一些技术问题:
因为不了解Office系列的文件结构,所以希望Microsoft能够提供对2个前后修改文档进行比较并能够将比较结果保存为一段数据的这么一个API,还需要一个能够对这段数据进行解析,并把这段数据导入到修改前的那个文档,使该文档成为修改后的文档的这样一个API。
由于从来没有进行过Office系列这方面的开发,不知道是否存在着这些API!
请各位高手多多指教,我可以另外开帖给分!
...全文
29 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
stidio_zhougang 2003-07-03
  • 打赏
  • 举报
回复
给分了,想了一个垃圾办法,呵呵!
OSNC_17 2003-07-01
  • 打赏
  • 举报
回复
走人啊!
simouse 2003-06-27
  • 打赏
  • 举报
回复
关注ing...
Zark 2003-06-27
  • 打赏
  • 举报
回复
从软件工程学角度看,楼主正处于"用户需求细化"阶段.在这一阶段软件设计者必须与用户进行反复地沟通,使用户需求从广泛性描述转化成具体性描述.

用户需求:
N个人共同通过网络修改一个Office文档,比如说WORD,PowerPoint等。就相当于有一块白板,所有人都可以在上面画,当不会发生冲突那种。

office 文档 -> 磁盘文件.
通过网络 ->?
所有人都可以在上面画 ->对文件的副本进行操作?还是对文件的正本进行操作?
不会发生冲突 ->? 如果一用户将某一字符"A"改写成"B",而另一用户将字符改写成"C",用户的期望行为是什么?

这个时候软件设计者不能完全依赖自己进行设计,必须理解用户的真正需求,达到此目标的方法就是与用户多次沟通.





stidio_zhougang 2003-06-27
  • 打赏
  • 举报
回复
兄弟们,帮帮忙,我该怎么办,哭了!
stidio_zhougang 2003-06-27
  • 打赏
  • 举报
回复
现在不是必要不不必要的问题,关键是必须要做这么一个东西,因为Microsoft和Webex的视频会议系统有这么一个东西,但如果做又不能做得太垃圾,不然就更郁闷了。
stidio_zhougang 2003-06-27
  • 打赏
  • 举报
回复
TO:Zark(金陵五月)
其实用户需求已经确定了,可能是我没有说清楚,并且是做一个产品不是做具体服务,所以所做的东西主要是参照Microsoft一个视频会议系统中的协同修改部分来做的。
一,就是修改Office文档,并且可以进一步缩小范围:word和powerpoint。
二,协同工作必须有个基本工作基础:比如通过网络,共享或者其他什么东西。
三,关于冲突的解决,这就不是什么技术问题了,只是一种策略,如果其他问题都能解决,这个应该也比较好办。
TO:楼上的三位兄弟
你们的意思我大概能理解,主要就是二进制的split+merge操作,但是核心问题还是不能解决呀:
比如,已经限制死了,就是修改office文档,这样,可能发生的split操作会破坏文档的完整性,比如对于一段字可能是这样的(我没有研究过WORD文件结构,这只是我的一种猜测而已):<property fontbord=true,underline=true,color=red>这段字</property>,但如果split发生在"true,color"这个地方,怎么办?
所以我在我提出问题中询问是否有这种API,能够把一个文档的变化统计成一段数据!
huazaimh 2003-06-27
  • 打赏
  • 举报
回复
我认为呢,你现在想实现的第一步有点想CVS和SourceSafe的功能
每次呢,只能同时有一个人修改,别的人修改要等这个人放了才行
还有你说的,如果一个人修改了文档发消息通知其他的人这个是否真的有必要,如果你真正实现后如果到时候一个小小的改动都要通知其他的人是不是有必要?重大的改动可以通过内部的电子邮件进行沟通,我想是比较好的
你说的那种修改文档的生成比较等,是不是真正有那种必要,一般在sourceSafe和CVS都有修改的记录,只是没有这么详细罢了
这些问题我觉得都是应该考虑的
fang_jb 2003-06-27
  • 打赏
  • 举报
回复
要么你就等到SOURCE SAFE 或者CVS支持二进制级的merge操作

现在的这两样东西,要merge的时候好象只能是文本的东西,二进制的东西会出问题

看楼主的需求,感觉就象一个特殊的版本管理需求

曾经想过一些这方面的东西,但由于二进制流比文本难管理,所以。。。。。。
titainium 2003-06-27
  • 打赏
  • 举报
回复
小弟也曾考虑过类似的问题,因为在单位里用dreamweaver,经常我和别人一起修改,我保存了,别人那里又修改一下,我的活就白干了。
我就构思了一个解决的方式,供楼主参考:我觉得可以用拷贝的方式。第一个打开文档的人在打开文档的同时产生一个副本,事实上这个人打开的就是产生的这个副本,任何修改都在这个副本上完成,就是说任何修改都要返回到副本上,让副本与本地机同步。后面的人打开的都是这个副本,同理,后面人的任何修改都要返回到副本。我曾在什么地方看到过文档同步的技术的,我觉得这样应该能够做到了。
njuhuangmy 2003-06-27
  • 打赏
  • 举报
回复
因为是 office 文档

所以,就有 特殊性 了

首先 office 文档是可以 通过 copy 来复制的!!

所以, 你把 可以 通过 copy 复制的 东西 分成 一个个 小块

根据 任务 的 大小, 分给 个人 或者 几个人 做!!

office 文档大多数可以 copy 的

当然, 你也可能 遇到 不能 单纯 copy 就能 合成 的地方

那就得 按你两条想法里前面 说得那样来了。
shenyiwen 2003-06-27
  • 打赏
  • 举报
回复
可以提供一种锁定机制. 每个用户在修改前先申请锁定需要修改的区域. 若该区域
与现有的任何已锁定区域相交则须等待. 禁止在申请的区域以外进行修改.
yzb1000 2003-06-26
  • 打赏
  • 举报
回复
关注
Skt32 2003-06-26
  • 打赏
  • 举报
回复
可参考WORD的“批注”

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧