我只是在學習如何開發Sharepoint應用程序。開發Sharepoint應用程序的方式有哪些?
至於我可以看到有三種類型的整合到SharePoint可能:
- 沙盒解決方案(有限資源的訪問,但便於安裝等)
- 場解決方案(安裝只能從管理員)
- 標準應用(也許.NET MVC)與引用的Sharepoint組件訪問SPS功能
這是否正確和COM完成還是我錯過了什麼?
我只是在學習如何開發Sharepoint應用程序。開發Sharepoint應用程序的方式有哪些?
至於我可以看到有三種類型的整合到SharePoint可能:
這是否正確和COM完成還是我錯過了什麼?
根據您的範圍,要求等,有很多方法可以開發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年,客戶服務提供更多選項來提供更多功能。
要在Visual Studio中開發解決方案,您可以使用Sandbox解決方案和場解決方案。如果您擁有SharePoint 2013,那麼您將擁有另一個更好的選擇,即應用程序部件開發。
由於Sandbox解決方案是從SharePoint 2013開始的,我建議您不要使用Sandbox解決方案。更好地使用應用部分開發。
還有很多其他的東西,比如定時器作業,事件處理程序,Silverlight或.net等中的客戶端應用程序等。 – Shoban 2012-04-02 11:17:57