今天看了一下留言,发现负面的居多,细想大概是以下的原因
- 表达能力有问题
- 中文表达能力有问题
- 用中文表达一个方案的能力有问题
- 这个方案太过简约(或者太过简陋),让人无法理解
希望在后面的blog会有改进(没有保证),写这个周记原本是为了给自己留个底,看客的留言会设法回答
“开发人员大多有一种极端主义思想:好的要最好,精的要最精,全的要最全。”《大道至简-p129》
如果看客是有这种思想,或者有这种倾向,就不应该继续看这篇周记,因为这个方案充满了对这种思想反动。
第十一周
这个方案中不会出现sharepoint的webpart。但是也不会直接使用OM来直接显示内容。在周记中出现的webpart
其实是jquery中使用remote mode调用的Div block(Html).
Kaneboy等所著的《office sharepoit server 2007开发入门指南》中有以下一段
webpart也许对一般意义上的MOSS2007的应用非常重要,但是,在我们的这个门户网站并不是不可或缺的
- 管理员如果不要开发人员的参与,很难完成界面的定制,除非管理员是有相当的水准,但是,管理员通常只有基本的水准,要让他们精通MOSS2007,是有点过分了。而且管理员也不会只管MOSS.
- 门户网站一般由Designer精心设计,尤其是主页,很少可能调整。
- 80%以上的webpart是把运算逻辑(business logic),内容显示(content presetation)封装在一起,一般意义上
是优点,但是在我们的这个门户网站项目中,是个缺点。
- webpart的部署不易,在多服务器的Server Farm环境里,webpart是放在本地,而不是在SQL2005。加上有时为了一个
小小的问题,必须重新部署webpart,重起IIS服务。和本项目的追求最少维护最易维护的目标背道而驰。
- Ajex和webpart有些八字不合,可以找到一些ajex webpart,用过以后,便知离开实用还有距离。
- webpart受限于Sharepoint本身的原因,与javascript的耦合不是非常容易。
下表是一些区别
MOSS Project |
This Project |
|
Development tool |
Visual Studio |
Sharepoint Designer |
Manager |
Webpart manager |
Jquery Framework |
Webpart |
ASP.net2 Webpart |
HTML Div |
Content Display |
Within Webpart |
XSLT |
Logic |
Within Webpart or View |
View / XSLT |
Ajex |
Ajex Webpart |
JQuery Framwork |
Font/color/layout |
within webpart or CSS |
CSS |
Javascript |
not easy with webpart or ASPX |
easy |
- webpart 也可以想办法做到运算逻辑,内容显示分离。但是,难度不小。
- webpart 的调试困难,必须加载后才能调试,无法做到离线开发。
- 对webpart的开发者有相当的要求,对本项目的开发效率,人员配备有极大影响。
- webpart的重用性,经验告诉我们,往往只是停留在纸面上而已。
综上所述,本项目的方案是一个离经叛道的,偏离了正常的MOSS开发的方案。
项目的构想是有技术含量,项目的实施却是没有难度。大部分的工作(XSLT coding)都可以交由低级的开发人员完成。
所以,想从这个周记中找到高技术,高挑战的人会非常失望,只能在这里说“抱歉”
本项目有以下一些基本的认知
- 这个门户网站的主要功能是信息的显示。信息的输入是有一小部分被称为“内容管理者(content owner)”负责。
- 普通用户的界面(User interface)必须尽善尽美。而内容管理者的界面(Content Publish interface)可以因陋就简。
- 在无关大局的情况下,性能,安全是可以妥协的
- 尽量使用成熟的技术,不到万不得已不用新技术。
- 不要求最好,只要求正好满足需求
- 不要求最精,只要求最简
- 不要求最全,只要求最容易,容易管理,容易维护,容易升级,容易移植。
- 能够使用缺省得资源,界面。坚决不做客制,开发。即使需要有些牺牲也在所不惜。
下面的一段在viewlist.aspx中的如何从一个doc Lib里取得XSLT文件(其他的文件类型亦可)
Function getFilebystring(ByVal sPortalUrl As String, ByVal sSPSUrl As String, ByVal sListName As String, ByVal SPFilename As String, ByRef sException As String) As String
' Summary
' (2005.07.19) - 2007.1.5
' sSPSURL is Site URL (such as /sites/testPlatinum )
' sPortalURL is Server URL (such as http://devweb4.mymoss.com
' sListName is List name (such as Shared Documents )
' sException is Error information
Dim doesUserHaveAccess As Boolean = False
Dim spSite As SPSite = Nothing
Dim spWeb As SPWeb = Nothing
Dim spbuffer As String = Nothing
Dim url As String = sListName + SPFilename
sException = ""
Try
spSite = New SPSite(sPortalUrl)
If (String.Compare(spSite.Url, sSPSUrl) = 0) Then
spWeb = spSite.RootWeb
Else
spWeb = spSite.OpenWeb(sSPSUrl)
End If
spSite.CatchAccessDeniedException = False ' turn off force login
spbuffer = spWeb.GetFileAsString(url).ToString
Catch ex As Exception
spbuffer = sException
Finally
If Not (spSite Is Nothing) Then
spSite.Dispose()
End If
If Not (spWeb Is Nothing) Then
spWeb.Dispose()
End If
End Try
Return spbuffer
End Function