我正在学习如何为Sharepoint开发应用程序。
据我所知,有可能将三种类型集成到Sharepoint中:
这是正确和完整还是我错过了什么?
答案 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开发。