从三个视点检查 SharePoint 开发很有用:

  • 为 .NET Framework 构建可扩展的应用程序
  • 构建数据库应用程序
  • 构建传统的富客户端应用程序
将 SharePoint 应用程序与可扩展的 .NET Web 应用程序进行比较

您可以从开发人员的角度检查 SharePoint 开发,该开发人员构建了在大型服务器场上运行的高度可扩展的松散耦合 Web 应用程序。这些应用程序每分钟必须处理数百个或数千个页面视图。

SharePoint 的核心基于 ASP.NET,并在 IIS 上运行,它可具有多个处理负载平衡的前端 Web 服务器。SQL Server 提供了 SharePoint 网站中存储的数据和文档的完整性、可伸缩性、可靠性和安全性。以下是可伸缩性影响 SharePoint 开发的一些重要方法。

  • API 设计。可伸缩性将驱动 SharePoint 的编程接口的某些特征。当您了解编程接口的设计可提高可伸缩性时,就能更轻松地理解这些接口了。例如,托管客户端对象模型,抽象地说,该模型与 SharePoint Foundation 服务器端对象模型非常类似,但实际上它更为复杂,因为它使您能够在从服务器中检索数据或内容时明确进行控制。
  • 解决方案设计。可伸缩性将影响您设计基于 SharePoint 构建的解决方案的方式。您必须避免在服务器上导致不必要的计算或查询活动的设计。您必须编写资源消耗量不会多于应有资源消耗量的应用程序。例如,这意味着合理使用协作应用程序标记语言核心架构 和 LINQ to SharePoint 来查询列表项。
  • 最佳实践。可伸缩性隐藏在作为 SharePoint 开发的最佳实践 的某些编程方法和问题后面。例如,SharePoint 对象模型中的某些对象具有关联的非托管数据。因此,您必须了解并遵循对象处理规则。类似地,在使用 SharePoint 中的大型列表时,可考虑几个最佳实践。如果您不遵循这些规则,则可能会对服务器场产生负面影响。有关详细信息,请参阅 SharePoint Foundation 的最佳做法和 SharePoint Server 的最佳做法。另请参见Best Practices: Using Disposable Windows SharePoint Services Objects (该链接可能指向英文页面)和释放对象。您可使用自动化工具改进您的代码评审。有关详细信息,请参阅使用 SPDisposeCheck 自动执行 SharePoint Dispose() 代码评审(该链接可能指向英文页面)。

有一些与构建高度可扩展的 Web 应用程序的开发人员所面临的问题相同或类似的问题。我听过这样一个情景,一个 SharePoint 开发人员编写代码以便按设定时间间隔循环访问其网站集中的所有文档并收集要在树控件中显示的信息。这在其测试环境中能够正常工作。但是,代码设计会产生一个与文档和列表项的实际数量相关的性能问题。

可伸缩性通过两种不同的方式影响解决方案设计:

  • 您必须构建可分发的应用程序,这些应用程序在部署到多个前端 Web 服务器上时可正常工作。例如,您可为在本地 XML 文件中存储数据的 Microsoft Business Connectivity Services (BCS) 构建小型 Create/Retrieve/Update/Delete Web 服务(请参阅 Business Connectivity Services)。但是,它在部署到负载平衡服务器场上时将无法正常工作。
  • 您必须构建可正常执行的应用程序。例如,除非您确定某个列表将包含几个列表项,否则不要使用对象模型循环访问它;而是使用 LINQ to SharePoint,并为 SharePoint 提供优化机会。

有关 SharePoint 开发与 ASP.NET 开发的相似之处和不同之处的详细信息,请参阅 针对 ASP.NET 开发人员的滑动路径。另请参见 ASP.NET 开发人员的 SharePoint 2010 开发(该链接可能指向英文页面)。

SharePoint Foundation 的最佳做法包含可帮助您避免对性能造成负面影响的缺陷的指南,其中包括有关对象处理、事件接收器、大型文件夹和列表以及代码性能优化的指导。

将 SharePoint 应用程序与数据库应用程序进行比较

数据库应用程序开发是用于查看 SharePoint 开发的有利位置之一。SharePoint 网站中的自定义列表与数据库表有很多相同之处。您可使用与列表中的列相关的丰富元数据来定义这些列。此外,SharePoint 列表可有效定义外键,以便您能对包含相关数据的更多有趣方案进行建模。SharePoint 将为删除操作提供级联和限制行为。您可以编程方式或声明方式创建这些列表,也可以编写使用用户定义的列表的程序。这些列表可以是可见的或隐藏的。您可使用 SharePoint 的安全功能来限制访问。

与 SQL 数据库形成直接对比的 SharePoint 的一个方面是,您使用非程序的声明性查询语言来检索数据。不过,将使用 LINQ to SharePoint 或使用通过 XML 编写的协作应用程序标记语言 (CAML),而不使用 SQL。

SharePoint 与数据库技术的集成程度较深。您可通过 Business Connectivity Services 使用数据库、Web 服务以及几乎任何数据源。这些数据源将表示为外部内容类型。

SharePoint 的数据功能的一个有趣特征是,它不具有事务性保证。例如,您无法确保以下两个操作要么都发生,要么都不发生:在一个表中插入列表项,同时在另一个表中更新列表项。SharePoint 将不会用作实现事务性系统的平台。相反,应在可提供适当保证的外部数据库中实现此类事务性系统。然后,您可通过使用 Business Connectivity Services 在 SharePoint 中显示这些数据。当您设计 SharePoint 应用程序时,您必须考虑此特征。

SharePoint 的数据功能与传统数据库开发的数据功能之间的一个重大区别是,SharePoint 列表(可与数据库表进行比较)不一定是矩形。在 SharePoint 中,内容类型将定义构成列表中的列表项(可与行进行比较)的字段。可将其视为列表项的架构。SharePoint 列表可包含多个内容类型的列表项。下图表示一个包含两个内容类型的项的 SharePoint 列表:LABOR 和 MATERIAL。

图 2. 非矩形 SharePoint 列表

这将影响您设计和开发使用列表项以及列表项中的字段的应用程序的方式。如果您必须有矩形数据,则可定义列表,使其只能包含一个内容类型。如果您启用非矩形数据,则当您循环访问列表项时,您必须检查内容类型并相应更改代码的行为。

另一个有趣的特征是,由于存在内部实现详细信息,与使用 SQL 查询表相比,使用 LINQ to SharePoint 或 CAML 查询 SharePoint 的速度要慢得多。您不需要创建以下设计,其中的某些列表意外增长到 50,000 或 100,000 个项,并且用户可随意尝试在浏览器中的窗口中显示列表。SharePoint 2010 包含可阻止这类设计导致服务器场关闭的限制功能。但用户界面将会变得无法对用户作出响应。可以通过多种方式处理包含大量项的列表。您必须有意地处理此问题。有关详细信息,请参阅处理大型文件夹和列表。

SharePoint 基于 SQL Server 构建。文档库和 SharePoint 列表存储在数据库中。当您查看 SharePoint 安装的体系结构图时,您会发现这一点。实际 SharePoint 数据库与 SharePoint 开发人员之间并没有特别的关系。您从不直接访问此数据库。您总是使用编程接口来更改网站、列表和文档库。不过,您可使用相同的 SQL Server 安装来承载您直接使用或通过 Business Connectivity Services 使用的数据库。因此,它可以是您用来构建 SharePoint 应用程序的基础结构的一部分。

Microsoft Access 服务允许(但也有限制)您将 Access 数据库发布到 SharePoint 网站。这会带来一些很有用的机会,由于它允许 SharePoint 用户以一致且熟悉的形式共享数据。

将 SharePoint 应用程序与传统的富客户端应用程序进行比较

SharePoint 与操作系统有很多共同之处:

  • SharePoint 包含存储。包含文件夹的层次结构的文档库与文件系统中目录中的文件很类似。
  • SharePoint 具有可编程的用户界面。
  • 在与操作系统一起使用时,您可编写以不同级别的特权运行的代码。通过使用 SharePoint 开发,您可编写必须使用服务器场管理凭据运行的代码。您可编写在沙盒解决方案中运行的代码,也可编写在客户端浏览器中运行的 JavaScript。
  • 在与操作系统一起使用时,您可编写服务,这些服务为构建具有复杂动态的 SharePoint 应用程序提供必需的基础结构。

再次说明一下,规模是最大的差异。规模将驱动 SharePoint 的可编程性特征。您可编写在数百台服务器上以高性能运行的软件,以便为整个企业提供一个可提高协作和工作效率的一致体验。当您从传统应用程序开发转向 SharePoint 开发时,处理可伸缩性问题是您要付出的准入代价。

将 SharePoint 开发与其他形式的开发进行比较相关推荐

  1. sharepoint站点Feature的定制与开发 以及 stsadm 常用命令

    备份还原网站 以下是代码片段:      stsadm -o backup -url http://spweb/sites/fdp -filename C:\fdp_0216.bak -overwri ...

  2. AgileEAS.NET平台开发实例-药店系统-报表开发(上)

    开篇 前面我们讲述了药店系统的开发流程,并且也讲述了如何开发一个基础模块,下面我们来看看,如何开发一个报表, 因为我们在药店系统中最常用的功能之一就是打印功 能了,AgileEAS.NET平台本身已提 ...

  3. 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET平台开发指南 - 实现插件...

    插件契约介绍 我们知道,要基于平台(容器)加插件的这种模式进行开发,我们必须定义一组契约,用于约束模块插件开发,也就是说,模块插件需要遵守一定的标准进行开发,才能正常被容器调用,这就是IModule所 ...

  4. 项目开发环境(h5+pc的开发思路是一样的)

    一.开发环境的搭建 注释:(因为是自己的电脑开发的,所以所有的都要重新安装) 1.安装nodejs(js服务端的运行环境,构建工具的环境依赖) 2.npm 1)node.js的包管理工具 2)node ...

  5. 【Go API 开发实战】Go API 开发实战教程简介(1-7)

    教程介绍 现代软件架构已经逐渐从单体架构转向微服务架构,在微服务架构中服务间通信采用轻量级通信机制.对于轻量级通信的协议而言,通常基于 HTTP 和 RPC ,能让服务间的通信变的标准化并且无状态化. ...

  6. java程序开发个人笔记_Java程序开发入门笔记

    Java程序开发入门笔记 如果你是这一个错误的话:错误:编码GBK的不可映射字符 这是因为我们编写的代码一般都是utf-8的格式而控制台用的不是utf-8格式所以就会出现中文输出的错误.这个时候我们可 ...

  7. 【近3万字分享】《Android开发之路——10年老开发精心整理分享》

    目录 前言 1 Android开发学习路线 1.1 大神最新总结(推荐直接看这个) 2021 最新Android知识体系 1.2按内容划分 1.3按阶段划分 1.4Android进阶路线(思维导图) ...

  8. 浅谈快速开发平台:突破系统开发边界,赋能企业数字化!

    快速开发平台,简单地说就是指那些不用编码或通过少量代码,就可以快速开发应用程序的平台.既可以降低开发人力成本,又可以缩短开发时间,从而实现企业降本增效的价值. 今天为大家介绍4款成熟业务的快速开发平台 ...

  9. 涂鸦蓝牙SDK开发系列教程——5.应用开发

    在前几节课中已经介绍了如何在 涂鸦 IoT 平台 上创建智能产品以及如何搭建涂鸦蓝牙模组的开发环境,在此基础上,本节课将继续以 BTU 模组为例,介绍如何使用 涂鸦蓝牙模组及其 SDK 开发一款温湿度 ...

最新文章

  1. 面向业务和面向硬件编程
  2. js容易被忘记的基础知识点————变量类型
  3. JavaScript 常用函数总结
  4. react-native-sound的使用
  5. arthas使用示例:trace追踪方法调用路径及统计方法耗时
  6. Linux常见命令汇总(不定期更新)
  7. ubuntu16定时任务crontab
  8. Oceanus:基于Apache Flink的一站式实时计算平台
  9. Linux(debian7)操作基础(五)之per调用shell命令
  10. [JNI] 开发基础(6)字符串相关操作
  11. 数据库连接超时和go away、如何检测数据库的最大连接数
  12. 网络安全-文件上传漏洞的原理、攻击与防御
  13. 微信小程序笔记(三)
  14. 深信服应用交付(AD)学习笔记
  15. C语言简单程序——解二元一次方程
  16. Android获取QQ名片赞数量,教你如何提高QQ名片赞数量 如何增加QQ赞数量
  17. ubuntu20.04开机后出现 /dev/sdb3 xxx files xxxx/xxxxx blocked,无法进入桌面问题
  18. 3.1 Caffe最优求解过程
  19. 【DL】第 3 章:高级卷积网络
  20. USDTPAY支付通道全行业可接入,安全稳定无痕快捷

热门文章

  1. Ubuntu 16.04/CentOS 6.9安装Apache压力(并发)测试工具ab
  2. Jenkins配置Findbugs做源代码安全扫描
  3. 新服务器安装和配置zabbix的playbook
  4. c#将http调用返回额json中的有关中文的unicode转换为中文
  5. Silverlight 2 应用程序部署到任意HTML页面
  6. pl/sql查询表数据,报错ORA-03115:不支持的网络数据类型或表示法
  7. 2018-10-03-Python全栈开发-day60-django序列化-part3
  8. 带有控制按钮的图片滚动
  9. C# 数据类型及相互转换及常用基础
  10. 理解T-SQL: 脚本和批处理