2012-04-02 31 views
0

我只是在学习如何开发Sharepoint应用程序。开发Sharepoint应用程序的方式有哪些?

至于我可以看到有三种类型的整合到SharePoint可能:

  • 沙盒解决方案(有限资源的访问,但便于安装等)
  • 场解决方案(安装只能从管理员)
  • 标准应用(也许.NET MVC)与引用的Sharepoint组件访问SPS功能

这是否正确和COM完成还是我错过了什么?

+0

还有很多其他的东西,比如定时器作业,事件处理程序,Silverlight或.net等中的客户端应用程序等。 – Shoban 2012-04-02 11:17:57

回答

2

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

的JavaScript

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

自定义内容类型

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

事件接收器

事件接收器可以创建在SharePoint特定事件作出反应。如果您将一个事件接收器附加到列表中,您可以侦听和响应事件,例如以同步(即时)方式添加,更新和删除的项目或附件 - 这样您就可以实施验证并取消操作 - 或者异步(-ed) - 在SharePoint完成处理项目后执行一些后处理。事件接收器由处理触发事件的请求的前端SharePoint服务器处理。这与由服务器场中恰好可用的任何服务器执行的定时器作业和工作流不同。另外,事件接收器可以根据它们的类型附加到列表上(适用于这个ID类型的所有列表),或者它们可以与内容类型相关联,并且以这种方式与列表关联(当内容类型是添加到列表中,添加事件接收器也是如此)。

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

计时器作业

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

工作流程

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

使用Visual Studio为您提供更多深度和功能,但像定时器作业一样,它们通常很难“正确”并且它们也由定时服务进程处理。

Web部件

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

自定义ASPX页面

如果一个Web部件是不能满足您的需要或您想在整个页面的控制,您可以创建启用SharePoint的网页。这些是标准的ASP.NET页面,使用适当的SharePoint母版页进行装饰,并部署到配置单元LAYOUTS目录的子目录中。通过这种方式,您可以像使用Web部件一样访问当前请求状态,但您可以更好地控制整个页面呈现。

自定义Web应用程序

如果你需要一个独立的应用程序,您还可以利用SharePoint的认证和授权工具,而不直接在其上下文中运行。为此,请创建一个IIS Web应用程序,并将应用程序池标识设置为与SharePoint相同。或者,您可以在SharePoint应用程序池中创建虚拟目录,但通常不建议这样做。如果您完全想使用SharePoint对象模型,您将仍然受限于使用.NET Framework 2.0运行时。这个设置在这个领域似乎很少使用,因为大部分时间只需使用定制的ASPX页面或Web部件即可完成您的需求。

关于你提到的具体问题:

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

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

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

列表服务/其他ASMX服务

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

+0

非常感谢您的回答,这对我有很大帮助! – Marc 2012-04-03 02:28:55

+0

我忘记了List服务!我编辑添加一个关于他们的blurb。也许我应该查找一些链接并进行更多编辑,或者这足以继续下去了? – 2012-04-03 03:29:18

+0

你已经提供了更多的信息,因为我预期并感谢增加!我会很高兴,如果你添加更多的信息当然!非常感谢! – Marc 2012-04-03 04:55:54

0

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

由于Sandbox解决方案是从SharePoint 2013开始的,我建议您不要使用Sandbox解决方案。更好地使用应用部分开发。

相关问题