Kaneboy's SharePoint Blog

SharePoint & Office Zealot
随笔 - 391, 评论 - 8165, 引用 - 201

导航

关于


About me :
SharePoint Architect. Build SharePoint solutions from year of 2003. Joined Microsoft in 2004. Working for HP now.

Certification :
MCPD - Web Dev
MCTS - SharePoint 2007 Dev
MCTS - SharePoint 2007 Config
MCTS - WSS 3.0 Dev
MCTS - WSS 3.0 Config
MCTS - SPS2003 Infra
MCTS - SPS2003 App
MCT
(ex)MVP 

Contact me :
kaneboy@gmail.com | follow @kaneboy on twitter

Authored books:


标签

每月存档

最新留言

  • YuQRkwvMBBZqPFbxLOZ
    Very good site. Thanks!, <a href="http://basudasu.100webspace.net/finder-rf0/map.htm...
    by palermo pizza(匿名) on 2010/3/19 8:31:52
  • KCWuaBjeQjjTAwrbD
    Very good site. Thanks!, <a href="http://gekasite.angelfire.com/drive-fib0/map.html&...
    by perform definition(匿名) on 2010/3/19 7:31:03
  • BdWphqDuVGQ
    Nice site. Thank you., <a href="http://qevubig.100webspace.net/indian-e5c/cerayeem.h...
    by miss paris 2010(匿名) on 2010/3/19 1:04:33
  • waQJcBXJIUeshGqb
    Nice site. Thank you., <a href="http://usuarios.multimania.es/gedewuq/wholesal8e/zde...
    by louisiana college and university(匿名) on 2010/3/18 4:56:59
  • EnyuAcEEMmnRoTId
    Very good site. Thanks!, <a href="http://tovadeh.tripod.com/wholesal7a/zdeddeain.htm...
    by ponds dry skin cream(匿名) on 2010/3/18 3:50:00
  • OGxXKGtGarqlVonGd
    Nice site. Thank you., <a href="http://usuarios.multimania.es/sixacig/7th-dumm5f/map...
    by gourmet kitchen tool(匿名) on 2010/3/18 0:26:14
  • sRGCvENEKieXau
    Very good site. Thanks!, <a href="http://kuxeramu.100webspace.net/fashion-00/map.htm...
    by patent vinyl fabric(匿名) on 2010/3/17 8:06:07
  • cWfXKniuINOYXKuI
    Nice site. Thank you., <a href="http://kuxeramu.100webspace.net/mormon-r33/map.html&...
    by manitowoc ice maker(匿名) on 2010/3/17 6:59:30
  • qdvyXmxjTh
    Very good site. Thanks!, <a href="http://necilasa.100webspace.net/drag-game2/map.htm...
    by tennessee birth injury attorney(匿名) on 2010/3/17 5:52:17
  • lRojiPFRIMcWwEXXu
    Very good site. Thanks!, <a href="http://bikroom.co.tv/admitidos-univers/ssthapllery...
    by 2010 earned income tax credit(匿名) on 2010/3/16 6:44:43
  • hsJFqJCGACrvvC
    Very good site. Thanks!, <a href="http://magra.myip.org/linkin-park/disoracove.html&...
    by lowongan kerja bank 2010(匿名) on 2010/3/16 4:24:53
  • nhGzvxBcXxwQg
    Very good site. Thanks!, <a href="http://bikroom.co.tv/admitidos-univers/dedsthoth.h...
    by cheap prom dresses 2010(匿名) on 2010/3/16 3:17:22
  • re:SharePoint 2010新体验10 - 文档评分
    @hao SharePoint 2010是内置的。WSS 3.0的有第三方工具实现类似的功能。
    by kaneboy(匿名) on 2010/3/15 23:56:52
  • re:SharePoint 2010新体验10 - 文档评分
    涂老师呀,这个功能是内置的还是第三方的呀?如果是第三方的,怎么没有下载点呀?! 还有,可不可以在WSS3中实现呀?
    by hao(匿名) on 2010/3/15 21:27:30
  • aXEOfuczpGJ
    Nice site. Thank you., <a href="http://tobovibu.angelfire.com/fiddler-8b/map.html&am...
    by miss il 2010(匿名) on 2010/3/14 4:39:10
  • rASlKTZvzQNHBKjko
    Very good site. Thanks!, <a href="http://wubibuz.tripod.com/barn-kidfa/onloremacend....
    by horse racing pick(匿名) on 2010/3/14 1:16:42
  • uPEaKxFwQmvylJcyld
    Very good site. Thanks!, <a href="http://usuarios.multimania.es/qujimeh/2010-monad/m...
    by latest songs 2010 list(匿名) on 2010/3/13 8:17:22
  • TFmptavYRfzLZZsajHV
    Nice site. Thank you., <a href="http://usuarios.multimania.es/guropin/pizza-noae/map...
    by pavitra rishta 11 january 2010(匿名) on 2010/3/13 4:54:06
  • AecAqkJdZqcodEzyT
    Nice site. Thank you., <a href="http://usuarios.multimania.es/zewiler/new-regg46/ron...
    by grammys 2010 red carpet arrivals(匿名) on 2010/3/13 2:41:40
  • oYYuhOkPwCVBgmvT
    Nice site. Thank you., <a href="http://usuarios.multimania.es/juputow/faschingd0/hod...
    by stat holidays canada 2010(匿名) on 2010/3/13 1:34:54
  • jcFlYYBsXW
    Nice site. Thank you., <a href="http://usuarios.multimania.es/noqihaw/serenata3b/fon...
    by how much snow will delaware get on 0205(匿名) on 2010/3/13 0:27:06
  • re:几个小工具
    <p><a href="http://www.moretiffany.com/">tiffany jewelry</a> Choose, buy...
    by sibat0705(注册) on 2010/3/12 20:48:39
  • re:我在SharePoint 2010 Day上做的一个演示课程
    &lt;a href=&quot;http://www.moretiffany.com&quot;&gt;tiffany jewelry&lt;/a&g...
    by sibat(匿名) on 2010/3/12 20:44:28
  • re:我在SharePoint 2010 Day上做的一个演示课程
    tiffany jewelry Choose, buy and shop for on sale tiffany jewelry including Tiffany &amp; Co Silv...
    by sibat(匿名) on 2010/3/12 20:43:55
  • re:为SharePoint 2010创建Application Page
    tiffany jewelry Choose, buy and shop for on sale tiffany jewelry including Tiffany &amp; Co Silv...
    by sibat(匿名) on 2010/3/12 20:41:36
  • re:SharePoint服务器连接配置数据库的连接字符串保存在哪里?
    tiffany jewelry Choose, buy and shop for on sale tiffany jewelry including Tiffany &amp; Co Silv...
    by sibat(匿名) on 2010/3/12 20:41:18
  • re:SharePoint服务器连接配置数据库的连接字符串保存在哪里?
    tiffany jewelry Choose, buy and shop for on sale tiffany jewelry including Tiffany &amp; Co Silv...
    by sibat(匿名) on 2010/3/12 20:40:46
  • GgrmjyrOzGQuTzL
    Very good site. Thanks!, &lt;a href=&quot;http://kofovoy.tripod.com/olympic-55/map.html&...
    by the energy show 2010(匿名) on 2010/3/12 4:08:58
  • dUUdDpkufOWSyzVtTpj
    Nice site. Thank you., &lt;a href=&quot;http://qaqodiq.tripod.com/salut-boe4/map.html&qu...
    by free virus removal windows 2010(匿名) on 2010/3/12 3:04:49
  • RUMxxmTcrgNYlOOZKpr
    Nice site. Thank you., &lt;a href=&quot;http://keladap.tripod.com/almasae-2f/map.html&qu...
    by costa croisieres 2010(匿名) on 2010/3/12 3:04:40
  • uwRyyEISfsepvT
    Nice site. Thank you.,
    by name(匿名) on 2010/3/9 9:31:43
  • qSdYCESfFoly
    Very good site. Thanks!,
    by name(匿名) on 2010/3/9 6:21:29
  • tgjKggthOUYDbh
    Very good site. Thanks!, &lt;a href=&quot;http://iyuqaba.tripod.com/lisa-lan98/map.html&...
    by who does the bachelor jake pick spoiler(匿名) on 2010/3/9 5:21:35
  • bNrIymrsBAnelvDFZ
    Nice site. Thank you., &lt;a href=&quot;http://ijopawu.tripod.com/who-inve4b/map.html&qu...
    by howard finster(匿名) on 2010/3/9 4:16:31
  • EApAUSdhdQFdMIRlACa
    Nice site. Thank you., &lt;a href=&quot;http://ijopawu.tripod.com/who-inve4b/map.html&qu...
    by bob sanders injury report(匿名) on 2010/3/9 4:16:28

广告

【第1页/共6页,191条】
首页
前页
1

关于QuickPart的Q&A

Q:我在安装新版本的QuickPart,替换已有的旧版本时,总有问题,应该怎么办?
A:请到QuickPart项目网站,下载“How to Uninstall QuickPart”文档,然后按照文档中的说明,先从服务器上彻底删除旧版本QuickPart,然后再重新安装新版本QuickPart。

Q:我能修改QuickPart的源代码,添加自己想要的新功能吗?
A:请到QuickPart项目网站,下载“Source Code”包,然后修改源码自己编译即可。

Q:我下载了QuickPart源码项目,用Visual Studio打开后,会提示错误?
A:QuickPart 1.03版本的源码项目使用了Visual Studio 2008 + VSeWSS 1.3,请确认你使用了正确的Visual Studio版本,并安装了VSeWSS 1.3扩展包。

QuickPart 1.03下载页面

posted on 2010-01-19 15:49:08 by kaneboy  评论(3) 阅读(5918)

我在SharePoint 2010 Day上做的一个演示课程

上周末,在SharePoint 2010 Day技术活动上,我做了一个纯演示的课程,演示了Visual Studio 2010中所包含的SharePoint 2010开发功能。



下载更高清晰度的WMV文件

posted on 2010-01-19 14:59:23 by kaneboy  评论(9) 阅读(6039)

几个小工具

今天,Erucy和我将几个小工具发布到了codeplex上。


WPManager(Web部件管理器)
用于在SharePoint2007上部署、卸载Web部件,无需编写dwp/webpart描述文件,无需编写manifest,无需手动修改web.config,只需要打开生成的dll文件,选择部署位置,点击“部署”就可以一切搞定。支持dll、cab和wsp三种部署方式。同时支持部分Web部件的卸载功能,同时还有个彩蛋。
地址:http://wpmanager.codeplex.com

OSSEventManager(事件处理程序管理器)
可以方便的在一个列表上部署、挂载、卸载SharePoint 2007的列表条目事件处理程序。
地址:http://osseventmanager.codeplex.com

Friendly Query
使用类似T-SQL语句的形式进行SharePoint列表查询,无需任何CAML。之前写过一篇blog:点击这里
地址:http://fquery.codeplex.com/

清除已删除用户
如果使用自定义Membership Provider来实现SharePoint网站用户认证,从自定义用户数据源中删除了用户之后,还需要手工从SharePoint网站中删除对应的SharePoint用户。这个工具可以帮助管理员自动清除那些已从数据源中删除的用户。
地址:http://sptoolscn.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=38497

posted on 2010-01-10 01:57:23 by kaneboy  评论(2) 阅读(6701)

SharePoint 2010新体验9 - 内容管理器(Content Organizer)

如果我们使用一个SharePoint网站来存储部门/团队的文档,通常会按照我们想要的结构,预先在网站中建立好相应的文档库和文件夹。比如,我们会创建一个“技术文档库”,来存放技术类别的文档,同时创建一个“业务文档库”存放业务类别的文档,在“技术文档库”中,还可能按照编程语言的种类,建立诸如“CSharp”、“C++”、“Java”之类的文件夹,将技术文档按照它们所属的类别,再放置到相应的文件夹中。

但是,无论管理员将结构建立得多么好、多么完整,用户很可能并不会按照文档实际的类别,将文档上载到正确的文档库和文件夹中。SharePoint 2010的内容管理器,能帮助网站管理员实现自动化的文档路由和存储。在用户将文档上载到网站之后,网站的内容管理器会按照事先设置的规则,自动将文档移动到正确的地方。

内容管理器的规则,基本上基于两种判断条件:
1、文档的内容类型。例如,属于“技术文档”内容类型的文件,移动到哪里哪里,而属于“业务文档”内容类型的文件,又是移动到哪里哪里。内容管理器规则只能处理继承自“文档”内容类型的内容类型,这意味着内容管理器只能管理文件类型的内容,而不能处理其他列表项内容类型。
2、属性的值。基于第1种判断条件,管理员还可以再基于文档的属性,设置判断条件。比如,“技术类别”属性的值等于“Web程序”的文档,移动到哪里哪里。第2种判断条件不能独立于第1种存在。

内容管理器是一项网站级别的功能,而并非网站集级别。所以,首先需要在网站功能管理中,启用“内容管理器”功能:
image 

在网站中启用了内容管理器功能之后,网站中会多出来一个“放置库”文档库。这个“放置库”是内容管理器的核心之一,实际上,所有内容管理器规则都是应用到“放置库”。

然后在网站管理页面中,会多出来“内容管理器设置”和“内容管理器规则”链接:
image 

内容管理器设置界面中,是对整个网站的内容管理器功能,进行全局的设置。

如果选择了“将新内容提交到库”选项,那么无论用户是将文档上载到网站的什么地方,这个文档都会被自动移动到“放置库”中,以对其应用规则。但是我发现Beta2中似乎有Bug,即使管理员选中了这个选项,用户上传到其他地方的文档也不会自动移动到“放置库”,这样只有上载到“放置库”中的文档,才会被应用规则。
image

如果选中了“允许规则将其他网站指定为目标位置”选项,那么在规则中,就能将上载的文档移动到其他网站。但是其他网站的目标位置,必须事先由管理员在“管理中心 - 一般应用程序设置 - 配置发送到连接”设置之后,才能使用。
image 

自动创建子文件夹的选项非常有用,这样可以避免在一个文件夹中,存放太多的内容。不建议在一个文件夹中,存放超过5000个文件。
image

如果目标位置已经存在同名文件,那么下面的选项将决定内容管理器如何处理这种情况。但是如果管理员选择了使用版本控制,但目标文档库又并未启用版本控制功能,那么内容管理器仍然是使用自动在文件名后面添加唯一字符的方式,来进行处理。
image

保留文档的审核日志和属性,有助于在记录管理中对文档进行持续管理。
image

“规则管理员”可以让管理员指定哪些人可以设置内容管理器规则。如果一个用户是网站管理员,但是并非规则管理员,他也不能管理内容管理器规则。如果一个用户是规则管理员,但并非网站管理员,他仍然不能管理内容管理器规则。
image

接下来,就是为内容管理器创建规则。每个规则都有优先级,优先级高的规则会先被执行,这样如果一个文档符合多个规则的条件,那么只有优先级最高的规则会被应用到文档。
image

下面的截图就是按照提交的文档的内容类型,进行条件筛选。“替换名称”可以用于同时处理多个相关的内容类型(比如有父子继承关系的内容类型)的情况。
image 

“基于属性的条件”可以让管理员再基于选中的内容类型的必填属性,来设置过滤条件。
image

下面是在添加了2条规则之后的情景,两条规则实际上都是针对一种“技术文档”内容类型,但是第1条规则还加上了额外的属性条件过滤,来将“技术文档”中设置的是C#与Web类别的技术文档,单独存放到一个专门的地方。由于第1条规则所匹配的文档实际上是第2条规则所匹配的子集,也就是说,第2条规则覆盖了第1条规则,所以为了避免文档被应用第2条规则,管理员需要将第1条规则的优先级设置得比第2条规则高:
image 

配置好了内容管理器之后,当用户在网站中上载了文档之后,系统会自动提示它,内容管理器已经将文档自动转移到了新的地方,并且会显示出文档所在位置的URL路径:
image 

有了内容管理器,用户在上载文档时,就不再需要考虑到底将文档上载到哪个地方才合适。文档所在位置的选择,被交给了内容管理器,按照管理员所设置的规则,对文档进行自动的路由和分类。

posted on 2009-12-25 15:33:21 by kaneboy  评论(5) 阅读(6694)

SharePoint 2010 新体验8 - 内容类型集线器 (Content Type Hub)

在SharePoint 2007中,我们可以在网站集中定义或定制内容类型,然后在网站集里面的所有网站中使用这些内容类型,内容类型提供了一种集中管理数据与信息类型的方式,使得信息的结构定义,与信息的实际存储能够分开。但是在2007版本中,内容类型并不能被跨网站集使用。如果我们希望所有网站集都能使用同一个定义的内容类型,就必须将其封装为Solution Package,部署到各个Web应用程序当中。

SharePoint 2010为了让管理员可以方便的在整个服务器场范围中共享同一组内容类型,新增了内容类型集线器的功能。你可以指定一个网站集为“集线器中心”,将它的内容类型发布出来,凡是“订阅”了内容类型发布的其他网站集,就能自动将发布出来的内容类型同步到自己的内容类型库当中。

内容类型集线器是通过Managed Metadata Service这个服务应用程序来运作,所以,需要发布和订阅内容类型的网站集,必须与同一个Managed Metadata Service服务应用程序关联起来。每一个Managed Metadata Service服务应用程序实例,都只能指定一个网站集,作为内容类型集线器“中心”,由它来发布内容类型,而其他网站集只能作为“订阅者”,“订阅”被发布的内容类型。下图是一张内容类型发布和订阅示意图(来自www.chakkaradeep.com)。
SP2010 - Content Type Hubs

在SharePoint 2010管理中心的服务应用程序管理中,选中Managed Metadata Service,然后点击Ribbon中的“属性”按钮:
image

在属性对话框的最下方,填入需要作为内容类型集线器“中心”的网站集路径,这个网站集里面定义的内容类型,将可以发布出来:
image

然后再次选择Managed Metadata Service服务应用程序代理,点击Ribbon中的“属性”按钮:
image

选中与内容类型集线器相关选项前面的复选框:
image

然后,在指定作为内容类型集线器“中心”的网站集里面,你可以从网站内容类型库中选择一个内容类型,然后通过点击“管理此内容类型的发布”链接,来发布这个内容类型:
image

SharePoint 2010服务器上定义了2个内容类型集线器相关的定时器作业,来自动进行内容类型的发布和订阅同步。它们在后台以指定的周期,自动运行以完成发布和同步操作。我们可以在管理中心网站的“监控 - 计时器作业状态”中,找到这两个定时器作业,然后手工强制立即执行(能手工立即启动一个计时器作业,也是SharePoint 2010的一个新功能)。

首先,找到“内容类型集线器”计时器作业,然后点击“立即运行”按钮:
image

然后,在定时器状态页面中,切换视图到内容类型“订阅者”网站集所在的Web应用程序,找到“内容类型订户”定时器作业,并手工立即启动它的运行:
image

然后在内容类型“订阅者”网站集的网站内容类型库当中,您应当就会看到被同步过来的内容类型了。在“订阅者”网站集管理页面中,有一个“内容类型发布”链接,点击后能看到所有被同步过来的内容类型:
image

注意,被同步到“订阅者”网站集中的内容类型,是不能被修改的。如果你希望在“订阅者”网站集中,对从集线器“中心”同步过来的内容类型再进行适当的修改,例如增加一个字段,那么可以再创建一个新的内容类型,并继承自那个同步而来的内容类型,然后按照要求修改新内容类型即可。

posted on 2009-12-23 23:48:28 by kaneboy  评论(3) 阅读(6419)

SharePoint 2010 新体验6 - 开发人员面板

(这一辑是有关开发的内容)

在开发SharePoint 2007应用程序的时候,性能是我们很可能面临的一大挑战。我们最不希望看到的,就是用户刷新一个页面之后,需要等上好几秒钟(或更长时间),才能看到页面缓慢的打开。如果真的遇到性能上的问题,那么在进行性能优化之前,第一个需要了解的事情,就是“系统性能瓶颈在哪里?”也就是说,如果不能找到系统运行缓慢的原因,那么性能优化也就无从着手了。

找到系统瓶颈的工具有很多,从Windows Server内置的性能监控器,到SQL Profile、CLR Profile等等,都是非常有用的工具。而对于一个SharePoint页面,似乎则没有什么特别好用的恶工具,能够快捷明了的告诉开发人员,页面上的各个部件对于性能,都会造成什么样的印象,都各自占用了多长的运行周期。

开发人员面板(Developer Dashboard)是在SharePoint 2010中一个新增的功能。它是一个位于页面下面的信息面板,能直接显示出当前页面上的各个组件的运行时间、当前页面的运行会产生哪些数据库调用、每个数据库调用又会占用多少时间等等信息。如果发现某个页面运行缓慢,那么通过开发人员面板,开发人员就可以迅速找到导致页面慢如蜗牛的罪魁祸首了。

下面是SharePoint 2010工作组网站默认首页的开发人员面板:
image 

其中包含了页面上各个控件的执行时间:
image 

当前Web请求的一些有用信息:
image

当前页面所引发的所有数据库的调用,以及它们的执行时间:
image

点击每个数据库调用,还能看到这个数据库调用的详细信息,包括所执行的SQL语句全文、调用堆栈、IO Stats等信息:
image 

开发人员面板是一个服务器场级别的设置,它可以在三个状态间进行切换:关闭(默认状态)、打开、按需打开。当它处于打开状态时,每个页面(包括网站页面和应用程序页面)的下方都会显示开发人员面板。当它处于按需打开状态时,每个页面的右上角会有一个管理员可见的小图标,管理员可以点击这个小图标切换显示或关闭开发人员面板。

更改服务器场开发人员面板设置的方法是使用stsadm.exe命令行指令:
image

上面的指令中,-pv参数的值可以是on、off、ondemand,分别表示打开、关闭、按需打开。

如果愿意,你还可以在代码中更改服务器场开发人员面板的设置:
image

不过要注意的是,由于SharePoint的安全限制,上面的代码只能运行在管理中心网站的页面上,或是独立的Windows应用程序(比如命令行程序)中。如果试图在普通网站的页面上运行这些代码(比如将代码放到一个Web Part中,然后将其部署到一个工作组网站页面上),将会抛出SecurityException。

posted on 2009-12-08 23:15:40 by kaneboy  评论(0) 阅读(7091)

SharePoint 2010 新体验5 - Office Web Applications

Office Web Applications可以让用户在浏览器里面,直接查看和编辑Word、Excel、PowerPoint和OneNote文档,而无需在客户端安装相应的Office程序。

在网站集功能管理中,激活“Office Web Apps”,就能在当前网站集使用Office Web Apps功能了:
image

Office Web Apps的使用非常简单,直接使用文档的操作菜单中的“在浏览器中查看”和“在浏览器中编辑”菜单项就可以了:
image

当然,由于浏览器的能力限制,不可能做到像Office客户端程序那样丰富的编辑功能:
image 

能“插入”的项目也比较少:
image

但有些功能还做得像模像样:
image

这是编辑PowerPoint幻灯片的样子:
image

利用Office Web Apps播放幻灯片的效果相当不错,包括幻灯片中的动画效果,都基本能够原样的表现出来。

Office Web Apps另外一个值得一提的特性,就是它能支持多人同时在浏览器里面对一个文档进行编辑(但Word和PowerPoint文档在Beta2中不支持多人同时编辑,不知道正式版的情况如何)。

比如,一开始只有一位同志在浏览器中编辑这个Excel工作表,在右下角能看到“1 person editing”的提示信息:
image


这时,另外一位同志在浏览器中也打开了同一份文档开始编辑:
image

这时页面右下角会立即出现提示信息,告诉用户,有另外一位同志,也开始编辑这个工作表了:
image

点击后能看到当前编辑者的名单: 
image

那么多人打开同一份文档编辑的时候,是如何反应别人的编辑情况呢?Office Web Apps会自动将每个人的修改信息,发送给其他编辑者,这样,在每个人的浏览器中,都能反应出所有编辑者的修改结果。

最后,Office Web Apps是否仅支持IE浏览器呢?答案当然是否定的。在上面的两人同时编辑文档的截图中,您应该能看出来,右边那位同志使用的,是FireFox浏览器。

更新(2009/12/08):
1、对于多人同时编辑文档,支持情况如下:
Excel文档支持多人通过Office Web Apps同时编辑;
Word和PowerPoint文档支持多人通过Office客户端程序打开文档实现同时编辑;
OneNote文档支持多人通过Office Web Apps或通过Office客户端程序打开文档同时编辑。
2、Office Web Apps支持仅允许用户通过浏览器查看文档,而不允许用户下载文档。

posted on 2009-12-05 03:44:04 by kaneboy  评论(8) 阅读(7972)

SharePoint 2010 新体验4 - SharePoint Workspace

在Office 2010客户端程序中,增加了SharePoint Workspace 2010。这是一个SharePoint 2010的“客户端”程序,可以用来离线同步SharePoint网站的文档和数据。

在SharePoint网站的“网站操作”菜单中,有一个“同步到SharePoint工作去”菜单项:

image

文档库的Ribbon菜单中也同样有这样一个菜单项:
image 

点击这个“同步到SharePoint工作区”,就会自动启动客户端的SharePoint Workspace:
image 

当然,我们可以仅仅将所需要的网站内容同步到本地:
image

配置完成了同步之后,在SharePoint Workspace中就能看到与SharePoint网站同名的工作区:
image 

打开这个工作区,我们就可以看到同步到本地的所有SharePoint数据了:
image

可以看到,我们通过SharePoint Workspace,基本上可以完成绝大部分对SharePoint网站数据的操作。比如,对于文档库,我们同样可以在SharePoint Workspace中进行新建、上载、签入/签出、搜索等等操作。当然,对文档的查看和编辑更是没有问题。
image

操作列表中的列表项,也同样没有问题。比如,为“任务”列表新增一个列表项:
image

列表中定义的视图,同样也能在SharePoint Workspace中得到体现:
image

在SharePoint Workspace中对网站数据进行了修改之后,可以通过“同步”按钮将数据同步回SharePoint服务器。
image

有了SharePoint Workspace,用户能够更加方便的使用SharePoint。用户可以将SharePoint网站的数据同步到自己的笔记本电脑上,这样即使下班回家,也能通过SharePoint Workspace访问和编辑SharePoint网站上的数据,第二天回到办公室,连接上网络之后,再将更改同步回SharePoint服务器。

另外一个应用场景是可以更方便的发布信息。如果一个用户每天都需要向SharePoint网站的某个列表中发布数据,例如,向“通知”列表发布新的部门通知,有了SharePoint Workspace,用户不必在浏览器中打开SharePoint网站,而是可以直接在SharePoint Workspace中向“通知”列表中添加新的数据,然后再将这些数据同步到SharePoint网站。

posted on 2009-12-05 02:35:30 by kaneboy  评论(4) 阅读(7969)

SharePoint 2010 新体验3 - 文档集

有时候,我们会有一组关联度很高的文档,它们都是属于某个主题,或通常互相引用。比如,关于某个项目的一组Word文档,或是TechEd会议的所有SharePoint相关的幻灯片文档。对于这样一组关联度很高的文档,在SharePoint 2007中,我们要么将它们放在一个单独的文件夹中,要么单独创建一个文档库存放它们。SharePoint 2010增加了一个新特性:文档集,就是用来专门管理一组关联度很高的文档。

首先,在网站集的功能管理中,激活“文档集”功能:
image


然后,为希望使用文档集功能的文档库,添加上“文档集”内容类型:
image
image

然后在这个文档库的“新建文档”菜单中,就会增加“文档集”选项:
image

在新建文档集的窗口中,输入文档集的信息:
image 

文档集被创建之后,会有一个专门的文档集页面,来让用户查看和管理这个文档集:
image 

对一个文档集,我们可以对它进行相应的管理,包括为它设置单独的权限、为它附加工作流等等:
image

我们为文档集上载一组文档:
image

在文档库的视图中,一个文档集显示成一个项目(虽然它里面实际包含了多个子文档):
image

当使用搜索功能的时候,文档集中的文档可以被直接搜索到,同时文档集本身也会被包含在搜索结果中:
image

posted on 2009-12-05 01:40:15 by kaneboy  评论(2) 阅读(7066)

关于SharePoint 2010 Beta2的安装

在拿到SharePoint 2010 Beta2的安装文件之后,安装它整体而言并不太麻烦。博客园的wengnet写了两篇图文并茂的文章介绍SharePoint 2010的安装(这里这里)。如果您在安装的时候遇到问题,下面是一些可能有帮助的信息:

1、安装序列号在这里
2、动手安装之前最好仔细阅读这篇文章。里面包含了你需要下载的补丁、当与DC安装在一起时如何启用Office Web App等大量提示性信息。
3、这里有一篇非常完整的从头到尾安装SharePoint 2010的文章,全程有截图和说明。
4、如果在尝试安装一个虚拟机,可以参考这里,按照说明注册后下载一个指导的PDF文档。
5、这个版本毕竟还是测试版,不可能没有问题。如果遇到了安装和开发的问题,请参考这里
6、如果在使用Forms Services时出现“StateServiceLocalizedException”异常,请参考这里

posted on 2009-12-02 01:42:47 by kaneboy  评论(2) 阅读(7728)

SharePoint 2010 开发人员与IT专业人员学习指南

花了一点时间,把微软发布的一份SharePoint 2010学习指南翻译成了中文。内容其实不是很多,就两页,主要是当前一些学习资料的链接。如果想开始学习SharePoint 2010,倒是一份不错的学习指引。

image

点击下载PDF文件

posted on 2009-12-01 23:02:05 by kaneboy  评论(2) 阅读(7124)

下载 SharePoint Server 2010 Public Beta (包含中文版)

SharePoint Server 2010 Beta
Office Web Apps Beta
SharePoint Designer 2010 Beta (64-bit) (32-bit)
Visio 2010 Beta (64-bit) (32-bit)
Project Server 2010 Beta
Project Professional 2010 Beta (64-bit) (32-bit)
FAST Search Server for SharePoint 2010 Beta
Office Pro Plus 2010 Beta

所有的下载(除了FAST Search Server),都可以选择中文版。

posted on 2009-11-19 02:46:47 by kaneboy  评论(3) 阅读(9524)

SharePoint 2010新体验2 – Ribbon界面

使用过Office 2007的同学一定知道,Office 2007引入了一种全新的界面模式:Ribbon。在SharePoint 2010中,界面风格也将使用类似的Ribbon界面。Ribbon界面所显示的菜单和选项,将随着用户所在的页面以及用户当前可以进行的操作,而动态的进行调整。

下图是使用“Team Site”模板所创建出来的一个SharePoint 2010网站的首页:

clip_image002

在页面的上方区域,就能够看到相关的两个Ribbon面板:

clip_image004

其中“Browse”是标准的浏览模式,而“Page”,则表示了这个Ribbon面板中将放置与当前正在浏览的页面有关的页面操作。如果我们点击“Page”面板,就能够看到:

clip_image006

在“Page”这个面板中,包含了“Edit”(编辑当前页面)、“Check Out”(将当前页面签出)、“Edit Properties”(修改当前页面的属性)等按钮。有一些按钮本身是包含了子菜单的,比如“Edit”按钮:

clip_image008

如果我们点击“Edit”按钮,开始编辑当前页面,可以看到页面上方的Ribbon区域所显示的面板,也会自动调整为相应的编辑工具:

clip_image010

在页面编辑状态之下,我们可以使用Ribbon中的“Save”按钮,来保存我们所进行的更改:

clip_image012

现在让我们打开一个列表,可以看到,列表视图也发生了很大的变化。用户的所有操作,同样全部被放置到了上方的Ribbon区域:

clip_image014

对于列表而言,Ribbon区域中所显示的“List Tools”中的“Items”和“List”,分别表示了与列表项和列表相关的操作。比如,当我们点击“List”时,就能看到各种与当前列表相关的操作出现在了Ribbon区域:

clip_image016

现在让我们尝试添加一个新的列表项,这时可以看到另外一个界面上的重大变化,“对话框”的出现:

clip_image018

在2007版本中,几乎所有的界面都是通过单独的页面来实现,当用户需要添加或编辑列表项时,都是转到相应的页面,完成操作后再跳转回来。SharePoint 2010的“对话框”界面,使用户的操作更简洁,也减少了页面之间的跳转。

对于列表项的编辑,同样适用了“对话框”界面。除此之外,为了方便用户同时对多个列表项进行操作,列表视图中在每个列表项前面都添加了一个复选框,通过使用这个复选框,我们能一次对多个选中的列表项进行操作。比如,同时删除多个列表项:

clip_image020

或是在文档库中同时签出多个文档:

clip_image022

SharePoint 2010的列表还新增了一种编辑模式:Inline Editing。只要在列表视图中启用Inline Editing,用户就能够直接在列表视图中点击列表项左侧的编辑图标,编辑当前列表项,然后再通过点击左侧的保存图标,快速完成列表项的编辑:

clip_image024

posted on 2009-11-04 02:17:13 by kaneboy  评论(11) 阅读(9859)

SharePoint 2010新体验-1

这个系列的文章,是为了帮助大家更好的了解SharePoint 2010。拥有SharePoint 2007的经验能够帮助您更容易的理解本系列的文章,但我会尽量使没有SharePoint 2007经验的读者也能不困难的进行阅读。

下图是一张SharePoint 2010基本架构图,它简要的描述出了SharePoint 2010的基本结构。

clip_image002

当我们说“SharePoint 2010”时,实际上是包含了SharePoint Foundation 2010和SharePoint Server 2010这两个产品。SharePoint Foundation在之前的版本中,被称为Windows SharePoint Services(WSS)。SharePoint Foundation是SharePoint Server的基础构件,SharePoint Server依赖于SharePoint Foundation。我们可以在系统中仅安装SharePoint Foundation,而不安装SharePoint Server(比如,由于价格的原因),但是如果我们直接安装SharePoint Server,则会默认的安装上SharePoint Foundation。

如果本文中没有明确的指出,那么SharePoint 2010默认包含了SharePoint Foundation 2010和SharePoint Server 2010。

SharePoint 2010完全基于x64架构,且不再包含x86版本。这也就决定了SharePoint 2010所要求的硬件和软件环境:

  1. 1. 服务器硬件必须支持x64;
  2. 2. SharePoint 2010服务器的操作系统必须使用Windows Server 2008 x64或Windows Server 2008 R2 x64;
  3. 3. SharePoint 2010服务器所使用的数据库必须是SQL Server 2005 SP2 x64或SQL Server 2008 x64。

如果您希望将现有的SharePoint 2007系统升级到SharePoint 2010,那么首先,必须将SharePoint 2007系统迁移至x64环境,包括硬件、操作系统和数据库,然后才能顺利的将SharePoint 2007升级到2010版本。

为了方便SharePoint开发人员,SharePoint 2010提供了一种方式,允许开发人员将其安装到64位的Windows Vista和Windows 7操作系统之中。这样,开发人员可以在自己安装了Windows Vista或Windows 7的开发环境中,使用Visual Studio 2010进行SharePoint应用程序开发。(后续文章将详细介绍如何在Windows Vista和Windows 7上安装SharePoint 2010。)

SharePoint是一个基于.NET/ASP.NET技术的Web应用平台。SharePoint 2010基于.NET Framework 3.5 SP1版本。没错,虽然SharePoint 2010的开发将主要使用Visual Studio 2010,但它使用并依赖于.NET 3.5 SP1,而并非.NET 4.0。

Office 2010(在本系列文章中,“Office 2010”指Office 2010系列的客户端软件,如Word、Excel、SharePoint Designer等)与SharePoint 2010有了更好的集成性。这体现在:

  1. 1、 SharePoint Designer 2010功能更丰富,比如,它内置了更强大的工作流设计器,并且可以通过Business Connectivity Services直接连接到数据库;
  2. 2、 在Visio 2010中,可以直接设计SharePoint 2010工作流,然后将设计好的流程导出至SharePoint Designer 2010的工作流设计器;
  3. 3、 Groove 2007变成了SharePoint Workspace 2010,它现在可以将SharePoint网站中的文档库和列表数据,同步到客户端之中,以实现离线访问,同时允许用户在本地编辑文档库和列表数据,然后同步到SharePoint网站中。

posted on 2009-10-30 14:21:07 by kaneboy  评论(7) 阅读(11225)

Let's talk about SharePoint 2010

从北京时间昨天晚上开始,随着SharePoint Conference 2009开幕,有关SharePoint 2010的NDA就结束了。这也就是说,无论是MVP,还是参加了SharePoint 2010 TAP的用户,都可以开始自由的在博客、论坛上撰写或讨论有关SharePoint 2010的内容。

SharePoint Conference 2009的网站首页上,已经可以收看到会议第一天早上的Keynote视频。另外还有一些不错的视频也被放在了SharePoint Conference 2009会议网站上,比如SharePoint 2010 Customer Excitement

刚刚上线的SharePoint 2010 Developer Center上面已经有了不少有价值的内容,比如2010 SDK。如果您是一名SharePoint Application Developer,那么SharePoint 2010 Developer's Evaluation Guide是一定要看的。如果你是一名SharePoint Administrator,那么也可以阅读SharePoint 2010 IT Pro's Evaluation Guide

SharePoint 2010的公开测试版将在11月份发布。

posted on 2009-10-20 19:54:02 by kaneboy  评论(0) 阅读(9331)

Meet SharePoint 2010 at TechED China 2009 !

一年一度的TechED将在今年11月5日-7日,在北京国家会议中心登场。今年的TechED取消了上海和广州站(金融危机的原因?),而只保留了北京站。对于不少华东华南的朋友来说,这真是一件纠结的事啊...在本次TechED China 2009中,当然少不了有关于SharePoint的课程,而其中大部分,都是有关于SharePoint 2010的。这应该也将是国内第一次SharePoint 2010技术课程的集体出场。

SharePoint 2010 新技术揭秘
SharePoint 2010 系统管理员秘籍
SharePoint 项目实施团队的成功之道
SharePoint内容管理及合规一致性
从隔靴搔痒到探囊取物 - SharePoint 2010数据访问新特性
用Visual Studio 2010构建SharePoint 2010应用实战体验
先睹为快 -- Office 2010全新生产力平台大揭秘
将分散的信息汇聚为知识和价值 - SharePoint 2010企业搜索
强强联手:Office 2010 与 SharePoint 2010协同办公
SharePoint 2010 Business Connectivity Services:外部业务数据整合利器
InfoPath 2010亮剑 -- 为SharePoint列表设计表单应用
SharePoint 2010 与 Access 2010 构建团队级数据应用

上面的课程中,粗体标注的是我主讲的课程。欢迎捧场!:)

更多有关TechED China 2009的信息,请参考TechED网站。完整课程表请点击这里

posted on 2009-10-14 00:53:58 by kaneboy  评论(2) 阅读(10371)

SharePoint解决方案开发模型系列 - 团队的建立

大约一年前,我曾经在blog上写过一篇文章,讲述了我对于SharePoint解决方案开发模型的一些想法,其中包括了SharePoint解决方案开发的方方面面,从开发团队,到开发环境的建立、物理与逻辑架构的设计、开发流程、信息架构、测试等等等等。这些主题我相信对于SharePoint开发人员、架构师、项目经理而言,都是非常有价值的。

既然直到现在,国内仍然没有任何SharePoint开发书籍(当然也包括我的《SharePoint 2007 开发入门指南》)讲述上面这些主题,所以决定开始在自己的blog上面,陆续就每个主题,撰写一些文章。希望这些文章能帮助到SharePoint技术社区。

每每涉及到比“具体”技术细节更高一层的架构、流程、方法论的东西,通常都很容易引起争议。这是很正常的现象。这些主题和具体的诸如C#语法、怎么做一个Web Part等等都不相同,因为这些主题根本就不会有一个标准答案。每个人心中都对如何设计一个架构、如何实施某个流程都有自己的想法,而环境与条件的不一致,更是使得所谓的“最佳实践”在很多场景中都不适用。所以,如果你对我撰写的文章中的某些内容不认可,没有关系,这些文章中的内容本来就不是“金科玉律”,甚至在你所处的场景中根本就是错误的。这些文章只代表我个人的意见(但其中肯定有不少想法,来自MSDN以及其他人所撰写的博客和文档),同时我也希望它们能成为交流的一个平台。如果你对文章中的内容有意见和想法,欢迎留言。高质量、有价值的留言,通常都能让后来的阅读者受益良多。

任何软件项目的实施,都必须从实施团队开始。所以,首先要讲述的主题,是如何建立一个SharePoint实施团队。

从本质上来说,实施一个SharePoint项目,与其他类型的软件项目,诸如ASP.NET、PHP,都不会有根本的差别。所以一个SharePoint实施团队的组成,也基本上和一个标准的Web项目实施团队相同。在下面的角色描述中,我基本上只会描述和SharePoint相关的部分,而其他通用的内容则会尽量省略。

项目经理

项目经理是整个项目的管理者。他负责指派任务、记录和跟踪进度、向老板们汇报...总之,项目经理的工作就是要保证整个项目处于正常状态,并能顺利完成。在小型团队中,项目经理有可能同时兼任业务分析人员。

业务分析人员

业务分析人员应当与客户充分交流,弄清楚客户的业务需求、流程等等信息(越详细越好)。业务分析人员与架构师一起工作,撰写出应用系统的功能规格说明书(也可能叫其他名字),不管我们叫这份文档什么名字,它都应当至少包含有:
1、整个项目要解决的问题、目标
示例:“ABC公司是一家卖汽车的企业,它总共有300名销售人员,销售人员希望通过一个“客户管理系统”对他们各自的客户进行管理。在这个系统中,销售人员能够查看自己负责的客户、每个客户的详细信息、每个客户的订单历史记录等信息。同时,销售人员还需要通过这个“客户管理系统”提交季度销售预测报告...”
2、针对用户使用场景的User Cases
这里的User Cases信息,应当详尽的描述出用户使用系统的每个具体场景,它将作为整个团队的一个“基础文档”,架构师和开发人员根据这些信息,才能知道程序最终要实现的效果。每个User Case里面都要包含用户几乎每个操作的描述和说明,以及每个主要界面的图示(使用Visio或其他工具绘制),也就是说,它不能含糊,而应该清晰、明确、有针对性。
示例:“User Case 15 - 销售人员Dashboard”
“销售人员在“客户管理系统”主页上点击“Dashboard”按钮(参考User Case 5),就能够打开自己的Dashboard...Dashboard会自动校验当前浏览用户的身份和权限,如果的Dashboard以两栏的方式来展现信息(参考图15-3),其中左栏自上而下会包含5个链接,分别是...销售人员点击了左栏的“历史订单数据”链接之后,页面将转向到“历史订单数据”页面(参考User Case 26)...中间的向右箭头是一个可以允许销售人员将右栏折叠起来的图标,在点击它之后...销售人员可以点击右上角的“返回”图标,以返回到“客户管理系统”主页...”

功能规格说明书不涉及具体的技术细节,不包含如何实现每个场景的技术说明,不包含系统的设计内容。我们可以这样想象,假设团队中突然来了一个陌生人,他希望能了解这个团队到底在做一个什么项目,这个项目是干嘛的,实现了什么功能,我们可以将这份功能规格说明书给他,而他确实可以从这份文档中了解到他希望了解的这些信息。

这份文档不能由业务分析人员一个人独自写成,而一定要有技术人员(以架构师为主)的共同参与。一方面,架构师的参与可以保证规格说明书中的内容,在技术上是可行且合理的,另一方面,也有助于架构师从业务角度了解系统,明白客户的需求。

我个人对功能规格说明书的重要性非常推崇。在项目中,可能我们不会撰写详细的设计文档,可能我们不会撰写详细的部署文档,但一份详细的功能规格说明书确是不可缺少的。它的重要性体现在:
1、让团队中的所有人都明白我们要构建的是一个什么东西。如果没有这样的一份清晰的功能规格说明书,就不能保证团队的所有人都一致了解团队的目标。如果没有它,业务分析人员会根据客户的描述,在自己的大脑中想象出系统应该有的样子,然后口述给开发人员,并假设开发人员完全明白了自己大脑中的想法,而开发人员则会根据自己从业务分析人员那里听到的,在自己的大脑中又试图去想象系统做出来应该是什么样子的,并假设这就是业务分析人员想要的样子...总之,每个人都会根据自己的“想象”,去猜测别人的意图。而最后当开发人员把最好的东西给业务分析人员演示的时候,通常是业务分析人员大吃一惊:“我kao,怎么是这个样子?这根本和我告诉你的是完全不一样的东东...”而开发人员则会辩解:“胡说,这分明就是我根据你告诉我的要求做出来的...”
2、我们有了一个可以和客户讨论的东西。这份文档可以尽早的交给客户审阅,客户可以根据这份文档,了解到系统做出来会是什么样子,如果不满意,客户也可以及早的和开发团队进行沟通:“嗯,不对,在这个地方,其实我们更希望看到一个选择框,而不是用户自己填...”
3、它是业务分析人员与开发人员之间的一份“合同”。业务分析人员可以充分的假定,开发人员最后交付的,就是功能规格文档中所描述的样子,而开发人员也可以充分的假定,业务分析人员需要的,也是文档中所描述的样子。

值得一提的是,功能规格说明书并不会(也不应该)限制开发人员的“自由”。它仅仅包含对业务场景、系统功能的详细描述,但是不会写上应该如何实现。它肯定不会包含诸如“在这里,我们要创建XYZ类和ZYX类,前者用于从数据库中查询QWE表...”,也不会包含诸如“我们将使用3层结构,并由5个主要模块来构成整个系统框架...”之类的信息。如何设计、如何实现,应该由架构师和开发人员讨论并确定,而没有必要写到功能规格说明书里面。

架构师

架构师首先应当与业务分析人员一起撰写功能规格说明书,以保证其中所包含的内容在技术上的可行性,这同时也能保证架构师非常了解整个系统的业务需求。其次,架构师应该以功能规格说明书为基础,为整个系统设计物理架构和逻辑架构,将整个系统合理的拆分成各个更小的模块与组件,并将模块与组件的开发任务分配给开发人员。架构师还要与开发人员非常紧密的一起工作,与每位开发人员讨论并确定每个模块的实现方式。架构师应当是技术负责人,确保整个项目在技术上畅通无阻。

系统物理架构也就是整个系统在物理上、网络上的拓扑模型。整个系统需要多少台服务器?每个服务器是什么角色?网络设置应该是怎样的?是否需要DMZ区域中也要部署一台SharePoint服务器(如果用户需要从Internet访问的话)?或是使用DMZ中ISA Server来进行Internet发布?这些设计都是属于系统物理架构上的设计。

系统逻辑架构是从逻辑上描述整个系统的结构。整个系统有几个SharePoint服务器场?有几个SharePoint Web Application?几个Site Collection?每个Site Collection是做什么的?会包含哪些内容?为哪个群体的用户服务?各个不同区域的安全模型是怎样的?这些设计就属于系统逻辑架构设计。

子模块与组件的拆分也是架构师需要承担的工作。如何将整个系统拆分成更小的模块与组件?按何种方式与原则进行拆分?比如,是按照传统的N层架构来拆分(将“数据层”模块交给一个开发人员做,将“业务逻辑层”模块交给一个开发人员做,将“UI层”模块交给一个开发人员做...)?还是按照业务功能来拆分(将“客户数据维护”功能模块交给一个开发人员做,将“订单历史数据查询”功能模块交给一个开发人员做,而每个功能模块实际包含了实现那个功能所需的所有从数据到业务逻辑到Web Part展现相关的所有部分...)?不同的拆分方式,就决定了如何为开发人员分配工作,并会影响到后续一系列的诸如集成测试之类的环节。

开发人员

终于,开发人员登场了。开发人员的工作就是理解自己所负责的模块与组件相关的业务需求,仔细阅读(并可能参与编写)功能规格说明书,与架构师紧密合作,将功能实现出来。

作为一个SharePoint开发人员,是非常有挑战性的。需要学习和掌握的知识点非常的多,才可能从容不迫的将手头的开发任务完成。拥有强有力的SharePoint开发人员,是整个项目能否顺利完成的关键因素。

SharePoint开发人员需要掌握的知识包括:SharePoint、ASP.NET、XML、Windows Workflow Foundation、JavaScript、InfoPath,未来还可能需要加上Windows Communication Foundation、LINQ、Silverlight、PowerShell...

测试人员

当我说到“测试人员”时,实际上包含了两类人。一类是对开发人员写出的代码进行测试的人,这种人可能由开发人员(通过贯彻Unit Test流程)兼任,第二类则是在SharePoint解决方案开发过程中,进行集成测试和最终环境测试的人,这种人也可以由某位开发人员兼任。

集成测试是指,在一个独立的集成环境中(通常是一个“干净的”SharePoint服务器场),定期将所有开发人员交付的模块与组件部署进来,并对它们的功能以及它们相互之间的关联进行测试。一个集成测试环境对于SharePoint开发而言是必不可少的。

网络与系统管理员

网络与系统管理员是那些负责建立和管理开发团队所使用的各种环境的人。这些环境包括位于每个开发工作站上的开发环境,进行集成测试的集成服务器环境,进行部署前测试的最终测试环境,以及生产环境。网络和系统管理员负责将开发人员交付的模块与组件,部署到各个环境中(比如测试环境、生产环境)。将有了环境管理员,开发人员也可以快速的得到一个标准的SharePoint开发环境。网络与系统管理员可以由某位非常熟悉SharePoint管理的开发人员兼任。

当然,根据各个项目需求的不同,团队中还可能有其他的角色存在,比如美工、文档编撰人员等。这些我们就不再一一详述了。本系列的下一篇文章,将讲述SharePoint解决方案开发中所涉及到的各个环境。

posted on 2009-09-27 01:52:41 by kaneboy  评论(4) 阅读(11567)

用JavaScript实现一个Timeline

这两天在忙着修饰自己部门的Team Site,老板提出了一个期望,想在Team Site首页上放一个Timeline,这样部门有什么新的事件、日程,都能在Timeline上展现出来。这件事本身并非特别麻烦,但是我们的Team Site是放在公司Hosting的SharePoint系统之中(公司提供SharePoint Hosting服务,每个人/部门可以根据自由要求,以自助的方式申请Site来使用),而公司Hosting的系统,是不允许各个网站的所有者使用任何Server Code(服务器端代码)的。从IT管理的角度来说,这也是非常合理的,但这的确大大限制了各个网站的使用者对各自的网站进行定制的能力。换句话说,我能使用的工具,只有SharePoint内置的各个Web Part,以及SharePoint Designer。(在SharePoint 2010中,提供了一个新的特性:Sandboxed Solution,来解决这个问题,各个网站集的管理员可以通过upload的方式,部署功能与权限受限的Solution Package到网站集之中,但又不会影响其他网站集和整个服务器场的安全与稳定。)

在经过一番考虑之后,我确认在不允许服务器端代码的前提下,是可以通过JavaScript和HTML的能力,实现一个Timeline的。下面这张图是最终实现后的效果:
image

这个Timeline分成了3栏,从上至下分别是日、周、月视图,用户可以使用鼠标对每个栏进行滑动操作,以查看之前和之后日期的各个事件。Timeline中的事件,来自于网站中一个日历类别列表中的数据,这样网站使用者只用在列表中添加新的事件,Timeline中就会自动显示出来:
image

实现的关键是两点:
1、使用JS从网站列表中,获取到所需的列表项数据;
2、使用JS和HTML,在SharePoint页面上渲染出Timeline。

首先,我在网站中使用“日历”列表模板,创建了一个新列表。由于在Timeline控件上,我只希望能够显示当天前后30天之内发生的事件,为了更容易的取到当天前后30天的事件列表项,我在列表中创建了一个新的视图,在这个视图中只显示事件开始时间是位于当天前后30天的事件。为什么创建这样的一个视图就能方便我们在页面上用JS获取想要的数据,看到后面大家就明白了。

为了让这个新视图能进行查询过滤,我为列表创建了两个新的计算类型字段,"30DaysBeforeStartTime"和"30DaysAfterStartTime",下图显示了"30DaysBeforeStartTime"的定义方法:
image

"30DaysAfterStartTime"的定义方法也类似,只是公式变成了"=[Start Time]+30"。

很多人都不知道在计算字段中,应该如何使用公式。在这个页面上,有能够使用的所有公式和函数的说明,这里还有一些最常用的公式的示范。

有了这两个字段,我们就可以为新的视图来设置过滤条件了,通过下图中的条件,就能过滤出当天的前后30天之类的事件:
image

有了这个新的视图之后,我们就能保证,我们需要在Timeline中显示的数据,肯定都会被这个视图所包含。接下来我们进入到JS阶段...

如果要用JS获取SharePoint网站中的数据,比较靠谱的方法是用JS调用SharePoint的Web Services接口。SharePoint提供了不少Web Services接口,让我们可以在各种平台和语言中调用,其中就包括运行在页面上的JS。我们需要的是能够从列表中获取数据的Web Services接口,这个接口位于Lists Web Service里面,它提供了一个GetListItems()方法,让我们拿到列表项数据。其中,GetListItems()方法的第二个参数:"viewName",就可以让我们指定列表的一个视图,作为取数据的筛选条件。当然,我们也可以使用GetListItems()方法后面的参数来重新指定筛选条件,但是通过列表视图来制定筛选条件,要简单很多,而且修改起来也容易得多。

如何在JS中调用Web Services的方法在网络上能找到很多很多的文章,我就不再重复了。但我要推荐一个不错的JS库,使用这个JS库,可以免去手工构建SOAP包的麻烦,而且使用也相当的简捷。它包含许多的.js文件,将这些.js文件上载到网站的某个文档库中即可(实际上,并不一定需要复制所有的.js文件,比如,对于我的要求,我只用复制"SPAPI_Core.js"、"SPAPI_Types.js"和"SPAPI_Lists.js"即可)。我将所有这些乱七八糟的文件都放在一个名叫"SupportingFiles"的文档库中:
image

然后,用SharePoint Designer打开网站的母版页文件(默认是"default.master"),添加上对这几个.js文件的引用(图片上显示出还添加了对"http://simile.mit.edu/timeline/api/timeline-api.js"的引用,这个东东下面会讲到):
image

使用上面所介绍的那个JS库,下面所示的代码就可以让我从一个列表中,将列表项取出来:

function getCalendarListItems()
{
    var lists = new SPAPI_Lists("网站URL
");
    var items = lists.getListItems(
        "Timeline", // 要获取数据的列表的显示名称
        "{14CB7B04-46AA-421C-B6B2-C5FBEEBA9F5B}", // 视图的GUID,注意两边要加上大括号
        "", // 查询条件
        "", // 要返回的字段
        100, // 要返回的数据的最大行数
        "", // 查询选项
        null // 网站的GUID,null表示使用上面的SPAPI_Lists构造函数里面的网站URL所对应的网站
        );

    if (items.status == 200)
    {
        var rows = items.responseXML.getElementsByTagName("z:row");       
        return rows; // 如果获取数据成功,将所有数据放在一个数组中,然后返回
    }
    else
    {
        return null;
    }
}

通过JS拿到所需的日历事件数据之后,接下来,就是如何在页面上用HTML+JS渲染出一个Timeline。作为一个典型的ELC(Exist Library Caller),我首先想到的是到网上找找是否已经有人做过类似的东东,果然,在Google Code上就被我找到了一个,嘿嘿嘿...

在这个名为SIMILE Widgets的工具集中,包含了一个用JS实现的Timeline。经过在文档中一阵乱翻,下面的JS代码就能够帮我实现想要的效果(第一行不是JS代码,而是JS代码里面会使用的一个div元素,Timeline就是通过它显示出来):

<div id="my-timeline" style="height: 120px; border: 1px solid #aaa; font-size: 9pt"></div>

var resizeTimerID = null;
function onResize() {
    if (resizeTimerID == null) {
        resizeTimerID = window.setTimeout(function() {
            resizeTimerID = null;
            tl.layout();
        }, 500);
    }
}
window.onresize = onResize;

function formatDateString(originDateStr)
{
    var yearStr = originDateStr.substr(0, 4);
    var monthStr = originDateStr.substr(5, 2);
    var dayStr = originDateStr.substr(8, 2);       
    return monthStr + "/" + dayStr + "/" + yearStr + " " + originDateStr.substr(11);
}

function createTimeLineAndEvents()
{
    var items = getCalendarListItems();
    if (items == null)
    {
        alert("cannot got items from list.");
        return;
    }
    var eventSource = new Timeline.DefaultEventSource();
    for (var i = 0; i < items.length; ++i)
    {
        var ows_EventDate = formatDateString(items[i].getAttribute("ows_EventDate"));
        var ows_EndDate = formatDateString(items[i].getAttribute("ows_EndDate"));
        var ows_Title = items[i].getAttribute("ows_Title");
        var ows_Location = items[i].getAttribute("ows_Location");       
        var eventDate = new Date(ows_EventDate);
        var endDate = new Date(ows_EndDate);
        var event = new Timeline.DefaultEventSource.Event(
            eventDate, //start
            endDate , //end
            eventDate, //latestStart
            endDate , //earliestEnd
            false, //instant
            ows_Title, //text
            ows_Location //description
        );
        eventSource.add(event);
    }

    var bandInfos = [
        Timeline.createBandInfo({
            trackGap:       0.2,
            width:          "60%",
            intervalUnit:   Timeline.DateTime.DAY,
            intervalPixels: 100,
            timeZone : 8,
            eventSource: eventSource
        }),
        Timeline.createBandInfo({
            showEventText:  false,
            trackHeight:    0.5,
               trackGap:       0.2,
            width:          "25%",
            intervalUnit:   Timeline.DateTime.WEEK,
            intervalPixels: 150,
            timeZone : 8,
            eventSource: eventSource
        }),
        Timeline.createBandInfo({
            showEventText:  false,
            trackHeight:    0.5,
               trackGap:       0.2,
            width:          "15%",
            intervalUnit:   Timeline.DateTime.MONTH,
            intervalPixels: 400,
            timeZone : 8,
            eventSource: eventSource
        })
      ];
      bandInfos[1].syncWith = 0;
    bandInfos[2].highlight = true;
    bandInfos[2].syncWith = 1;

    var timeLine = Timeline.create(document.getElementById("my-timeline"), bandInfos);
}

_spBodyOnLoadFunctionNames.push("createTimeLineAndEvents");

唉,实在是有点长,本来不想全部贴出来,可想到也许有人要用的话,所以就...另外,别忘了在母版页里面,添加对"http://simile.mit.edu/timeline/api/timeline-api.js"的引用(如上面的截图所示)。

把上面的这些JS代码(以及一个"div"标签)都放到一个单独的.htm文件中,然后在想要显示Timeline的页面上放一个内容编辑Web部件。通过设置内容编辑Web部件的属性,告诉Web部件从那个.htm文件中去拿要显示出来的HTML源码(这种方式能让我们直接使用SharePoint Designer编辑那个.htm文件中的HTML和JS源码,而不必使用内容编辑Web部件内置的那个笨拙编辑器):
image 

OK,完成。另外提一下,在SharePoint 2010中提供了专门的Client OM,它直接支持使用ECMAScript(标准名词解释:ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言。这种语言在万维网上应用广泛,它往往被称为JavaScript或JScript,但实际上后两者是ECMA-262标准的实现和扩展。)来访问SharePoint。

posted on 2009-09-24 23:38:26 by kaneboy  评论(3) 阅读(11844)

《Microsoft Office SharePoint Server 2007 管理员指南》配套CD

本书的中文版并没有附带配套CD,如果你需要第25、26章的代码,可以通过下面的链接下载原书的配套CD(由于在版权方面的考虑,其中删除了部分内容)。

posted on 2009-09-12 18:57:03 by kaneboy  评论(1) 阅读(12193)

SharePoint 2010 Technical Preview “半公开”发布

今天,微软“半公开”发布了SharePoint 2010 Technical Preview。这是第一个对外发布的SharePoint 2010测试版本,它将提供给TAP(技术预览计划)参与者和MVP等少数群体。如果您是上面所列出的群体中的一员,那么恭喜您,您应该能直接拿到SharePoint 2010 Technical Preview相关的安装文件、文档和其他资料。如果不是,那么请继续往下阅读…

SharePoint 2010相比2007,从我的感觉来说,并没有“革命性”的突破,但在各个方面都有不少增强和改进。Office Web Application肯定是一大亮点。通过SharePoint 2010,用户可以直接在浏览器中查看和编辑Word、Excel、PowerPoint文档。当然,在大家所关注的开发支持方面,也有了相当大的改进。Visual Studio 2010中将直接内置SharePoint项目模板。如果您现在正在开发SharePoint 2007的项目,那么建议使用VSeWSS 1.3,微软有计划发布将VSeWSS 1.3项目升级到2010项目的工具。 

sharepoint.microsoft.com网站上,已经开始添加SharePoint 2010的内容,其中比较有用的包括:
SharePoint 2010 Overview视频
SharePoint 2010 for Developer视频
SharePoint 2010 for IT Pro视频

学习SharePoint 2010最好的方法,可能就是参加今年10月份在拉斯维加斯举行的SharePoint Conference 2009(简称SPC09),时间为10月19-22日。在SPC09中,将包含大量的有关SharePoint 2010的技术讲座。在参加完SPC09之后(10月23日),您还选择可以参加两个额外的各为期一整天的技术培训讲座:
■ SharePoint 2010 Developer Deep Dive:由Andrew Connell和Ted Pattison主讲
■ SharePoint Server 2010 Installation and Upgrade Workshop:由Todd Klindt和Shane Young主讲

当然,如果您没法参加SPC09,也可以follow它的twitter:twitter.com/SPConf

在微软download网站上,可以下载一份有关SharePoint 2010的开发文档。里面包含了一个关于如何定制SharePoint 2010 Ribbon界面的白皮书,和一个没太多用处的chm文件。

最后是一点安慰:在今年的迟些时候,微软将发布SharePoint 2010的公开测试版本。SharePoint 2010的正式发布日期计划是在2010年上半年。

posted on 2009-07-15 02:33:17 by kaneboy  评论(5) 阅读(18123)

SharePoint磁盘容量规划

最近正好有个朋友问这个方面的问题,如何规划一个SharePoint系统的磁盘容量?如果不能在前期做系统规划(Planning)的时候,确定好所需的磁盘容量,那么就很可能遇到系统上线3个月之后,发现服务器磁盘不够用的尴尬情况发生。

在微软TechNet网站上,有一些相关的文档和白皮书,比如《Capacity Planning and Sizing for Microsoft SharePoint Products and Technologies》。但是如果你懒得阅读白皮书,那么我可以给出一些简要的参数,根据这些参数,你可以快速的估算出一个SharePoint系统所需要的大致磁盘容量。

1、首先,你需要估算出整个系统中将要存放的内容的总容量。如果整个系统的总容量会随着系统的运行而不断增加(很多时候确实如此),那么你就想想你希望整个系统在上线后多长时间之内不想再进行磁盘容量上的升级,然后估算出这段时间之内,系统所存放的内容的总容量。

比如,每个月,所有用户会上传大概10GB文档到SharePoint服务器上。如果你希望SharePoint系统在未来两年之内,不用考虑容量升级的问题,那么这两年内,SharePoint系统中将存放总共240GB的文档。

由于SharePoint 2007文档管理会有“版本控制”和“回收站”的功能,所以在你估算的时候,不要忘记估算这两个功能将要占用的磁盘容量。

比如,在整个系统中,如果你估算大概会有5%的文件会存放到启用了版本控制功能的文档库中(提示:通常,并非所有文件都会需要版本控制的功能,很多文件都是一次性完成,或是无需保留历史版本的,对于这个文件所在的文档库,应该谨慎的使用版本控制功能),并且通过文档库的设置,限制了最多只保留10个主要版本,每个主要版本最多只保留5个次要版本(提示:对于启用了文档版本的文档库,同样需要设置好最多的主要版本的次要版本,避免版本数量无谓的增加太多),那么对于上面算出的240GB文档,你就需要还要加上240GB * 5% * 10 * 5 = 600GB的容量。

这样,我们计算出来的总容量空间将是:240GB + 600 GB = 840GB。

2、由于SharePoint会将所有的网站内容都存储到SQL Server数据库中,对于整个系统的数据库,你要准备所有内容总容量再乘上1.2-1.5倍的空间,给到SQL Server数据库。

比如,对于在第一个步骤里面计算出来的内容总容量840GB,我们就要给SQL Server数据库准备840GB * 1.5 = 1.3TB的磁盘空间。

3、由于SharePoint里面的索引服务(Index Services)会为所有的内容创建索引文件,所以你还需要注意为索引文件准备足够的磁盘空间。索引文件会占用的磁盘空间,可以按照(内容总容量 * (5-12%)) * 3倍这个公式进行计算。

对于5-12%这个比例,需要按照SharePonit中所存储的内容类型来进行适当的调整。例如,对于文档类型的内容(.doc、.docx、.xls、.xlsx、.pdf等),索引文件所占用空间的比例肯定会要比图片文件要高。如果你的SharePoint系统中主要是存放文档类别的内容,那么你就要将这个比例适当的加大,也就是更接近12%。

比如,对于840GB的内容,如果这些只有一部分是文档类型,那么我们要为索引文件准备840GB * 8% * 3 = 200GB的空间。

注意,如果在你的SharePoint服务器场中,索引服务是运行在一台单独的索引服务器(Index Server)上,那么就要在索引服务器上准备这么大的磁盘空间。

4、如果在SharePoint服务器场中,查询服务(Query Services)不是与索引服务运行在同一台服务器上,由于SharePoint会自动将索引文件从索引服务器上复制到运行查询服务的服务器上,所以在所有运行了查询服务的服务器上,同样需要准备足够的磁盘空间,留给索引文件。要准备的磁盘空间容量,计算方法与索引文件的容量相同。

5、最后,为了防止在估算的时候过于乐观,而且你也有足够的预算,那么不妨将上面的所有计算结果再乘上1.5 - 3倍(倍数可以按照您手里的预算来决定,呵呵)。比如,为SQL Server数据库准备2TB的磁盘空间,为索引文件准备300GB的磁盘空间。

最后,介绍两个SharePoint容量规划工具。第一个是微软的SharePoint Capacity Planning Tool,这个工具依赖于System Center Capacity Planner 2007。根据我的使用经验,个人认为这个工具过于花哨,实用价值不太高。:)

第二个工具是HP ProLiant Sizer for Microsoft Office SharePoint Server 2007,它是HP公司发布的一个工具。我对此工具没有什么使用经验。

posted on 2009-07-02 00:33:24 by kaneboy  评论(49) 阅读(19069)

SharePoint技术峰会2009视频(6)

第6讲:SharePoint开发 - 模式与重构(涂曙光)

posted on 2009-06-02 02:02:16 by kaneboy  评论(92) 阅读(19321)

SharePoint Designer 2007 is now FREE !

SharePoint Designer 2007变成了一个免费的产品。

中文版下载

posted on 2009-04-03 12:36:37 by kaneboy  评论(46) 阅读(17551)

给文档库添加项目级权限控制

在SharePoint 2007的列表中,可以通过列表设置直接启用项目级权限控制,使得只有每个列表项的作者能查看和编辑自己的项目。但是,文档库是没有这个功能的。最近有好几次被人为到这个问题,所以写了一个东东,安装到SharePoint 2007中,就可以为文档库启用这个功能了。

image

我将解决方案安装包和源代码都放到了spdoclibitemsecurity.codeplex.com上面,你可以直接到这个项目网站上下载安装包和源代码。

安装方法:
1. 在SharePoint 2007服务器上解压开安装包,然后执行里面的"install.bat",进行安装和部署。
2. 在需要启用这个功能的网站,打开"网站设置",然后进入"网站功能",然后激活"文档库项目级权限"功能即可。
image

posted on 2009-03-08 00:34:58 by kaneboy  评论(103) 阅读(20515)

Video : 将使用AD认证的SharePoint网站配置为表单方式登录

SharePoint网站默认是使用Active Directory集成认证,但如果是用于Internet场景,那么由于难以为访问用户建立AD帐号,解决方法通常是将SharePoint网站配置成使用Forms认证,在一个自定义的数据源(比如SQL数据库或其他的什么地方)中存储这些用户的凭证信息。

但有时候我们会遇到另外一种场景,那就是访问用户确实都在AD中有对应的帐号,但用户就是不习惯使用内置的那个Windows登录窗口,来输入自己的用户名和密码。这个时候,我们可以让SharePoint网站仍然使用AD认证,但是用户登录的时候,使用表单的方式,在页面上输入自己的AD帐号和密码,然后登录。下面的Video展示了完整的配置过程,以及如何做一个定制的登录界面。

第一部分:
<a href="http://video.msn.com/?mkt=uv-en-us&amp;tab=m555&amp;playlist=videoByUuids:uuids:dec9f8b5-e1b5-435f-a303-5e2910cf4919&amp;showPlaylist=true&amp;from=IV2_en-us_videoguide_player&amp;fg=gtlv2" target="_new" title="AD Auentication with Forms-Style Login in SharePoint">Video: AD Auentication with Forms-Style Login in SharePoint</a>

第二部分:
<a href="http://video.msn.com/?mkt=uv-en-us&amp;tab=m555&amp;playlist=videoByUuids:uuids:031b1794-cb9f-40fa-83b3-44189810d9a2&amp;showPlaylist=true&amp;from=IV2_en-us_videoguide_player&amp;fg=gtlv2" target="_new" title="AD Authentication with Forms-Style Login in SharePoint (Part 2)">Video: AD Authentication with Forms-Style Login in SharePoint (Part 2)</a>

Video中用到的配置信息:
(1)要添加到内容Web应用程序的web.config中的配置信息(粗体表示要添加的)
<configuration>
  <connectionStrings>
    <add name="ADConnectionString" connectionString="LDAP://moss070810.contoso.msft/CN=Users,DC=contoso,DC=msft" />
  </connectionStrings>

  <system.web>
    <membership defaultProvider="ADMembership">
      <providers>
        <clear />
        <add name="ADMembership" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString"  connectionUsername="contoso\Administrator" connectionPassword="pass@word1" attributeMapUsername="sAMAccountName" />
      </providers>
    </membership>

  </system.web>
</configuration>
(2)要添加到管理中心Web应用程序的web.config中的配置信息(粗体表示要添加的)
<configuration>
  <connectionStrings>
    <add name="ADConnectionString" connectionString="LDAP://moss070810.contoso.msft/CN=Users,DC=contoso,DC=msft" />
  </connectionStrings>

  <system.web>
    <membership>
      <providers>
        <add name="ADMembership" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="ADConnectionString"  connectionUsername="contoso\Administrator" connectionPassword="pass@word1" attributeMapUsername="sAMAccountName" />
      </providers>
    </membership>

  </system.web>
</configuration>


附注:
(1) 如果你对SharePoint 2007中的自定义用户验证没有太多概念,可以参考我以前写过的一篇文章:《在SharePoint Server 2007中创建定制的用户管理模块》。
(2) 由于对录制Video没太多经验,导致Video声音偏小,下次一定注意。

posted on 2009-03-01 23:49:59 by kaneboy  评论(89) 阅读(17893)

WSPBuilder 中文版Visual Studio 补丁

今天偶然发现,WSPBuilder在中文版本的Visual Studio上面无法正常工作(以前一直使用英文版VS,所以没发现有这种问题),在使用"Build WSP"指令时,会提示"值不在预期的范围内"。到WSPBuilder的项目网站找了一下,发现已经有使用法文版Visual Studio的用户,提出过这个Bug了。我从项目网站上找到源代码,修改了一下,让它可以兼容非英文版本的Visual Studio了。如果你习惯了使用中文Visual Studio,可以到这里下载我上传到页面上的附件"WSPTools.VisualStudio.VSAddIn.zip"。下载后,使用压缩包里面的"WSPTools.VisualStudio.VSAddIn.dll",替换GAC里面的同名文件就可以了。

---------- 不低俗的分隔线 --------------

今天在InfoQ上看到了一篇不错的文章,是几个"大人物"关于Unit Test和TDD的争论,感兴趣的可以看看。

posted on 2009-02-25 15:03:21 by kaneboy  评论(51) 阅读(15643)

SharePoint at .NET技术大会

在这个月上海举行的.NET技术大会上,我将奉献一节名为《基于SharePoint的Web应用开发模型》的课程。由于大会的定位是“面向企业级.NET开发深度应用”,我相信大家想听的一定不是单纯的介绍SharePoint Server,或是怎么做一个Web Part。思来想去,终于定下了《基于SharePoint的Web应用开发模型》这个题目。我希望能在有限的时间内,和大家探讨如何利用SharePoint这个Web开发平台,如何组织一个团队,开发一个大中型的Web应用。内容将包括如何组建团队、如何构建团队开发环境、如何分工、如何有效的利用SharePoint提供的Solution框架来组织我们的项目内容、如何测试(单元测试、集成测试)。当然,除了这些稍微有些"High-Level"的内容,我还希望能探讨,作为一个SharePoint Developer,我们可以对SharePoint的哪些部分下手,如何下手,如何让自己的定制内容(页面、代码、流程)能真正“融合”到SharePoint平台里面,而不是只把SharePoint当作一个大类库和存储库。坏消息是,似乎有太多内容要讲,而每个主题都似乎能讲上很长时间,而好消息是,课程将有70分钟的长度,如果没有记错的话,这已经比TechED的课程长度要长了

See you in Shanghai !

(2009-2-21 更新:从这里下载此课程的PPT)

posted on 2009-02-09 01:52:47 by kaneboy  评论(44) 阅读(17104)

VSeWSS 1.3 CTP 发布

SharePoint Team Blog中公布了VSeWSS 1.3 CTP的消息,请从这里下载。1.3最大的改进之一,是提供了x64版本,以支持在x64机器上进行开发。另外,我最喜欢的改进包括:

新增更多的Project Item,比如,通过"Root File"直接往12hive里面放文件。
image  
VSeWSS的智能化程度也高了一些,如果在Project Explorer里面更改了文件夹名,或是直接删除了文件夹,会自动对SharePoint Solution进行更新,不会像以前那样,直接在WSP View告诉你一个错误信息。

这个新增Feature的对话框很可人...
image

终于有了独立的"Package"选项,而没有必要仅仅为了生成一个WSP包,却不得不使用"Deploy"选项,先生成WSP,再被强迫进行部署...另外,"Quick Deploy"里面的功能很实用。
image 

总结:通过正确的"模仿"WSPBuilder很早就有了的好用且实用的功能,相比1.2版本,这个新版本的可用性明显提高了不少。

posted on 2009-01-14 22:52:18 by kaneboy  评论(48) 阅读(15973)

在SharePoint开发中引入Composite Web Application Block

Composite Web Application Block是Web Client Software Factory中一个用来开发Web应用的框架,它能帮助程序员更方便的使用MVP模式。关于CWAB的更多信息,请参考这里

当我们开发SharePoint界面的时候,比如,创建一个Web Part,如果你希望使用MVP模式,是可以引入CWAB的。在这个文档中解释了如何在SharePoint中使用CWAB,但文档里面的一些步骤,其实不一定是最好的。比如,文档中告诉你,将各个程序集放到Web Application的/bin目录中,但我的建议是仍然将它们部署到GAC里面,这样,你就不需要更改Web Application的web.config中的<trust>节点,将代码的默认信任等级提高了。

嗯,总之,我们可以使用CWAB来方便的基于MVP模式来开发Web Part,比如下图所示的项目结构:
image 

上图中的“KBSample.SiteUser.Module”是CWAB中的一个Module项目,包含了与界面UI分离的业务模块。在“Views”目录中包含了定义View的接口和Presenter类:
image

在“Services”目录中包含了与业务操作相关的Service类:
image

而“KBSample.SiteUser”项目则是专门的SharePoint项目(你可以选择使用VSeWSS,或是其它你习惯的工具),其中包含了用来定义Web Part界面的View的实现。

在下面所示的Service接口中,定义了用来真正和SharePoint Object Model交互以获取数据的Service:
image

在Module被初始化时,将上面的Service注册到Container中:
image

对View接口的定义:
image

在Presenter里面,通过[ServiceDependency]来注入所依赖的Service对象(CWAB通过ObjectBuilder来干这件事),同时定义了当View被载入时的操作:
image 

View是通过一个用户控件来实现的,它实现了View接口,通过[CreateNew]来将一个新的Presenter对象注入进来:
image

别忘记在View被载入时,也要执行一下Presenter中的载入方法:
image

如果你熟悉Web Client Software Factory的话,那么在SharePoint开发中引入CWAB应该不是一件困难的事情。不过,由WCSF提供的那些Template和Recipe都不能使用了,项目的结构,需要我们来手工维护(这样反而给了我们很大的自由度:)。

posted on 2008-12-23 17:25:06 by kaneboy  评论(85) 阅读(16600)

SharePoint : 超级Web Application Framework

在Wikipedia上,对“Web Application Framework”的定义是:

一个Web Application Framework是一个设计为支持动态Web网站、Web应用程序和Web Services开发的软件框架。Web Application Framework的目标是减少在Web开发中,与常见的开发工作有关的问题。例如,许多框架都提供了诸如数据库访问类库、模板框架和会话管理,同时,框架通常都能促进代码复用。(注:http://en.wikipedia.org/wiki/Web_application_framework

Wikipedia的定义虽然清晰明了,但未免过于宽泛。根据这个定义,实际上,我们可以再将Web Application Framework分成两种:
■ Web Application Infrastructure Framework
■ Web Application Building Framework

Infrastrcture Framework提供了用来构建Web应用最底层的各种基础框架,诸如HTTP请求的截取和分配、网站与页面处理框架、会话管理、缓存等等。ASP.NET、PHP、JSP就属于Infrastrcture Framework。

Building Framework则是基于Infrastrcture Framework而构建起来的层次更高的Web应用框架,它的目的包括:
■ 将Web应用开发人员的视角从最底层的网站与页面框架,拉到更上面的基于具体应用的业务功能上
■ 用来支撑大型复杂的Web应用,例如超过上千个网站、上万个页面的Web系统,而且提供对服务器场、负载平衡的支持

在.NET领域,DotNetNuke就是一个典型的Building Framework。有了Building Framework,Web开发人员就可以不用从最底层开始构建Web应用系统,而是可以基于Building Framework,开始构建所需要的应用功能组件。一个Building Framework通常会包含下列内容:
■ 成熟的网站与页面结构框架,使得开发人员不用再基于页面、目录来管理整个Web应用
■ 完善且可扩展的用户、角色与权限管理
■ 灵活的UI模型
■ 内置的数据和文件存储能力
■ 具备完善的功能模块封装型
■ 对必要的功能接口提供API
■ 其他…

clip_image002

对于Web应用的开发来说,从静态网站到动态网站,从Infrastructure Framework到Building Framework,几乎是必然的。随着Web应用越来越复杂,开发人员面临的挑战也越来越大:如何维护和管理上千个网站、上万个页面?如何使Web应用能部署到网络负载平衡的环境中?如何使后台的Services与前台Web请求分离?如何提供完善的系统备份与迁移方案?如果我们必须基于Infrastructure Framework来解决这些问题,那么我们可能得将大部分的项目开发周期,花费在解决这些“底层架构”框架之上(虽然有些开发人员确实更喜欢开发“框架”,而不是一个可用的业务系统)。

clip_image004

当基于Building Framework之上进行开发时,开发人员可以更关注业务需求和业务功能的实现。通常,每一种Building Framework都会有一套专门的对功能模块进行封装和打包的模型,开发人员可以基于这一套模型,将自己开发的功能模块以标准化的方式进行封包。一方面,这样可以使得功能模块的部署变得更简单(避免了基于文件的手工拷贝方式),另一方面,开发人员也更容易的将自己开发的功能模块共享给社区(社区中使用同一套Building Framework的开发人员,可以方便的将拿到的功能模块以标准化的方式部署到自己的环境中)。

待续…

posted on 2008-12-23 16:04:09 by kaneboy  评论(88) 阅读(16919)

一个通过数据库镜像实现SPS 2003门户快速备份与恢复的操作手册

这个操作手册是之前帮一个客户写的,使用了SQL Server 2005 Mirroring来实现SPS 2003的门户的快速恢复,主要目的是在SPS 2003门户的突然不可访问(如数据服务器损坏、服务器群集所在网络不可用等)时,能够用最短时间在另外的地点恢复出门户网站。基本上MOSS 2007的原理类似,参考手册中的方法进行即可。

不过需要注意的是,在决定用SQL Server 2005 Mirroring来实现快速备份和恢复之前,你需要根据你的服务器场环境的具体情况,确定是否SQL Server 2005 Mirroring这种方式确实适用于你的服务器场环境。考虑的因素包括:
■ 对快速恢复所花费时间的要求
■ 网络情况
■ 评估Mirroring可能造成的性能上的损失

点击此处下载。

posted on 2008-12-10 01:03:59 by kaneboy  评论(95) 阅读(15266)

Visual Studio 2010 中的 SharePoint 开发

Chai同学已经在他的blog上贴了文章,讲述VS2010中,针对SharePoint开发的一些增强。虽说VS2010还有一点点远,但是先了解一下也是不错的。嗯,在VS2008上,应该至少还会发布一个VSeWSS 1.4出来。

新的项目模板类型:
image 

内置在VS2010中的Server Explorer:
 image

Feature属性设置界面(可以选择将Project中的指定Item添加到当前Feature中):
image

新的Web Part开发模式,当我们新建一个Web Part时,会同时创建一个“绑定”的用户控件,在Web Part内会内置有包含此用户控件的代码,然后,我们可以直接基于这个用户控件进行可视化设计。
image

Package Explorer
image

对项目新增了“Package”操作,不再只能“Deploy”了。
image

posted on 2008-11-18 22:41:01 by kaneboy  评论(78) 阅读(17218)

QuickPart更新,v1.02

QuickPart已经很久很久很久没更新了,这1个月将它做了一些小小的更新,其中最重要的一项更新是:QuickPart现在不但会搜索Web应用程序的“/wpresources”目录下放置的“.ascx”用户控件,还会搜索“/controltemplates”目录(及子目录)下放置的自定义“.ascx”。做这个看似没太多意义的更新,主要目的其实是可以让使用QuickPart的开发人员,直接使用Visual Studio 2005/2008(加上相应的VSeWSS),来管理、打包用户控件。也就是说,现在,大家可以不用辛辛苦苦的手工将做好的“.ascx”、“.dll”一个一个的拷贝到服务器的相应目录,而是可以使用SharePoint Solution Package的方式,快速的打包和部署可供QuickPart使用的用户控件了。

如何利用Visual Studio,来管理QuickPart部件,可以参考下面的video。如果觉得太小看不清楚,可以直接下载wmv格式的video。


(双击可放大到全屏,wmv格式下载)

链接:QuickPart 1.02下载

posted on 2008-11-15 06:26:33 by kaneboy  评论(49) 阅读(17723)

关于SharePoint解决方案开发模型的凌乱文章…

(注:标题中说的“SharePoint解决方案”,不是指SharePoint Solution Package(.wsp)中的那个“Solution”,也不是Visual Studio中用来包含各个子项目的“解决方案”,而是泛指各种基于SharePoint的应用。)

什么样的问题,是我现在被问得最多,也是最害怕被问的呢?嗯,就是“我对SharePoint开发没什么概念(/头绪/思路),你能给我讲讲吗?”其实,问这样的问题的人,不一定“真的”一点都不了解SharePoint的开发,他可能已经知道了Web Part要如何做出来、事件处理程序怎么写、SharePoint页面要如何进行定制化等等,但是,就是仍然觉得自己的大脑中没有一个清晰的、整体的SharePoint开发思路。一言以蔽之,提问者真正不了解的,准确来说,应该是SharePoint解决方案的完整的开发模型,到底是怎样的?或者换一个更cool的说法,就是所谓的开发方法论的问题。

在我的理解中,SharePoint解决方案的开发模型,确实绝对并非简单的Web Part如何开发、事件处理程序如何写之类的。当然,我不是说这些基础的、对SharePoint各个开发接口的了解不重要,实际上,如果连这些都还没有了解,那么也根本谈不上要了解更“上层”的SharePoint解决方案开发模型了。SharePoint解决方案开发模型应该包括但不限于下面这些主题:
■ SharePoint开发团队应该如何组织和分工?
■ 如何建立SharePoint开发、测试、集成(硬件和软件)环境?
■ 根据用户需求,如何进行SharePoint应用的整体设计(包括数据、界面、User Case…)?
■ SharePoint应用应该如何组织、分拆、组合?
■ 开发人员要如何有效的维护和管理SharePoint项目代码和内容?
■ 如何设计生产环境的拓扑和网络模型?
■ 如何按照信息架构,对SharePoint网站内容进行合理的分类和组织?
■ 如何创建一个高效的部署、迁移模型?

这也是为什么,很多人觉得,看完了《Office SharePoint Server 2007 开发入门指南》,仍然感觉对SharePoint开发存在着很多的疑问和未解。一本入门的书,很难将SharePoint解决方案开发模型的内容给装进去。而且,在编写这本书的2006年,SharePoint 2007甚至还没有正式发布,更不太可能有成熟的SharePoint解决方案开发模型可以借鉴。如果有人要撰写更新的SharePoint开发书籍,就有可能将更多的开发模型方面的内容放进去了:)。在MSN群里面和大家聊天的时候,也曾经头脑发热,提议再写一本相对高级的书,但是…不过,还是希望自己能陆续写一些相关的文章,放到blog上,和大家分享。

posted on 2008-11-15 06:14:35 by kaneboy  评论(36) 阅读(17396)

Office vNext at PDC 2008

伴随着PDC 2008,一大堆新东东一下子被推到了我们面前。Windows 7、AzureVisual Studio 2010

当然,Office也丝毫不逊色。Azure中的Microsoft SharePoint Services(不是Windows SharePoint Services),还有Office Web Applications,都是很吸引人的东东。Microsoft SharePoint Services,是一个可以让开发人员访问Azure中的SharePont功能的东东,通过使用Visual Studio这样的开发工具,开发人员可以快速构建使用到SharePoint能力的应用程序。至于Office Web Applications嘛,嗯,大家终于可以在浏览器里面直接编辑Word、Excel、PowerPoint、OneNote文档了。

MSS
webwordedit430
editingpowerpointweb430

posted on 2008-10-30 01:08:16 by kaneboy  评论(34) 阅读(13963)

【第1页/共6页,191条】
首页
前页
1

Powered by: Joycode.MVC引擎 0.5.2.0