MOSS项目开发 周记(第十一周)

今天看了一下留言,发现负面的居多,细想大概是以下的原因
- 表达能力有问题
- 中文表达能力有问题
- 用中文表达一个方案的能力有问题
- 这个方案太过简约(或者太过简陋),让人无法理解


希望在后面的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


 

原文地址:https://www.cnblogs.com/by1455/p/971368.html