有哪些方法可以为Sharepoint开发应用程序?

时间:2012-04-02 10:11:07

标签: sharepoint sharepoint-2010 sharepoint-2007

我正在学习如何为Sharepoint开发应用程序。

据我所知,有可能将三种类型集成到Sharepoint中:

  • 沙盒解决方案(资源访问有限,但易于安装等)
  • Farm Solution(仅可从管理员处安装)
  • 标准应用程序(可能是.net MVC),引用Sharepoint程序集以访问SPS功能

这是正确和完整还是我错过了什么?

2 个答案:

答案 0 :(得分:2)

根据您的范围,要求等,有很多方法可以为SharePoint开发。我的知识在SP2007领域比2010年更多,我的答案反映了这一点。

<强>的JavaScript

使用内容编辑器Web部件,您可以自定义SharePoint的外观,与列表数据交互,并使用jQuery和SPServices插件执行一些有趣的UI效果。这些解决方案不需要打包和部署。

自定义内容类型

这些可以通过SharePoint UI创建,也可以通过自定义XML文档定义,并通过WSP进行部署。本质上,这些只是以某种逻辑方式相关的字段定义的集合。可以将内容类型添加到列表中以使所有字段自动可用。此外,它们提供了一种在同一列表中混合和匹配数据的便捷方式(考虑汇总或备份列表数据),尽管我从未以这种方式使用它们。

事件接收器

可以创建事件接收器以响应SharePoint中的特定事件。如果您将事件接收器附加到列表,您可以以同步(-ing)方式监听和响应事件,例如项目或附件被添加,更新,删除 - 这样您就可以实现验证并取消操作 - 或者异步(-ed) - 在SharePoint完成处理项目后进行一些后处理。事件接收器由前端SharePoint服务器处理,后者处理触发事件的请求。这与计时器作业和工作流不同,后者由服务器场中的任何服务器执行,恰好可用。

此外,事件接收器可以根据其类型附加到列表(适用于此ID类型的所有列表),也可以与内容类型相关联,并与列表相关联(当添加内容类型时)列表,事件接收器也添加了。)

功能接收器是一种特殊的事件接收器,因为它们响应功能 被激活或停用以进行一些额外的工作。许多人将此额外工作称为功能装订,因为它允许您按需执行其他任务,否则只能使用XML文档完成。

计时器工作

计时器作业是按计划运行的一段代码。它不像事件接收器那样在W3WP过程中执行,而是通过TimerService执行。因此,SPRequest对象中缺少某些功能或值。开发计时器作业比事件接收器更难以实现,更容易出错,更难调试等。

<强>工作流

可以使用SharePoint Designer或Visual Studio创建工作流。这些功能之间的主要区别在于您在设计时可用的功能。 SharePoint Designer工作流更易于创建和开始,但在SharePoint 2007中往往有问题。此外,它们不容易跨环境打包和部署,而是直接与您创建它们的列表相关联(2007年; 2010年,扩展功能,允许打包甚至迁移到Visual Studio以进行更复杂的自定义)。

使用Visual Studio可以提供更多的深度和功能,但是像计时器作业一样,它们通常很难“正确”#34;它们也由定时服务流程处理。

网页

自定义Web部件与常规ASP.NET Web部件非常相似,在SharePoint上下文中具有一些扩展功能。您可以访问SPRequest对象,从而可以访问所有上下文信息(当前用户,当前列表/网站/站点等)来完成您的工作。您可以访问外部数据库,使用大多数ASP.NET控件等。

自定义ASPX页面

如果Web部件不足以满足您的需求,或者您希望控制整个页面,则可以创建启用SharePoint的网页。这些是使用适当的SharePoint母版页修饰的标准ASP.NET页面,并部署到hive LAYOUTS目录的子目录中。使用此功能,您可以像访问Web部件一样访问当前请求状态,但您可以更好地控制整个页面呈现。

自定义网络应用

如果您需要独立的应用程序,您仍然可以利用SharePoint的身份验证和授权工具,而无需直接在其上下文中运行。为此,请创建IIS Web应用程序并将应用程序池标识设置为与SharePoint相同。或者,您可以在SharePoint应用程序池中创建虚拟目录,但通常不建议这样做。如果要使用SharePoint对象模型,您仍将被限制使用.NET Framework 2.0运行时。此设置似乎很少在现场使用,因为大多数时候您只需使用自定义ASPX页面或Web部件即可满足您的需求。

关于您的具体问题:

沙盒解决方案只是一种特殊类型的解决方案,它限制了您的Web部件等可以访问的命名空间。例如,您的代码无法访问其权限区域之外的列表。它无法代表您发送电子邮件。您可以使用自定义权限集来增加权限,但这是一个高级主题。我只是想指出&#34;沙盒解决方案&#34;它本身并不是一种类型,它只描述了以前不存在的限制(SP 2007 GAC部署的解决方案)。

关于使用SharePoint对象模型的MVC应用程序的问题,就像我提到的那样,你仍然只能在.NET 2.0运行时运行。

编辑:我忘记了(至少)一个选项!

列出服务/其他ASMX服务

SharePoint提供了许多可用于与列表进行交互的Web服务。在这种情况下,只要知道如何使用ASMX服务,就可以使用您希望的任何技术(或运行时!)开发应用程序。可用的功能并不像直接使用对象模型那样丰富(这就是为什么我经常忘记考虑它)但它确实允许您的代码与SharePoint环境本身更加分离。 2010年,客户服务有更多选项可以提供更强大的功能。

答案 1 :(得分:0)

要在Visual Studio中开发解决方案,您可以使用Sandbox解决方案和场解决方案。如果您使用的是SharePoint 2013,那么您将有另一个更好的选择,即App Part开发。

由于Sandbox解决方案从SharePoint 2013开始被删除,我建议您不要使用Sandbox解决方案。最好使用App Part开发。