我正在为有经验的ASP.Net开发人员准备SharePoint 2007(以及最终的2010)培训材料,而作为多年的SharePoint从业者,我实在不记得一开始最困难的点在哪里了 - 更不用说现在可谷歌到的SharePoint内容比两年前增加了一个数量级。
话虽如此,哪些SharePoint概念最难理解,或者哪些部分足够深奥,以至于新手SharePoint开发人员刚入门时并不明显?
我正在为有经验的ASP.Net开发人员准备SharePoint 2007(以及最终的2010)培训材料,而作为多年的SharePoint从业者,我实在不记得一开始最困难的点在哪里了 - 更不用说现在可谷歌到的SharePoint内容比两年前增加了一个数量级。
话虽如此,哪些SharePoint概念最难理解,或者哪些部分足够深奥,以至于新手SharePoint开发人员刚入门时并不明显?
我认为最难理解的事情有:
放弃控制。
您无法控制页面上哪些Web部件以及它们如何连接。您只需使它们可以重复使用
您无法控制网站上的哪些列表或它们所包含的字段
其他新的但似乎更容易理解的事情有:
格雷格,
根据我的经验,在处理正确的对象处理(SPWeb和SPSite对象,这些对象又引用非托管COM对象的SPRequest包装器)时会遇到常见的问题,这也是许多可伸缩性、性能和其他编码问题的根源。一旦微软意识到这个问题的规模以及开发人员在这个领域的困惑程度,他们就撰写了一篇大型指南文章(http://msdn.microsoft.com/en-us/library/aa973248.aspx)并开发了SPDisposeCheck工具(http://code.msdn.microsoft.com/SPDisposeCheck)。
这是我对于“新手SharePoint开发人员刚开始接触时不明显”的建议:)
仅供参考!
正如Per Jakobsen所提到的,这是一个关键问题。接下来...
不能随意编辑.aspx和.master文件,否则会导致未定义行为、支持问题,而且通常也不会按预期工作。对于如何组合页面有很好的理解至关重要。
没有(受支持和可靠的)直接查询数据库的方法。这对于习惯于设计/使用专门构建和设计良好的数据库的ASP.NET开发人员非常令人沮丧。CAML查询无法替代优化良好的SQL查询的强大功能。
(更多的是2b):列表之间的关系数据支持较差。这对于企业应用程序来说有些奇怪。
略微偏题,但2003年的HTML标记和CSS是一场噩梦,2007年也没好多少。它很难处理,而且也不美观。您必须付出很大的努力才能产生完全符合Web标准和最佳实践的网站。
总之,通常需要按照“SharePoint方式”来完成任务。这通常不是直接ASP.NET开发人员所喜欢的最高效或最优雅的方式。开发人员喜欢优雅,他们不想放弃控制。
此外,整个产品中还有许多陷阱(Sean提到了一个关键问题),对于毫无戒心的开发人员来说就像小绊脚石一样。了解和理解它们的唯一方法是了解SharePoint - 它是一个庞大的产品。
请参见SharePointDevWiki上的“为什么ASP.NET开发人员不使用WSS?”以获取更多讨论。
了解SharePoint中已有的内容,不要重复造轮子。我支持这个想法。
Per已经为我涵盖了大部分的要点,但我还想再补充一些:
SPContext - 概念性代码执行的概念,例如在事件接收器中的SPContext.Current或Properties对象。
在理解上下文的基础上,还重要了解代码运行的身份,因此可以完成哪些操作-提升(提升特权),模拟(令牌)和执行(Web服务/事件接收器)。
错误处理 - 当唯一的错误是“发生错误”时,每个人都会尖叫,因此了解SP日志和错误代码至关重要。这对于减少追踪令人恼火的XML错误的浪费时间非常重要。
Visual Studio工具 - WSPBuilder,VS Tools for Sharepoint等。通过缩短集成周期来减轻部署和调试的痛苦。
与现实世界架构和实现相关的一切。我是一名开发人员,但如果我想在虚拟环境中尽可能接近客户环境而不必等待官方IT支持,我就必须亲自动手。尝试创建一个带有内部网络、互联网、外部网络、混合认证机制、备用访问映射、主机头配置等的小型农场。这是一项专门的工作,但如果您想开发一些中大型实现,那么您将不得不深入其中。