[原文发表地址]Diagnosing Problems in a Deployed 3-Tier LightSwitch Application (Eric Erhardt) [原文发表时间]2011-9-20 13:00 时常LightSwitch 应用程序在开发人员的机器上运行得很完美,但是当部署到互联网信息服务器(IIS)机器上时,它就不再正常运作了。出现的问题范畴包括从IIS配置不当到数据库连接字符串不正确。或者是某个程序集没有部署在IIS机器上。 谨在这儿分享一些我常用的调试技术来帮助系统管理员诊断部署的应用程序中的问题。关于如何配置网络服务器和部署LightSwitch应用程序,更多详细信息可参考Beth Massi’s deployment guide。 在我继续讲述之前,正确树立你的期待值。它不是万能的,不能解决你部署应用程序时遇到的所有问题。但是我可以提供一系列的步骤来诊断我们遇到的最常见的问题。每当有人对我说“我的应用程序出故障了”,我首先想到的事情就是这些步骤。如果这些步骤不能帮助你诊断问题所在,但它们至少提供了一些有用的信息,你可以把它们放到论坛里,在那儿或许有人可以帮到你。 可怕的红色X 在LightSwitch中,可怕的红色X类似于Xbox 360中的死亡之环,所以LightSwitch中出现红色X并没有那么悲惨。你没有必要用一个月的时间来修复。但是它也是你的应用程序中存在问题的一个重大暗示。当程序加载数据失败时,屏幕上将显示一个红色X。工具提示信息会出现“数据加载失败,请检查网络连接之后再重试”。 这些红色X实际上意味着在执行查询时,抛出了异常。 所以你该怎么做呢? LightSwitch有一个少有人知的秘密,那就是它的服务器有一个与ASP.NET tracing相集成的诊断程序子系统。这个子系可以告诉你在运行查询时,哪个异常被抛出。同时它的功能远远比这更强大。你可以用它来追踪向服务器请求的行为以及服务器对每个行为所作的回应。所以即使所有事情看起来在运作,但你可以知道程序真正在做什么。 当创建一个新的LightSwitch应用程序时,默认情况下诊断是被禁用的。这是为性能和安全因素考虑。性能的原因是不言而喻的,即使是服务器上简单的追踪也会降低处理能力。出于安全因素是因为当诊断被允许时和当你允许远程机器来查看诊断时,任何使用你的应用程序的注册用户都可以获取诊断记录。 有5 个应用程序设置可以控制诊断程序子系统的行为: Name Possible values Description Microsoft.LightSwitch.Trace.Enabled true, false Enables diagnostic tracing on the server. Default is false. Microsoft.LightSwitch.Trace.LocalOnly true, false When set [...]
vbcti
[原文发表地址] Solution Packages and the SharePoint Tools Continuum [原文发表时间] 2011-10-03 07:00 SharePoint2010开发平台的一大好处就是,它把各个站点都保存为解决方案包。解决方案包扩展名为.wsp,储存在.cab文件中,是一种可部署,可再用包的文件。你可以在浏览器,SharePoint设计器2010和微软Visual Studio 2010中创建方案包。在浏览器和SharePoint设计器2010用户界面中,解决方案包也被称为模板。这项灵活的功能让你能在浏览器和/或SharePoint设计器中创建,设计站点结构,然后将这些自定义内容输入Visual Studio 2010,以供后续开发。 自定义内容完成后,你可以将你的解决方案包部署到SharePoint中,在SharePoint中使用。用浏览器修改完现有站点结构之后,你可以重新再来一遍,保存更新站点为解决方案包。 这个工具的可延续性还能让你使用其他一些工具。比如,你可以在微软Visio 2010中设计工作流进程,然后输入到SharePoint设计器 2010,再到Visual Studio 2010。有关如何做到这一点的说明,参见在Visio中创建,输入和输出SharePoint 工作流。 要了解更多关于在SharePoint设计器2010中创建解决方案包的信息,参见将SharePoint站点保存为模板。要了解更多关于Visual Studio 2010方案包的信息,参见创建SharePoint 方案包。
[原文发表地址] Configuring a TFS Environment with Test Controller, Test Agent, and Build Server (Kirk Evans) [原文发表时间] 2011-08-11 07:53 欢迎阅读SharePoint 2010持续集成系列的第二部分。这篇文章会讨论如何配置你的TFS环境。 这个系列的博文介绍了许多新的技术,教你如何自动生成,部署生成,将测试纳入生成过程的一部分。要建立一个项目,依赖程序集必须在该计算机上。这个条件约束下,使得为SharePoint 2007和SharePoint 2010扩展项目使用同一个生成服务器就变得很困难了。你可以使用集中的Team Foundation Server(TFS)服务器和选用你的项目所需的特定生成服务器来解决这个问题。如果你想在控制环境中测试你的应用程序,TFS会实现让你用自己的测试控制器和测试代理来执行测试。 要展示这些技术,我们会为TFS环境配置一个集中TFS服务器,一个测试控制器和代理,以及Team生成服务器。 实验室环境 我们在做的实验室环境模拟了我们在那些使用TFS的公司里经常可以看到的环境。公司把现有的主导控制器,SQL服务器和SharePoint服务器都安装在不同的机器上(无论是物理机还是虚拟机)。开发在独立的机器上完成,而代码则被部署在SharePoint环境上。 我们常看到,公司提供的是分散的TFS环境。一个集中TFS服务器,支持它的数据库提供应用程序,数据库和报告功能,而独立项目团队提供它们自己的生成和测试服务器。这个配置帮助隔离了一个生成服务器成功地生成源代码所需的依赖性,同时通过将生成过程分散到各个服务器,从而也避免了多并发消耗系统资源。 安装在每个机器上的软件: Machine Software Installed DC.SharePoint.lab Active Directory SQL.SharePoint.lab SQL Server 2008 R2 Standard Edition SPProd.SharePoint.lab SharePoint Server 2010 Enterprise Edition SPDev.SharePoint.lab [...]
[原文发表地址] Creating your first TFS Build Process for SharePoint projects (Chris O’Brien) [原文发表时间] 2011-08-25 07:03 你配置了TFS 2010生成之后,你就可以创建一个生成定义来自动构建你的SharePoint代码库了。MSDN上有详细讲述这个方面的内容(参见Visual Studio应用周期管理中的 定义生成过程这部分),而这篇博文则会对构建SharePoint项目所需的特定要求做些指导,给在这方面刚开始的同行们强调一些关键信息。 以下是我们将在这篇博文中讨论的内容概述: 配置生成服务器来编译SharePoint程序集 配置生成服务器来生成SharePoint方案(WAP)包,不仅仅是程序集 创建首个生成定义——过程概述 编辑生成工作流 处理项目间的依赖关系 配置生成服务器以编译SharePoint程序集 根据默认设置,TFS 2010生成代理无法编译SharePoint代码。这是因为这些项目与SharePoint程序集(比如Microsoft.Sharepoint.dll)相关,而且这些程序集不常存在于生成服务器中,所以编译常常会失败。只有一种例外情况,那就是如果SharePoint 2010也直接安装在生成服务器上——介于性能关系,并不推荐这种布局。 要使编译成功,SharePoint程序集需复制到构建服务器上。这个过程在MSDN上有相关文件,微软也提供PowerShell脚本来“收集”SharePoint服务器中的程序集,然后在构建服务器上正确的文件系统位置“安装”它们。所以第一步就是: 1. 按照如何用TFS团队生成来构建SharePoint项目上的详细步骤 2. 使用在MSDN代码库中发布的SharePointProjectToTfsBuildServer.ps1PowerShell脚本(在上述文章中也有链接) 尽管PowerShell脚本多少简化了整个过程,但要注意除了那些默认收集的程序集之外,可能还会需要其他组件。而且,一些SharePoint程序集只能直接从SharePoint机器的GAC中复制(比如在GAC中导航到GAC_MSIL文件夹)。确切的程序集清单要根据你构建的代码而定。作为指南,我在对项目实行CI时,需要的程序集如下: Microsoft.Office.Server.dll Microsoft.Office.Server.UserProfiles.dll Microsoft.SharePoint.Client.dll Microsoft.SharePoint.Client.Runtime.dll Microsoft.SharePoint.Client.ServerRuntime.dll Microsoft.SharePoint.Linq.dll Microsoft.SharePoint.Portal.dll Microsoft.SharePoint.Publishing.dll Microsoft.SharePoint.Taxonomy.dll Microsoft.SharePoint.WorkflowActions.dll Microsoft.Web.CommandUI.dll 要添加程序集至PowerShell脚本,将37—41行的分配做如下变更: Original script $Script:SharePoint14ReferenceAssemblies [...]
[原文发表地址] How to Create a RIA Service Wrapper for an Editable OData Source [原文发表时间] 2011-10-11 10:39 简介 LightSwitch内置支持SQL服务器和SharePoint数据源。要访问其他数据源,你要自行编写WCF RIA DomainService。这篇博文会教你如何通过将访问OData Service的方法封装到DomainService的方式来读写OData数据源。 对于那些能用于RIA Services和LightSwitch的OData Services有一些限制条件。 复杂类型 虽然OData和RIA Services都在实体上支持复杂类型,但是LightSwitch并不支持。如果实体上出现复杂类型属性,LightSwitch将会在导入实体时,忽略那个属性。有一些变通的方法可以用来处理这种情况,我们会在其他博文中详细讲这个问题。 无外键的导航属性 OData Service可以包含与外键无关联的导航属性。这差不多就是多对多关系,不过也可能出现0.1到多或者1到多的关系。比如,Netflix OData Catalog在Title和Genre间包含一个多对多关系。不幸的是,RIA Service的关联是基于外键的。如果一个OData的关联不是基于外键的话,那么通过RIA Service就没有很好的诠释方法了。 如果一个OData Service包含了这类关联,那么在LightSwitch中就会没有现存的方法来表示。不过,你可以在RIA Service上添加带参数的查询,它可以被LightSwitch调用。使用这个功能,查询就能代表这些不被支持的关联能被实现了。对Netflix来说,例如,你可以在RIA Service上定义查询GetGenresByTitle和GetTitlesByGenre,它可以调用特定的OData导航属性。 为LightSwitch创建OData DomainService包的基本步骤如下: 创建一个类库项目 添加与OData Service相关的服务 为项目添加WCF DomainService 添加一个metadata类为LightSwitch提供关于引用的Service所实现的类的特定信息。 为你的DomainService添加查询函数,去显示OData Service上的每个实体类 为你的DomainService添加函数来实现创建,更新,删除每一个实体类 步骤1-5在如何为OData数据源创建RIA [...]
