我正在尝试为经验丰富的 ASP.Net 开发人员整理 SharePoint 2007(以及最终的 2010)培训材料,并且从事 SharePoint 多年,我真的不记得一开始最糟糕的症结在哪里 - 不是提到 Google 的 SharePoint 内容的数量比两年前增加了一个数量级。
也就是说,哪些 SharePoint 概念最难掌握,和/或 SharePoint 的哪些部分深奥到足以让刚涉足的 SharePoint 新手开发人员不明白?
我正在尝试为经验丰富的 ASP.Net 开发人员整理 SharePoint 2007(以及最终的 2010)培训材料,并且从事 SharePoint 多年,我真的不记得一开始最糟糕的症结在哪里 - 不是提到 Google 的 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 文件是不可能的。会产生一些后果,例如取消重影、支持,并且它通常无法按预期工作。很好地理解 SharePoint 如何组成页面是至关重要的。
没有(受支持且可靠的)直接查询数据库的方法。对于习惯于设计/使用专门构建和精心设计的数据库的 ASP.NET 开发人员来说,这非常令人沮丧。CAML 查询无法替代经过优化的 SQL 查询的强大功能。
(更多的 2b):对列表之间的关系数据的支持很差。对于企业应用程序来说很奇怪。
有点离题,但 HTML 标记和 CSS 在 2003 年是一场噩梦,在 2007 年也好不了多少。使用起来很痛苦,而且也不漂亮。您必须不遗余力地制作一个完全符合 Web 标准和最佳实践的网站。
总而言之,事情通常需要以“SharePoint 方式”完成。这通常不是直接 ASP.NET 开发人员喜欢的最有效或最优雅的方式。开发人员喜欢优雅,他们不喜欢放弃控制。
产品中也有一些陷阱(肖恩提到了一个关键问题),就像小绊线一样潜伏在毫无戒心的人身上。了解和理解它们的唯一方法是了解 SharePoint——它是一个大产品。
请参阅为什么 ASP.NET 开发人员不使用 WSS?在 SharePointDevWiki 上。
SharePoint 中已有的内容,因此您无需重新发明轮子。我投票赞成这个。
Per 已经涵盖了大部分内容,但我将添加更多内容:
SPContext - concptual 代码执行的概念,例如事件接收器中的 SPContext.Current 或 Properties 对象。
根据上下文,了解代码以谁的身份运行以及它可以完成哪些操作也很重要——提升(提升特权)、模拟(令牌)和执行(Web 服务/事件接收器)。
错误处理 - 当出现的唯一错误是“发生错误”时,每个人都会尖叫,因此了解 SP 日志和错误代码至关重要。这对于减少浪费时间追逐令人恼火的 XML 错误非常重要。
Visual Studio 工具 - WSPBuilder、VS Tools for Sharepoint 等。通过缩短集成周期减少部署和调试的痛苦。
使用 SQL Server 的报告服务为现实世界的问题创建报告/仪表板,并将其显示在 sharepoint 站点中。网上找到的例子/教程的数量,这件事仍然不够(我猜)。
与现实世界架构和实现相关的一切。我是一名开发人员,但如果我想在我的虚拟环境中拥有尽可能接近的客户端环境,而无需等待官方的 IT 支持,我必须亲自动手。尝试使用 Intranet、Internet、Extranet、混合身份验证机制、备用访问映射、主机标头配置等创建一个小型场。这是一项完全专注的工作,但如果你想开发一些中型到大规模的实现,就必须深入研究。