Sugerir traducción
 
Otros han sugerido:

progress indicator
No hay más sugerencias.
MSDN Magazine > Home > Issues > 2009 > Marzo >  SharePoint: 10 recomendaciones para crear soluc...
Ver contenido:  en paraleloVer contenido: en paralelo
La información aquí ofrecida es contenido traducido automáticamente que los miembros de la comunidad pueden editar. Quienes deseen contribuir a mejorar la traducción, pueden hacer clic en el vínculo “editar” asociado a cualquiera de los siguientes enunciados.
SharePoint
10 Best Practices For Building SharePoint Solutions
E. Wilansky, T. Stojecki, P. Olszewski and S. Kowalewski
Code download available from the MSDN Code Gallery
Browse the Code Online

This article discusses:
  • Taking advantage of built-in SharePoint capabilities
  • Deploying SharePoint solutions
  • Creating testable code
  • Branding SharePoint for scale and maintenance
This article uses the following technologies:
WSS, Visual Studio Extensions for SharePoint3
The challenges facing developers who work with Windows SharePoint Services 3.0 (WSS) and Microsoft Office SharePoint Server 2007 (MOSS) are as deep and wide as the SharePoint platform itself. If you're new to this platform, the practices we explore in this article will lead you in the right direction. If you're an experienced SharePoint developer, these tips should help reinforce your knowledge, encourage discussion, and ultimately lead to building great SharePoint applications. In addition, we've provided a number of online references where you can learn more about the topics we discuss.

1. Know When to Cross the Divide
An issue that arises early in a SharePoint development project is how best to interact with other systems. Because SharePoint is a composite application platform, this question is one you will likely have to answer often. Viewing the SharePoint architecture from the Web application level is the easiest way to go about it. An instance of SharePoint contains multiple Web applications. If you are not familiar with SharePoint application architecture, you should review " Architectural Overview of Office SharePoint Server 2007 ."
Figure 1 shows typical approaches for interacting with SharePoint within a Web application, between Web applications, and with external systems. We'll cover each of these interactions in the rest of this section.
fig01.gif
Figure 1 SharePoint System Interaction Model
Use the SharePoint object model when you are writing Web Parts, ASP.NET form codebehind, or Web controls that run in the context of a specific Web application (see Figure 1). The SharePoint object model provides a rich set of classes through which to interact with SharePoint. The Windows SharePoint Services 3.0 and Microsoft Office SharePoint Server SDKs provide good coverage of these classes.
Context is an important consideration when handling SharePoint Web (SPWeb) or site (SPSite) disposal. For important information about when you need to explicitly dispose of these objects by using the Dispose method or a using statement, see " Getting References to Sites, Web Applications, and other Key Objects " and " Best Practices: Using Disposable Windows SharePoint Services Objects ."
From the perspective of the SharePoint object model, a SharePoint Web application is an important security boundary. Typically, you should not use the SharePoint object model for interactions between SharePoint Web applications. See " Security Programming in SharePoint 2007 " for information about other important SharePoint security topics.
When making calls between SharePoint Web applications and between SharePoint and external applications, such as an Office client application, use the SharePoint Web service integration layer. This is a good approach when attempting off-server development tasks in Visual Studio. See the "Develop Solutions Off-Server" section for details.
To interact with other systems, making calls to external Web services is the most common approach, but it is not always the best approach. Some alternatives might be easier to implement, and they might also have the benefit of being significantly faster—for example, making calls to LDAP stores via the Microsoft directory services programming framework or making calls to Project Server via ADO.NET to the Project Server Reporting database rather than via the Project Server Interface (PSI) Web services layer. When the data source is a Web service or database, consider using the Business Data Catalog (BDC). For more information, see the next section in this article, "Take Advantage of Native SharePoint Capabilities."
Microsoft is very clear in its documentation that you should not make calls directly to the SharePoint content and configuration databases. Even so, some applications are using this approach. Whether performance is the argument for this access technique or simply a lack of knowledge about the SharePoint framework, there are safer approaches.
The bottom line is that Microsoft can change the underlying schema in these databases, and there can be more than one content data­base per Web application. Therefore, seemingly benign direct query operations can lead to brittle solutions. Instead, take advantage of the other approaches outlined in this article or develop a different strategy that avoids suboptimal solutions that compromise the integrity of your SharePoint implementations.

2. Take Advantage of Native SharePoint Capabilities
Two situations can lead development teams away from taking full advantage of the native capabilities in SharePoint. First, because SharePoint is such an expansive platform, you might find it easier to build custom solutions rather than spend time to understand what SharePoint provides without custom coding. Second, business owners tend to create detailed requirements, wireframes, and application behaviors that leave you with little flexibility when it comes to using out-of-the-box (OOB) capabilities.
But embracing what the SharePoint platform provides often pays dividends, even if the resulting deliverable deviates slightly from the original requirements. The keys to gaining this advantage are for the development team to thoroughly understand the technology and, more importantly, to clearly communicate the value and tradeoffs of a particular implementation to the business owner.
Acquiring a solid understanding of the strengths and weaknesses of SharePoint is easier said than done. Both WSS and MOSS include SDKs that contain technical documentation, walkthroughs, code samples, and best practices for programming solutions in SharePoint. Also, when information is hard to find, you can use .NET Reflector to look inside some of the core SharePoint assemblies. Figure 2 shows the members of the PeopleQueryControl class in the Microsoft.SharePoint assembly, including the IssueQuery method. The PeopleEditor control (aka People Picker) delegates responsibility for querying SharePoint's identity store to PeopleQueryControl and lets you override the IssueQuery method to modify the default implementation. As you can see in the figure, .NET Reflector gives you an inside look into how the components interact.
Figure 2 NET Reflector Showing the IssueQuery Method of the PeopleQueryControl
Equipped with knowledge about the capabilities of the platform, you need to articulate the benefits of a particular implementation to the stakeholders in a way that underscores the value of their investment in the technology. It's especially important with a platform the size of SharePoint not to get hung up early about implementation details but to help the client learn what is possible by releasing early and iterating often. Be sure that your client is familiar with the features of the product by putting in place an effective feedback mechanism that keeps them engaged throughout the entire software development life cycle (SDLC).
Imagine a discussion about displaying a large selection list of entities to a user. You can implement this capability in many ways, such as with the ASP.NET DropDownList control, the GridView control, a custom control, or a third-party control. SharePoint itself also provides a large list-selection control in the PeopleEditor or its base class, the EntityEditorWithPicker control, that you can use for this purpose. These Web controls come with many hooks for injecting your own custom logic, and by using them you take advantage of a rich and intuitive user interface and create a consistent user experience in SharePoint. See " Customizing EntityEditorWithPicker " for an example of how to override methods of the PeopleEditor Web control.
Presenting line-of-business (LOB) data inside SharePoint is another common request. Typically, you start by identifying the gold-source of the data and determining how best to pull that data into SharePoint. Creating Web service proxies or establishing ADO.NET connections to databases is old-hat for many developers. However, the BDC is possibly a better alternative. This SharePoint facility enables you to read data from external data sources and present it inside SharePoint. The BDC supports a wide variety of authentication mechanisms, allows you to create associations between data entities, and is tightly tied to the SharePoint search and list infrastructures.
In addition, SharePoint includes a suite of Web Parts for presenting LOB data through the BDC. And while the BDC doesn't currently support create, update, and delete operations directly, you can create custom applications to perform these operations and associate them with the BDC through the BDC actions interface. For more information, see the Business Data Catalog topics in the "Resources" sidebar.

3. Know Critical SPDev Tasks and Information
The purpose of this section is to elucidate common tasks that every SharePoint developer might need to complete during software development. This is not a tool review, nor is it intended to promote one tool over another. Instead, we provide suggestions for tools that you can use to complete common SharePoint development tasks.
Building SharePoint solutions is an approach you'll want to take. Ted Pattison sums it up nicely in his Office Space column " Solution Deployment with SharePoint 2007 " when he writes, "Packaging up and deploying your WSS development efforts using solution packages is a best practice, and knowing how to do this should be considered an essential skill." There are numerous ways to package your SharePoint solutions, from manual creation of manifest.xml and diamond directive files (DDFs), to Visual Studio projects that use the Windows SharePoint Services 3.0 Tools: Visual Studio 2005/2008 Extensions (VSeWSS).
Using VSeWSS projects is significantly easier than manually creating DDFs. However, some alternatives are particularly useful for commercial or enterprise deployments, including WSPBuilder, STSDev, SPDeploy, and DDFGenerator. Evaluate the various tools to find one that best fits your needs. The key is to create Solution packages for deployment rather than deploying code components manually.
Debugging client-side behavior can be tricky, and tools such as the Internet Explorer Developer Toolbar (Developer Tools in Internet Explorer 8) make that effort significantly easier. Internet Explorer Developer Toolbar is similar to Firefox add-ons such as FireBug. Another tool that runs in Internet Explorer is the Web Development Helper. Both of these tools are useful for debugging client-side JavaScript, inspecting styles, and walking the DOM. If you need to inspect interaction with IIS, the IIS 6.0 Resource Kit contains a plethora of useful tools. For example, WFetch provides a handy facility for inspecting page output information, such as the output of a custom HTTP handler or authentication header information to verify what authentication protocol you're using, as shown in Figure 3.
Figure 3 WFetch Showing an NTLM Authentication Header
Troubleshooting server-side code issues can be particularly difficult in SharePoint because errors are obscured behind moderately friendly (though not very helpful) Web pages or in logs following Web service calls. The most important takeaways here are to know where SharePoint logs data and when to make use of a debugger and to be familiar with tools that can help you troubleshoot your SharePoint applications.
One place to start when trying to determine what is causing an application problem is the Windows event logs. In some cases, you can use options for increasing event logging. For example, if you are working with an application that relies on Kerberos authentication, you can increase Kerberos logging to the System event log. There are numerous excellent online resources explaining Kerberos authentication. For concise information on verbose Kerberos logging in Windows Server 2003, take a look at " Kerberos Protocol Registry Entries and KDC Configuration Keys in Windows Server 2003 ."
The SharePoint and IIS logs are critical to troubleshooting SharePoint application errors. Here's some brief information about these two critical logging sources:
  • The SharePoint logs are located at <%CommonProgramFiles%>\Microsoft Shared\Web Server Extensions\12\LOGS. You can simplify reading these logs by installing the Log Viewer feature .
  • The IIS logs are typically located at <%SystemRoot%>\System32\LogFiles. Look in the properties of IIS to verify the root location of the logs. Since each IIS Web application has a unique ID, you just match the IIS application ID for the SharePoint Web application listed in IIS with the folder name under the LogFiles directory.
For custom application logging, consider Enterprise Library integration. By incorporating the Enterprise Library Logging and Exception Handling Application Blocks in your code, your logging target, typically a database, can contain logging information and exception detail critical to troubleshooting your custom apps.
The most useful tool for debugging custom application problems is the Visual Studio debugger. If you have Visual Studio installed on your SharePoint server, you have F5 debugging capability. Ideally, you should not have Visual Studio installed on production or model office systems. In addition, you can develop software on local workstations and debug solutions remotely. Remote debugging is fully supported in SharePoint by connecting to the w3wp process hosting your custom application in IIS.
To determine which instance of w3wp is running your application, open a command prompt and run IISApp.vbs on your Windows server to identify the process ID (PID) running your SharePoint Web application. Then, in Visual Studio, select the instance of w3wp with the matching PID.
Another very helpful tool is Exception Display . When you enable this tool on your farm, it replaces the friendly SharePoint error page message with a number of exception display types. For details on how to install and use this tool, click "Exception Display" at the link listed above.
If a deployed Web Part is causing a page load failure, you can open the Web Part maintenance page by appending ?content=1 to the end of the page URL. On the maintenance page, you can close or delete the offending Web Part from the page.
Finally, you can enable application-level tracing in the web.config file of your Web application. See the discussion in " Enabling Application-Level Tracing ."
Keep extending the framework. SharePoint is more than capable of integrating custom solutions in a variety of ways. Because SharePoint is built on top of ASP.NET, it inherits the extensibility points of this platform. With the release of WSS 3.0/MOSS SP1, Microsoft now supports the ASP.NET AJAX framework, which means you can take advantage of the ASP.NET AJAX Extensions and the AJAX Control Toolkit. You can ease the installation and configuration procedure by using the Ajaxify MOSS custom stsadm extensions that programmatically add or remove AJAX-related web.config entries by using the SPWebConfigModification class.
With the framework in place, you can use the AJAX control suite and improve the responsiveness of your pages by implementing client-side callbacks. This is particularly important when making external Web service calls in custom Web Parts. See " Client-Side Web Service Calls with AJAX Extensions ."
jQuery is another client-side framework that is getting a lot of attention, especially with the recent announcement by Microsoft that it will be supported in Visual Studio. Since the jQuery core library is contained in a single .js file, integrating it into SharePoint is simple. See " jQuery Script Manager " for an approach to embedding jQuery scripts into an ASP.NET Web page.
If you're looking for information about Silverlight integration, see " Light Up SharePoint with Silverlight 2 Web Parts ." The authors explore an example of integrating a Silverlight application with SharePoint.

4. Develop Solutions Off-Server
Whenever possible, you should build your solutions free of the dependencies that SharePoint development often imposes. By using the Visual Studio development server, ASP.NET Web Part framework support, SharePoint Web services, and third-party tools, you can complete most of your development on a standard workstation rather than on a computer running SharePoint.
Because SharePoint runs on top of IIS and ASP.NET, the Web development server included with Visual Studio is an excellent starting point for much of your SharePoint development. For example, you can develop Web Parts, HTTP handlers, and Web controls in this, relatively speaking, lightweight environment.
Some initial work is involved in setting up the environment to host your components. For example, to effectively develop an ASP.NET Web Part, you should create a class project to host your Web Part, a Visual Studio Web Application project, and optionally a unit test project. We have included an example of this setup in the Visual Studio SPTips solution (included with the article's sample code) that you can use for off-server Web Part development.
In the Web Part project, the default constructor contains a line that sets the ExportMode property of the Web Part:
public WebPartOffServerExample()
{
    this.ExportMode = WebPartExportMode.All;
}
This line allows you to generate a .webpart deployment file based on the properties you configure for the Web part, as shown in Figure 4 .
Figure 4 The Web Part Export Menu Option
You can then import the Web Part into SharePoint via this deployment file (Figure 5). You should not use the SharePoint 2003 backward-compatible import file type, .dwp. The underlying XML schema for a .dwp isn't as rich and requires that you reference the Microsoft.SharePoint assembly early in the SDLC.
Figure 5 The Web Part Imported into Share-Point
Note that you can ensure the creation of .webpart deployment files by inheriting from the WebPart class in the System.Web.UI.WebControls.WebParts namespace rather than the Microsoft.SharePoint.WebPartPages namespace. (For examples of when you might want to inherit from SharePoint's WebPart class, see the source listed in the "Resources" sidebar.)
Microsoft exposes a significant subset of the SharePoint object model through Web services. Using SharePoint Web services to access the object model allows you to develop a solution without a dependency on direct access to SharePoint assemblies. SharePoint hosts the Web services in the _vti_bin virtual directory on each Web Front End (WFE) server.
In Visual Studio, you add SharePoint Web services to a solution in the same manner as you do any Web service reference. SharePoint Web service URLs have the following format:
http://<SharePointServer>:port/[sites/][SubSite/]_vti_bin/WebService.asmx
where <SharePointServer> is the URL associated with the Web application. For example:
http://www.contoso.com:35000/_vti_bin/Lists.asmx
When you add a Web service reference, Visual Studio creates proxy classes for both the service and the data types used by the service. For more information on interacting with these Web services, please see " WSS SDK 3.0 Topic: Web Service Guidelines " and " SharePoint Web Services ."
Implementing a three-tiered architecture furthers the goal of isolating code and removing dependencies on SharePoint and other outside sources. This approach can improve your ability to develop off server by abstracting business, data access, and UI logic from one another, enabling you to break code into manageable pieces and reduce dependencies between them. This approach also yields more testable code; more on this in the section "Testing Code and Managing Dependencies".
There are other tools you can use. Removing the dependency on SharePoint across the entire codebase is unrealistic. Developing for SharePoint off server generally requires the use of a SharePoint instance, usually hosted in a virtual machine, early in the SDLC. With the growth of SharePoint development, several tools have been created to deal with this significant dependency. One such tool is Bamboo Solutions' SharePoint on Vista Installation Helper. This tool enables the installation of WSS 3.0 SP1 or MOSS 2007 SP1 on Windows Vista, giving you the ability to develop SharePoint-dependent solutions without needing Windows Server.
Microsoft does not support running SharePoint in this way. However, this approach has resonated in the SharePoint development community because it helps reduce the footprint that this dependency on SharePoint creates. For further information, see " How to install Windows SharePoint Services 3.0 SP1 on Vista x64/x86 ."

5. Testing Code and Managing Dependencies
The widespread adoption of unit test frameworks and related test tools has naturally made its way into SharePoint development. Unit tests and integration tests are two primary test categories. Both test types exhibit different characteristics and require the use of different tools and techniques.
When writing unit or off-server tests, it's considered a best practice to simulate external dependencies with substitutes such as stubs or mocks. By passing in objects that mimic external dependencies, your test becomes faster and more focused on the behavior you are testing. To be effective, this approach requires that you follow the principles of testable, object-oriented design, or use a specialized framework for isolating tightly coupled components of your solution.
Identify the behaviors and business rules that are infrastructure independent and make sure you have a strategy for testing them in isolation. To isolate interactions with SharePoint, a database, or a Web service, you can introduce the Repository pattern to abstract away the details of the back-end system. These repository objects can be passed into higher level components by using inversion of control (IoC) and dependency injection (DI) principles. For information on IoC and DI, see " Tame Your Software Dependencies for More Flexible Apps ."
To increase the testability of your presentation components implement the Model-View-Presenter (MVP) pattern. For more information about testable code patterns, see " Design for Testability ."
Other major challenges that SharePoint developers face when unit testing deal with the SharePoint object model. Simply put, testing those components in isolation is a nontrivial task. It is a direct result of a limited number of interfaces and abstractions as well as a high number of sealed classes—classes with inner dependencies or without a public constructor.
One product equipped to deal with these shortcomings is TypeMock Isolator, a commercial mocking framework that allows for mocking of sealed, concrete, static, or internally constructed classes. For other mocking frameworks to be applicable, you need to adhere to patterns and principles we have already eluded to. TypeMock Isolator or its new SharePoint-specific version, Isolator for SharePoint, will work around these limitations and allow for increased code coverage without relying on a running instance of SharePoint. The patterns and practices (P&P) team also uses TypeMock Isolator in their SharePoint Guidance reference architecture .
At some point, you will have to write integration tests that are dependent on the SharePoint object model. It is good practice to manage your unit tests that are sever-independent from those that are server-dependent.
You can use the Test List Editor in the Test Manager in Visual Studio to separate your unit and integration tests. For instance, you could create two lists of tests: server dependent and server independent (see Figure 6). This approach allows you to select which set of tests to run, depending on whether or not you're on the server.
Figure 6 The Test List Editor Showing a Categorized Test List
In cases in which Visual Studio is installed on the server, you can run and debug your tests in the IDE or use the MSTest.exe command-line tool to run server dependent tests. Unfortunately, MSTest does not run unless Visual Studio is installed on the server. Our hope is that a future version of MSTest will not include this heavy dependency.
MSTest.exe allows you to specify which tests you want to run through command-line arguments. When you run MSTest.exe, you must specify either the /testcontainer or the /testmetadata option. By using the /testmetadata option, you can specify which tests will run. For example, to run all server-dependent tests, type:
MSTest /testmetadata:SPTips.vsmdi /testlist:ServerDependentTests
To run a specific test within the server-dependent tests, type:
MSTest /testmetadata:SPTips.vsmdi /test:GetTasks_ShouldReturnTasks
For examples of on-server tests and tests using a mocking framework, see the sample code in the Visual Studio SPTips solution included with this article's code download.

6. Continuous Integration and Automated Build
Keeping code in source control, relying on continuous integration, and automating the build process are essential steps to efficient release of high-quality code assets. SharePoint makes the setup of this environment challenging, to say the least. For this tip, the most important starting point is the " Team Development Overview " topic.
Later in the overview, you'll see the SharePoint Guidance topic "How to: Create an Automated Build and Deployment Solution with Team Foundation Server Build." This topic focuses on creating build targets to build and deploy solutions. While this method has merit, it is not useable when the TFS build and SharePoint servers do not reside in the same environment, as is often the case in the enterprise. Building your solution packages using targets limits the use of packages to the automated build environment and thus does not encourage early development and testing of packages by developers.
The alternative is to use post-build events within Visual Studio. The post-build events can be set up to perform the same packaging steps as the MSBuild targets and allow developers to build packages for deployment to their own sandbox environments. This approach also works with third-party tools such as WSPBuilder and STSDEV.
When deploying to the enterprise, you might also need to consider versioning solution packages. Tying the solution version to the current build version is one approach. This can be facilitated by using custom application code run in the AfterBuild MSBuild event or from the post-build event. Also consider solution IDs in the automated build and whether to generate new IDs with each build. This decision will impact your ability to upgrade solutions in the future. As a general rule, generate new solution IDs when assembly versions change. Otherwise, keep the solution IDs the same where version IDs are static between builds.
Rather than repeat information that you can get from the SharePoint Server Developer Center , we will augment this tip by focusing on how to further simplify the automated build process. In the SharePoint guidance topic "How to: Create an Automated Build and Deployment Solution with Team Foundation Server Team Build," the P&P team assumes you are using VSeWSS/extensions.
While VSeWSS is a fantastic addition to a SharePoint developer's toolkit, with capabilities like the WSPView panel that allows you to configure your solution on the fly, we've found that it is not well suited for medium to large implementations or teams that follow agile development methodologies.
The P&P SharePoint guidance team documentation states that VSeWSS provides one-click deployment and F5 debugging. The one-click deployment capability is certainly part of VSeWSS, but the F5 debugging capability has more to do with the fact that you must run Visual Studio local to your instance of SharePoint. This is a requirement for installing VSeWSS. Although you can use a registry hack for getting VSeWSS installed on a workstation, most of the extension's benefit is lost when installed on a workstation.
The documentation also states that many tools such as WSPBuilder and STSDEV require developers to maintain Feature.xml and Manifest.xml files for SharePoint solution packaging in a Web solution package. In reality, these tools are constantly evolving. For example, WSPBuilder now includes extensions that allow easy maintenance of Feature.xml and Manifest.xml in Visual Studio 2005 and 2008.
VSeWSS is most useful when you are unsure about how to structure a SharePoint project. For example, you might want to use a VSeWSS project type to determine the structure of a Web Part or a SharePoint Workflow project. Once you know how, you can take that information and move it to a ubiquitous project type. The primary issues around using VSeWSS for a medium to large project are as follows:
  • The extensions are designed to be installed on an instance of Visual Studio running on a SharePoint server. Therefore, they have a hard dependency on WSS.
  • Developers who have not installed VSeWSS will not have the special project types that VSeWSS creates and will not be able to open projects that rely on them.
  • Rebuilding a solution is made more complicated by VSeWSS.
The guidance documentation suggests that the other approach is to manually create a SharePoint solution file for each Visual Studio solution, along with the deployment manifest manifest.xml. However, tools such as WSPBuilder allow you to automate this step within your build.
The keys to a successful automated build are:
  • Use standard Visual Studio project types (i.e., class projects for Web Parts) so that all developers can easily open a project.
  • Structure your code project so that solution packaging is integrated into the project, as shown in Figure 7. There is no need to create a separate deployment project.
  • Set up a post-build event to run WSPBuilder or another automated solution building tool to build the Sharepoint solution file. This approach works both for local deployment of the solution and for the automated build process.
  • Use Macro conditions to control the parts of your post-build event that get called depending on where the build is occurring.
  • An automated build is further complicated by an InfoPath project. For information on this, see the tip "Dealing with InfoPath Projects in an Automated Build" in the online version of this article.
Figure 7 Solution Packaging Structure Integrated into the Web Part Project Code Download
Don't deploy to the global assembly cache (GAC) until you move to an integration environment. Keeping assemblies in the BIN folder makes debugging custom SharePoint applications significantly easier. There are certain project types that don't fit this model, such as SharePoint event handlers and SharePoint Features. By placing compatible assemblies in the BIN folder, developers in a shared development environment won't have to endure frequent IIS resets after each deployment.
Some pointers for running SharePoint assemblies from the BIN are:
  • Decorate your assembly with the [assembly:System.Security.AllowPartiallyTrustedCallers] attribute.
  • Configure custom code access security (CAS) policy or set web.config to full trust, as shown here:
<system.web>
  <trust level="Full" />
</system.web>
(Note that setting the trust level to full is only appropriate for local or internal development where your code assets will eventually be deployed to the GAC.)
  • Sign your assemblies for eventual deployment to the GAC.

7. Have SharePoint Manage Custom Config Settings
Like any application, SharePoint solutions rely on configuration settings to operate properly. A custom application with only a few configuration settings may be easy to manage manually. In contrast, when developing enterprise or commercial applications in SharePoint, the number of configuration settings can be considerable.
As a result, knowing the different setting types and how to manage them is important to developing, deploying, and managing applications. The best approach is to increase the number of settings that SharePoint manages and reduce the number of settings managed manually.
Understanding the types of settings helps identify where the settings belong. SharePoint configuration settings generally fall into three categories: core, custom, and SharePoint settings.
Core settings are used across a SharePoint Web application. Enterprise Library application blocks and external Web services configurations are examples of typical core settings.
Custom settings are for custom build components. These settings are used to provide configuration settings for the custom component and are not shared outside the component. For example, custom settings could be used to provide directory server settings for an LDAP lookup.
SharePoint settings are required to make the solution work within SharePoint. Settings in this category include SafeControls entries, SessionState customizations, or registering HttpModules.
After you categorize your settings, you can deploy them to the right locations to manage them. The goal is to reduce the number of settings managed manually. Letting SharePoint handle settings reduces the number of errors that can occur when applications are deployed.
Core settings are best managed in source control. This allows for maintaining a settings history while providing a single source of truth for the settings. In addition, this approach allows for maintaining discrete versions of configuration files for development, test, and production environments.
You can automate custom settings installation and management by using the SharePoint object model and deployment tools. Use the SPWebConfigModification class, solution deployment, and the CONFIG directory under the SharePoint 12 hive to form your configuration management strategy. Please see the "Build Deployable Solutions" section in this article for additional details about deploying through solutions.
The SharePoint SPWebConfigModification class allows you to programmatically register settings in the web.config of a SharePoint Web application. Using SPWebConfigModification, you can write a console application or stsadm extension to list, add, or delete configuration entries. This approach allows for rapid and consistent modification of large sets of SharePoint configuration settings. The SPWebConfigModificationType enumeration within this class contains three values specifying the type of modification being made: EnsureChildNode, EnsureAttribute, and EnsureSection. Exercise caution when using EnsureSection because entries added with this enumeration cannot be easily removed. For more information, see " Automate Web App Deployment with the SharePoint API ."
The SharePoint CONFIG directory allows you to declaratively register settings by maintaining XML files in this directory. WSS applies settings in the XML files to the web.config when SharePoint creates a Web application. Settings in this folder are applied to all Web applications. For information on this approach, see " Managing Web.Config Customizations ."

8. Know Where Configuration Settings Belong
The previous tip explored different types of SharePoint configuration settings and how to manage them. As an application is promoted through environments, such as from test to production, changes to the configuration settings, especially those pointing to external systems, can feel like sand shifting under your feet. Knowing where configuration settings belong can put management of environmental settings on more solid ground.
Composite application development has increased reliance on configuration settings. The power and ease of use of configuration settings has arguably led to their overuse. One way to reduce constant changes to these settings is by applying the convention-over-configuration paradigm by instead inferring values from things such as naming conventions. We outline an example of the convention-over-configuration paradigm in the "Continuous Integration and Automated Build" section by demonstrating how to integrate SharePoint Solution packaging into your Visual Studio projects. A related example of this paradigm appears in the Web content tip, "Use Relative Links Whenever Possible."
Instance-specific settings are unique to each instance of a Web Part. For example, you might have a Web Part that displays a list of projects on a program manager's page, while on a developer's page it shows project and task details. Instance-specific settings are best stored in a custom Tool Part or in a Web Part's miscellaneous Tool Part properties.
Configuration settings being used by more than one component are considered global settings. Examples of settings in this category are URLs for external Web services, business object settings, and data settings. These settings are best kept in web.config and managed as described in the "Have SharePoint Manage Custom Config Settings" section.

9. Brand SharePoint for Scale and Maintenance
Branding your SharePoint site provides users with the most obvious visual indication of your application's purpose. Branding involves working with various artifacts, such as Master Pages, content pages, page layouts, site definitions, and CSS. For a tip on creating custom Master Pages, see the online tip "Creating Custom Master Pages."
Make sure your application scaling and maintenance strategy takes into account how you will manage these branding artifacts. For details on SharePoint branding, see "Microsoft Office SharePoint Server 2007 and Windows SharePoint Server v3" in the "Resources" sidebar.
Before choosing a tool for branding, consider the size of your SharePoint implementation, the extent of your branding effort, and the expertise of the developers supporting the application. We will focus on two tools: SharePoint Designer and Visual Studio.
SharePoint Designer has its roots in FrontPage and is a Web design tool useful for editing Master Pages and CSS. However, the ease of use provided by SharePoint Designer comes at a price:
  • There's no integrated source control support.
  • Changes made within SharePoint Designer result in the modified content becoming unghosted.
In an unghosted state, copies of the content are stored in the content database instead of the file system. As a result, unghosting has the following effects:
  • Makes deployments difficult to manage because the content can be updated only within SharePoint or SharePoint Designer
  • Disconnects a site from updated content deployed to the file system
  • Leads to potential performance issues on large, active SharePoint implementations
For these reasons, we believe SharePoint Designer is most appropriate for small to medium implementations and prototypes.
Visual Studio provides a consistent development environment for both application components and branding artifacts, but it lacks the graphical editing functionality found in SharePoint Designer. Because of this, developers must be more proficient with editing HTML and CSS. A good project structure must be set up to maintain the branding artifacts. With Visual Studio's integrated source control support, it's easier to manage environment-specific configurations and package branding artifacts to be deployed across multiple environments. In addition, branding artifacts remain ghosted. Therefore, Visual Studio is our preferred SharePoint branding tool for large enterprise and commercial implementations.
There are three approaches to applying branding: site templates, custom site definitions, and OOB site definitions coupled with customizations via Feature Stapling. Creating custom site templates may be the fastest approach for small implementations and prototypes. However, sites created from a template will not update when a new template is uploaded. Custom templates do not allow you to specify the template ID, which will require changes to any provisioning code that references the templates. Also, site templates create only unghosted content, which could impact performance.
Site definitions are more flexible and portable than site templates. You can manage the site definition file (onet.xml) and associated content in source control and deploy ghosted content, allowing a site to be updated with new content provided that it has not already been customized. Site definitions can be difficult to create because of the complexity of the XML you need to edit. This task is made easier by using OOB site definitions (found in 12\Template\SiteTemplates) as a starting point or by exporting a site definition using VSeWSS. For information about site definitions, see " Site Definitions Demystified ."
When dealing with medium to large implementations, combining OOB site definitions with custom Features is the best approach. Features can be used to extend site definitions and provide a modular approach to provisioning sites. For a good overview of Features, look at the Office Space column " Features for SharePoint ." The VSeWSS extensions, as well as some third-party tools, provide templates for creating common Features used in branding Web sites.
Feature stapling lets you attach a Feature to a site definition and have it enabled when a new Web site is created. This is a great way to apply your branding to the SharePoint OOB site definitions.

10. Build Deployable Solutions
You can get your components into a SharePoint Web application in several ways. This section focuses on how to utilize the packaging and deployment frameworks that SharePoint provides, including Web solution packages (Solutions/WSPs), Features, and the SharePoint object model.
Deciding how to package components depends largely on where the components are being deployed. Solutions contain files that will be deployed to the server. Features contain content that will be deployed to the content database.
A Sharepoint solution contains the assemblies and resources to be deployed to SharePoint Web applications. Solutions are compact, simple to deploy and retract, and SharePoint handles mirroring file updates in Sharepoint solutions across multiple servers in a farm. You can also use Sharepoint solutions for web.config modifications. See the sections "Know Critical SPDev Tasks and Information Sources" and "Have SharePoint Manage Custom Config Settings" for additional details on solutions and web.config modifications. Figure 8 lists the common folder locations supported by solutions and their contents. The "12 hive" refers to the SharePoint application root, or <%CommonProgramFiles%>\Microsoft Shared\Web server extensions\12 by default.
Figure 8 Common File Locations Accessible from WSPs
Folder in 12 hive Contains
\ISAPI\HELP\[LCID] SharePoint help files. Deploy your own .chm files to this folder (or a localized subfolder)
\CONFIG Web.config customizations
\ISAPI SharePoint web services (deploy your custom web services here as well); maps to /_vti_bin
\Resources Global .resx files accessed from custom features and site definitions
\TEMPLATE\CONTROLTEMPLATES .Ascx user controls; maps to /_controltemplates
\TEMPLATE\FEATURES Features, of course!
\TEMPLATE\LAYOUTS Common site pages; maps to /_layouts
\TEMPLATE\IMAGES Common site image files; maps to /_layouts/images
\TEMPLATE\SiteTemplates All SharePoint site definitions; create a <subfolder>\xml to deploy your onet.xml custom site definition
\TEMPLATE\THEMES All UI elements used in themes; clone an existing theme folder to create your own
\TEMPLATE\[LCID]\XML Webtemp.xml files to define available site definitions; add an xml file here for your custom site definition
\TEMPLATE\ADMIN Pages used by Central Admin; maps to /_admin
\ADMISAPI Administration web services; maps to /_vti_adm
The following are important rules to remember when working with solutions:
  • Because SharePoint solutions are managed in the configuration database, there can be only one unique instance of a SharePoint solution in a farm. This point is important if you intend to use the same farm to host different releases of the same Web application—for example, both current maintenance and future development environments.
  • SharePoint tracks Solutions by ID not by name, so you need to maintain solution IDs in source control if you intend to upgrade Solutions in the future.
  • The 12 hive is a shared Web application space. If you plan on hosting multiple Web apps in the same farm, you need to ensure that your SharePoint solutions do not overwrite existing SharePoint files or files deployed by other solutions in this space.
  • Solutions cannot deploy files outside the folders listed in Figure 8 , including folders under the Web application, such as wpresources, global _wpresources, or other folders outside the 12 hive.
  • Solutions cannot deploy content inside a SharePoint Web application. This is the role of SharePoint Features.
Features can make Web Parts available in the gallery, upload and publish files to document libraries, and perform custom actions such as setting the site theme or default Master Page by using Feature receiver assemblies. See the information about using the right branding technique earlier in this article for information on using Features for branding.
Here are some caveats for creating Features:
  • Features do not track added content, so it's the responsibility of the Feature to clean up after itself when it is deactivated by using a Feature receiver. Consider the entire life cycle of the Feature and whether content deployed by the Feature may be needed by other parts of the Web application before the content is deleted. For example, removing a Master Page on deactivation of a Feature will break any pages that inherit from that Master Page.
  • Deactivate a Feature from all Web applications before removing the solution used to deploy the Feature. If you don't, the solution deployment will fail, and if the Feature folder has been removed, you will need to force an uninstall of the Feature using STSADM.

Enough Said
Using this article as your map, review the references provided for information and download the article's code sample to help you get started. Perhaps as you develop applications on the SharePoint platform, you will review these best practices again and also find use in the code samples. If you need clarification or want to give us feedback about the tips we've provided or other tips you consider important, please send us your questions or comments, and we will endeavor to respond quickly. You can reach us via e-mail at ewilansky@yahoo.com .
Additional Tips
Here are some additional tips for developing SharePoint solutions.
Use Relative Links Whenever Possible
Consider using relative links rather than absolute links. Including relative links to locations such as Document libraries, data connections, and Reports libraries simplifies deployment from one SharePoint instance to another. With the Reports library example in mind, if you use a consistent Web location to the Report library in all your SharePoint environments, you’ll no longer need to change pointers to reports as you move your application from one environment to the next. Typically, convention over configuration applies to code configuration, but this concept can also be loosely applied to other configuration aspects of your deployments.
On a related note, we hope that Microsoft will support relative links inside the SharePoint platform, where currently some configuration settings require absolute links. For example, you must specify an absolute URL to the Form library in an InfoPath .udcx data connection fi le, and the ReportViewer Web Part requires an absolute path to the report definition.
Creating Custom Master Pages
One common way to brand SharePoint sites with your look and feel is to create custom Master Pages, which give you the most control over the layout of your site. You can take an existing SharePoint Master Page and modify it to meet your needs. This approach works best if the existing Master Page is close to the layout you want. If the look and feel you want is very different from any of the OOB Master Pages, you might be inclined to start from scratch. However, because SharePoint requires certain functionality in Master Pages, it’s recommended that you start with a minimal Master Page and build your look and feel from there. To find out more about creating a minimal Master Page, see “ How to: Create a Minimal Master Page ” at . You can also download some minimal Master Pages from Heather Solomon’s blog, which is also listed in the Resources section.
Dealing with InfoPath Projects in an Automated Build
Projects created in Microsoft InfoPath Designer will further challenge your efforts to automate your build. The best you can really do is let InfoPath and SharePoint handle the packaging. See “Automate Web App Deployment with the SharePoint API” in the Resources section for details about how to get portable solution packages from InfoPath projects.

Ethan Wilansky is a director in FTI Consulting's Technology Practice and focuses on creating custom SharePoint solutions. As a Microsoft Directory Services MVP, he concentrates on the DS programming framework and is also a member of the Office Developer Advisory Council.

Paul Olszewski is an Information Specialist on a .NET Capability team. He specializes in creating and deploying reusable component applications leveraging Microsoft technologies.

Tomek Stojecki works at Annapolis Computing where he specializes in the architecture and development of .NET apps using design patterns and agile methodologies. He has consulted on a number of SharePoint based projects.

Stefan Kowalewski is a senior consultant on a SharePoint development team. He provides technical expertise and brings proven agile experience to custom SharePoint development efforts.

SharePoint
Las 10 recomendaciones para crear soluciones de SharePoint
E. Wilansky, T. Stojecki, P. Olszewski and S. Kowalewski
Descarga de código de la Galería de código de MSDN
Examinar el código en línea

En este artículo se describen:
  • Cómo aprovechar las capacidades integradas de SharePoint
  • Implementar soluciones de SharePoint
  • Crear código comprobable
  • Personalización de SharePoint para la escala y el mantenimiento
Este artículo usa las siguientes tecnologías :
WSS, extensiones de Visual Studio para SharePoint3
Los desafíos a los que se enfrentan los programadores que trabajan con Windows SharePoint Services 3.0 (WSS) y Microsoft Office SharePoint Server 2007 (MOSS) son tan profundos y extensos como la misma plataforma SharePoint. Si es nuevo en esta plataforma, las prácticas que exploramos en este artículo le llevarán en la dirección correcta. Si eres un experimentado desarrollador de SharePoint, estas sugerencias deben ayudar a reforzar sus conocimientos, fomentar la discusión y, en última instancia, llevar a crear grandes aplicaciones de SharePoint. Además, se han proporciona un número de referencias en línea donde puede obtener información más información sobre los temas que tratará.

1. Saber cuándo entre la división
Un problema que surge las primeras fases de un proyecto de desarrollo de SharePoint es la mejor manera interactuar con otros sistemas. Dado que SharePoint es una plataforma de aplicación compuesta, esta pregunta es una que probablemente tendrá que responder a menudo. Visualización de la arquitectura de SharePoint desde el nivel de aplicación Web es la forma más sencilla para ir sobre él. Una instancia de SharePoint contiene varias aplicaciones Web. Si no está familiarizado con arquitectura de aplicación de SharePoint, debe revisar" Descripción general de arquitectura de Office SharePoint Server 2007 ."
la figura 1 muestra típicos métodos para interactuar con SharePoint dentro de una aplicación web, entre las aplicaciones web y con sistemas externos. Trataremos cada una de estas operaciones en el resto de esta sección.
fig01.gif
Figura 1 modelo de interacción con el sistema de SharePoint
utilizar el modelo de objetos de SharePoint al que está escribiendo código subyacente del formulario ASP.NET, elementos Web o controles Web que se ejecutan en el contexto de una aplicación Web específica (consulte la figura 1 ). El modelo de objetos SharePoint proporciona un completo conjunto de clases a través del cual interactuar con SharePoint. El Windows SharePoint Services 3.0 y SDK de Microsoft Office SharePoint Server proporcionan una buena cobertura de estas clases.
Contexto es una consideración importante cuando se controla Web de SharePoint (SPWeb) o de cancelación de sitio (SPSite). Para importante información acerca de cuando se necesita eliminar explícitamente de estos objetos mediante el método Dispose o mediante el uso de instrucción, consulte " Obtener referencias a sitios, aplicaciones Web y otros objetos de clave "y" Prácticas recomendadas: mediante objetos de servicios de SharePoint de Windows desechable ."
Desde la perspectiva de modelo de objetos SharePoint, una aplicación Web de SharePoint es un límite de seguridad importantes. Normalmente, no debe utilizar el modelo de objetos de SharePoint para las interacciones entre las aplicaciones Web de SharePoint. Vea" Programación de seguridad en SharePoint 2007 "para información sobre otros temas de seguridad importantes de SharePoint.
al realizar llamadas entre aplicaciones Web de SharePoint y entre SharePoint y aplicaciones externas, como una aplicación de cliente de Office, utilice el nivel de integración de servicio Web de SharePoint. Esto es un buen enfoque cuando intenten tareas de desarrollo fuera del servidor en Visual Studio. Vea la sección " crear soluciones OFF-Server " para obtener más información.
para interactuar con otros sistemas, realizar llamadas a servicios Web externos es el enfoque más común, pero no siempre es el mejor método. Algunas alternativas pueden ser más fáciles de implementar y también es posible que tienen la ventaja de que se va a considerablemente más rápido, por ejemplo, realizar llamadas a LDAP almacena a través de los servicios de directorio Microsoft programación framework o realizar llamadas a Project Server mediante ADO.NET en la base de datos informes de Project Server en lugar de a través de la capa de servicios Web de Project Server Interface (PSI). Si el origen de datos es un servicio Web o una base de datos, considere de usar el catálogo de datos profesionales (BDC). Para obtener más información, vea la sección siguiente de este artículo, "realizar las ventajas de funciones de SharePoint nativo".
Microsoft deja claro en su documentación que no se deben realizar llamadas directamente al contenido y a las bases de datos de configuración de SharePoint. Aun así, algunas aplicaciones están utilizando este método. Si rendimiento es el argumento de esta técnica de acceso o simplemente una falta de conocimientos sobre el marco de trabajo de SharePoint, existen métodos más seguros.
La conclusión es que Microsoft puede cambiar el esquema subyacente en estas bases de datos, y puede haber más de un data­base contenido por aplicación Web. Por lo tanto, aparentemente operaciones de consulta directa benigno pueden conducir a soluciones brittle. En su lugar, aprovechar de los otros métodos descritos en este artículo o desarrollar una estrategia diferente que evita suboptimal soluciones que poner en peligro la integridad de sus implementaciones de SharePoint.

2. Aproveche las ventajas de funciones de SharePoint nativo
Dos situaciones pueden provocar que los equipos de desarrollo fuera de aprovechar completa de las funciones nativas en SharePoint. En primer lugar, como SharePoint es una plataforma expansivos, puede resultarle más fácil de crear soluciones personalizadas en lugar de dedicar tiempo para comprender lo que ofrece SharePoint sin código personalizado. En segundo lugar, los propietarios de negocios se tienden a crear requisitos detallados, tramas y los comportamientos de aplicación que deje con flexibilidad poco en cuanto al mediante características de (OOB) de fábrica.
Pero adaptación lo que la plataforma SharePoint ofrece a menudo paga dividendos, incluso si el resultante entrega desvía ligeramente de los requisitos originales. Las claves para obtener esta ventaja son para el equipo de desarrollo pueda comprender completamente la tecnología y, lo que es más importante, para claramente comunicar el valor y el equilibrio de una implementación concreta al propietario del negocio.
Adquirir un conocimiento profundo de los puntos fuertes y débiles de SharePoint más fácil se dice que realizar. Tanto WSS y MOSS incluyen SDK que contienen documentación técnica, tutoriales, ejemplos de código y las prácticas recomendadas para las soluciones de programación en SharePoint. Además, cuando se difíciles de encontrar información, puede utilizar .NET Reflector para buscar dentro de algunos de los ensamblados de SharePoint principal. la figura 2 muestra los miembros de la clase PeopleQueryControl en el ensamblado Microsoft.SharePoint, incluyendo el método IssueQuery. El control de PeopleEditor (aka personas selector delega la responsabilidad de consultar el almacén de identidades de SharePoint para PeopleQueryControl y permite reemplazar el método IssueQuery para modificar la implementación predeterminada. Como puede ver en la figura, .NET Reflector le ofrece un interior miren cómo interactúan los componentes.
La Figura 2 reflector NET con el método IssueQuery de la PeopleQueryControl
Equipado con conocimientos acerca de las capacidades de la plataforma, debe estructurar las ventajas de una implementación determinada a los participantes de manera que underscores el valor de su inversión en tecnología de la. Es especialmente importante con una plataforma el tamaño de SharePoint no obtener bloqueado hasta pronto sobre los detalles de implementación sino para ayudar al cliente obtenga información acerca lo que es posible liberar antes y recorrer en iteración con frecuencia. Asegúrese de que el cliente sea familiarizado con las características del producto colocando en su lugar un mecanismo de comentarios eficaz que mantiene los activado durante el ciclo de vida de desarrollo de software completo (SDLC).
imagine una discusión sobre muestra una lista de selección grande de entidades a un usuario. Puede implementar esta capacidad de muchas maneras, como con el control ASP.NET DropDownList, el control GridView, un control personalizado o un control de terceros. SharePoint propio también proporciona un control de selección de lista grande en el PeopleEditor o su clase base, el control EntityEditorWithPicker, que se puede utilizar para este propósito. Estos controles Web incluyen varios enlaces para inyectando su propia lógica personalizada, y con los aprovechar una interfaz de usuario enriquecido y intuitivo y crear una experiencia de usuario coherente en SharePoint. Vea" Personalizar EntityEditorWithPicker "en el para obtener un ejemplo de cómo reemplazar métodos del control Web PeopleEditor.
Presentar datos de línea de negocio (LOB) dentro de SharePoint es otra solicitud común. Normalmente, se empieza por identificar el origen de oro de los datos y determinar la mejor forma extraer los datos en SharePoint. Crea proxies de servicios Web o establecer las conexiones ADO.NET a bases de datos es antigua de botón para muchos de los desarrolladores. Sin embargo, el BDC es, posiblemente, una alternativa mejor. Esta facilidad de SharePoint permite leer los datos de orígenes de datos externos y presentarlos en SharePoint. El BDC admite diversas amplia de mecanismos de autenticación, le permite crear asociaciones entre entidades de datos y está estrechamente relacionado con las infraestructuras de búsqueda y lista de SharePoint.
Además, SharePoint incluye un conjunto de elementos Web para presentar datos de línea de NEGOCIO a través de los BDC. Y aunque actualmente no admite el BDC crear, actualizar y eliminar operaciones directamente, puede crear aplicaciones personalizadas para realizar estas operaciones y asociarlos con el BDC a través de la interfaz de las acciones de BDC. Para obtener más información, vea los temas de catálogo de datos profesionales en la barra lateral "Recursos".

3. Saber tareas SPDev críticas y de información
El propósito de esta sección es elucidate tareas comunes que cada desarrollador de SharePoint es posible que deben completar durante la fase de desarrollo de software. Esto no es una revisión de la herramienta, ni se pretende promover una herramienta a través de otro. En su lugar, ofrecemos sugerencias para herramientas que pueden utilizar para realizar tareas comunes de desarrollo de SharePoint.
soluciones de creación de SharePoint es un enfoque probablemente desee realizar. Ted Pattison suma se adecuadamente en la columna Office Space" Implementación de soluciones con SharePoint 2007 "cuando que escribe, "empaquetado copia e implementación de sus esfuerzos de desarrollo de WSS mediante paquetes de solución es una práctica recomendada, y saber cómo hacer esto debe considerarse un habilidades esenciales." Hay muchas formas a empaquetar sus soluciones SharePoint, desde la creación manual de manifest.xml y los archivos de directiva (los), de rombos a proyectos de Visual Studio que utilizar las herramientas de Windows SharePoint Services 3.0: Extensiones de Visual Studio 2005 y 2008 (VSeWSS).
Utilizar proyectos VSeWSS es considerablemente más fácil que crear manualmente los. Sin embargo, algunas alternativas son particularmente útiles para las implementaciones comercial o empresarial, incluidas WSPBuilder, STSDev, SPDeploy y DDFGenerator. Evaluar las diversas herramientas para encontrar uno que mejor se adapte a sus necesidades. La clave consiste en crear paquetes de solución para la implementación en lugar de implementar los componentes de código manualmente.
comportamiento de depuración de cliente puede ser complicado, así herramientas tales como la barra de Internet Explorer Developer herramientas (herramientas de desarrollo en Internet Explorer 8) facilitan que el esfuerzo considerablemente. Internet Explorer Developer Toolbar es similar a los complementos de Firefox, como FireBug. Otra herramienta que se ejecuta en Internet Explorer es el Ayudante de desarrollo Web. De estas herramientas son útiles para depuración de JavaScript del lado cliente, inspeccionar los estilos y análisis el DOM Si necesita inspeccionar la interacción con IIS, el Kit de recursos de 6.0 de IIS contiene una gran cantidad de útiles herramientas. Por ejemplo, WFetch proporciona una utilidad práctica para inspeccionar la página resultados información como el resultado de un controlador HTTP personalizado u información de encabezado autenticación para comprobar qué protocolo de autenticación que estás utilizando, tal como se muestra en la figura 3 .
La figura 3 WFetch con un encabezado de autenticación NTLM
Solución de problemas de código en el servidor puede ser especialmente difícil en SharePoint ya están ocultos errores subyacente moderadamente descriptivo (aunque no muy útil) las páginas de Web o en registros siguiente Web servicio llamadas. Los takeaways más importantes aquí están a conocer donde SharePoint inicia datos y cuándo se debe hacer uso de un depurador y estar familiarizado con herramientas que pueden ayudarle a solucionar problemas de las aplicaciones de SharePoint.
Un lugar para empezar cuando se intenta determinar lo que está causando un problema de aplicación es los registros de sucesos de Windows. En algunos casos, puede utilizar las opciones para el aumento registro de eventos. Por ejemplo, si trabaja con una aplicación que se basa en la autenticación Kerberos, puede aumentar el registro de Kerberos para el registro de sucesos del sistema. Hay numerosos recursos en línea excelente que explica la autenticación Kerberos. Para obtener información concisa sobre Kerberos detallado inicio de sesión en Windows Server 2003, eche un vistazo" Entradas del registro de protocolo Kerberos y claves de configuración de KDC de Windows Server 2003 ."
Los registros de IIS y de SharePoint son fundamentales para solucionar errores de aplicación de SharePoint. Éste es algunos breve información acerca de estos dos orígenes de registro crítico:
  • Los registros de SharePoint se encuentran en <%CommonProgramFiles%> \Microsoft Shared\Web Extensions\12\LOGS de servidor. Puede simplificar leer estos registros mediante la instalación de la Iniciar el visor de característica .
  • Los registros de IIS se encuentran normalmente en <%SystemRoot%> \System32\LogFiles. Busque en las propiedades de IIS para comprobar la ubicación raíz de los registros. Puesto que cada aplicación Web de IIS tiene un IDENTIFICADOR único, sólo puede coincidir el IDENTIFICADOR de aplicación IIS para la aplicación Web de SharePoint que se enumeran en IIS con el nombre de carpeta en el directorio de LogFiles.
Para el registro de aplicación personalizada, considere la integración de Enterprise Library. Al incorporar el registro de biblioteca de empresa y bloques de aplicaciones control de excepciones en el código, el destino de registro, normalmente, una base de datos, puede contener el registro de información y la excepción detalle fundamental para solucionar problemas de las aplicaciones personalizadas.
La herramienta más útil para depurar problemas de la aplicación personalizada es el depurador de Visual Studio. Si tiene instalado Visual Studio en el servidor de SharePoint, tendrá capacidad de depuración de F5. Lo ideal sería que no debe tener instalado Visual Studio en sistemas de office de modelo o de producción. Además, puede desarrollar software en estaciones de trabajo locales y depurar las soluciones de forma remota. Depuración remota es totalmente compatible en SharePoint conectando con el proceso w3wp que aloja la aplicación personalizada en IIS.
Para determinar qué instancia de w3wp se está ejecutando la aplicación, abra un símbolo del sistema y ejecute IISApp.vbs en el servidor de Windows para identificar el proceso de IDENTIFICADOR (PID) que ejecuta la aplicación Web de SharePoint. A continuación, en Visual Studio, seleccione la instancia de w3wp con el PID coincidente.
Otra herramienta muy útil es Mostrar de excepción . Cuando se habilita esta herramienta en el conjunto de servidores, sustituye el mensaje de página de error descriptivo de SharePoint con un número de tipos de pantalla de excepción. Para obtener más información sobre cómo instalar y utilizar esta herramienta, haga clic en "Mostrar excepciones" en el vínculo enumerado anteriormente.
Si un elemento Web implementado está causando un error de carga de página, puede abrir la página de mantenimiento de elementos Web agregando? contenido = 1 hasta el final de la dirección URL de página. En la página de mantenimiento, puede cerrar o eliminar el elemento Web incorrecto de la página.
Por último, puede habilitar el seguimiento de nivel de aplicación en el archivo web.config de su aplicación Web. Vea la descripción de" Habilitar el seguimiento de nivel de aplicación ."
mantener ampliar el marco de trabajo. SharePoint es más capaz de integrar soluciones personalizadas en una gran variedad de formas. Gracias a SharePoint está integrado en la parte superior de ASP.NET, éste hereda los puntos de extensibilidad de esta plataforma. Con el lanzamiento de WSS 3.0 MOSS SP1, Microsoft admite ahora el marco de AJAX de ASP.NET, lo que significa que puede aprovechar las extensiones de AJAX de ASP.NET y AJAX Control Toolkit. Puede facilitar el procedimiento de instalación y configuración mediante la Ajaxify las extensiones de stsadm personalizado de MOSS mediante programación que agregar o quitar entradas relacionadas con AJAX web.config utilizando la clase SPWebConfigModification.
Con el marco en su lugar, puede utilizar el conjunto de control de AJAX y mejorar la capacidad de respuesta de las páginas mediante la implementación de devoluciones de llamada de cliente. Esto es especialmente importante al tomar Web externo llama al servicio en elementos Web personalizados. Vea" Llamadas A de servicios de cliente de web con AJAX Extensions ."
jQuery es otro marco de cliente que es obtener una gran cantidad de atención, especialmente con el anuncio reciente por Microsoft que se se admitirá en Visual Studio. Puesto que la biblioteca principal jQuery está incluida en un archivo .js único, integrar en SharePoint es sencilla. Vea" el administrador de secuencias de comandos jQuery "para un enfoque para incrustar secuencias de comandos jQuery en una página Web de ASP.NET.
Si está buscando información sobre la integración de Silverlight, consulte" Claro hacia arriba de SharePoint con elementos Web de Silverlight 2 ." Los autores explorar un ejemplo de integración de una aplicación de Silverlight con SharePoint.

4. Desarrollar soluciones de fuera de servidor
Siempre que sea posible, debe crear sus soluciones libres de las dependencias que impone a menudo el desarrollo de SharePoint. Mediante el servidor de desarrollo de Visual Studio, soporte técnico de marco de elementos Web de ASP.NET, servicios Web de SharePoint y herramientas de terceros, puede completar la mayor parte de su desarrollo en una estación de trabajo estándar en lugar de un equipo que ejecuta SharePoint.
Puesto que se ejecuta SharePoint de IIS y ASP.NET, el servidor de desarrollo Web incluido con Visual Studio es un excelente punto de partida para la mayor parte de su desarrollo de SharePoint. Por ejemplo, puede desarrollar elementos Web, los controladores HTTP y controles Web de esta, relativamente hablando, entorno ligero.
Cierto trabajo inicial está involucrado en configurar el entorno a host los componentes. Por ejemplo, para desarrollar con eficacia un elementos Web de ASP.NET, debe crear un proyecto de clases para el host del elemento Web, un proyecto de aplicación de Web de Visual Studio y, opcionalmente, un proyecto de prueba de unidad. Se ha incluye un ejemplo de esta configuración en la solución de SPTips de Visual Studio (incluida con código de ejemplo el artículo) que puede utilizar para desarrollo de elementos Web fuera del servidor.
En el proyecto de elementos Web, el constructor predeterminado contiene una línea que establece la propiedad ExportMode del elemento Web:
public WebPartOffServerExample()
{
    this.ExportMode = WebPartExportMode.All;
}
Esta línea le permite generar un archivo de implementación de .WebPart en función de las propiedades que configure para el elemento Web, tal como se muestra en La figura 4 .
La figura 4 el elemento Web de exportar la opción de menú
A continuación, puede importar el elemento Web en SharePoint a través de este archivo de implementación ( figura 5 ). No debe utilizar el tipo de archivo de importación compatible con versiones anteriores de SharePoint 2003, dwp. El esquema XML subyacente de un .dwp no es tan completo y requiere que se referencia al ensamblado Microsoft.SharePoint al principio de la SDLC.
La figura 5 el elemento Web importado en el punto de recurso compartido
Tenga en cuenta que puede garantizar la creación de .WebPart los archivos de implementación heredando de la clase de elemento Web en el espacio de nombres System.Web.UI.WebControls.WebParts en vez del espacio de nombres Microsoft.SharePoint.WebPartPages. (Para obtener ejemplos de cuando es posible que desee heredar de clase de elemento Web de SharePoint, vea el origen aparecen en la barra lateral "Recursos").
Microsoft expone un subconjunto significativo del modelo de objetos SharePoint a través de servicios Web de. Uso de servicios Web de SharePoint para tener acceso al modelo de objetos permite desarrollar una solución sin una dependencia de acceso directo a los ensamblados de SharePoint. SharePoint aloja los servicios Web en el directorio virtual _vti_bin en cada servidor Web Front End (WFE).
En Visual Studio, agregue servicios Web de SharePoint a una solución de la misma manera como lo haría en cualquier referencia de servicio Web. Direcciones URL de servicio Web de SharePoint tienen el formato siguiente:
http://<SharePointServer>:port/[sites/][SubSite/]_vti_bin/WebService.asmx
donde <sharepointserver> es la dirección URL asociada a la aplicación Web. Por ejemplo:
http://www.contoso.com:35000/_vti_bin/Lists.asmx
Cuando se agrega una referencia de servicio Web, Visual Studio crea clases de proxy para el servicio y los tipos de datos utilizados por el servicio. Para obtener más información de interactuar con estos servicios Web, consulte" Tema SDK de WSS 3.0: instrucciones el servicio Web "y" Servicios Web de SharePoint ."
implementar una arquitectura de tres niveles se amplía el objetivo de aislar el código y quitar dependencias en SharePoint y otros orígenes externos. Este enfoque puede mejorar su capacidad para desarrollar desactivar servidor mediante través de la extracción empresariales, acceso a datos y lógica de interfaz de usuario de otro, lo que permite interrumpir el código en partes manejables y reducir las dependencias entre ellas. Este enfoque también genera más código comprobable; más sobre esto en la sección "prueba de código y administrar dependencias".
hay otras herramientas que se puede utilizar. Quitar la dependencia de SharePoint en el código base completa es no realistas. Desarrollo de SharePoint desactivar servidor normalmente requiere el uso de una instancia de SharePoint, normalmente alojada en un equipo virtual, al principio de la SDLC. Con el crecimiento del desarrollo de SharePoint, se han creado varias herramientas para tratar esta dependencia importante. Una dicha herramienta es SharePoint bambú soluciones en la vista auxiliar de instalación. Esta herramienta permite la instalación de Service Pack 1 de WSS 3.0 o MOSS 2007 SP1 de Windows Vista, que ofrece la capacidad para desarrollar soluciones depende de SharePoint sin necesidad de Windows Server.
Microsoft no admite la ejecución de SharePoint en este modo. Sin embargo, este enfoque ha resonated en la comunidad de desarrollo de SharePoint porque ayuda a reducir la superficie que crea esta dependencia en SharePoint. Para obtener más información, consulte" Cómo instalar Windows SharePoint Services 3.0 SP1 en vista x 64 y x 86 ."

5. Probar código y administrar las dependencias
La adopción generalizada de los marcos de pruebas de unidad y herramientas de prueba relacionada Naturalmente realizó su forma en el desarrollo de SharePoint. Las pruebas unitarias y pruebas de integración son dos categorías principales pruebas. Ambos tipos de pruebas presentan características diferentes y requieren el uso de diferentes herramientas y técnicas.
al escribir la unidad o fuera del servidor de pruebas, se considera una práctica recomendada simular las dependencias externas con sustituye como auxiliares o simulacros. Pasando de objetos que imitan dependencias externas, la prueba pasa a ser más rápido y más centrado en el comportamiento que está probando. Para que sea eficaz, este enfoque requiere que se siguen los principios de diseño comprobable, orientado a objetos, o utilizar un marco especializado para aislar componentes estrechamente de la solución.
Identificar el comportamientos y reglas de negocio que son independiente de infraestructura y asegurarse de que dispone de una estrategia para probarlos en aislamiento. Para aislar las interacciones con SharePoint, una base de datos o un servicio Web, puede introducir el modelo de repositorio abstract inmediatamente los detalles del sistema de fondo. Estos objetos del repositorio se pueden pasar en componentes de nivel superiores mediante la inversión de control (IoC) y los principios de inserción (DI) de dependencia. Para obtener información sobre IoC y DI, vea" Tame sus dependencias de software para aplicaciones más flexibles ."
Para aumentar la testability de la presentación componentes implementar el modelo Model-View-Presenter (MVP). Para obtener más información sobre modelos de código comprobable, consulte" Diseño de Testability ."
Otros principales retos que cara de los desarrolladores de SharePoint al modelo de objetos unidad pruebas tratar el SharePoint. En pocas palabras, probar los componentes en el aislamiento es una tarea triviales. Es el resultado directo de un número limitado de interfaces y abstracciones así como un número elevado de clases sealed, las clases con dependencias internas o sin un constructor público.
Un producto equipado para tratar con estas limitaciones es TypeMock Isolator, un marco mocking comercial que permite simulacros de clases sealed, concretas, estáticos o internamente construidos. Para que otros marcos mocking para ser aplicable, tiene que adherirse a los patrones y los principios que ya nos han eluded a. TypeMock Isolator o en su nueva versión específica de SharePoint, Isolator para SharePoint, se solucionar estas limitaciones y permiten la cobertura de código mayor sin depender de una instancia en ejecución de SharePoint. Los patrones y prácticas (CyP) equipo también utiliza TypeMock Isolator en su Arquitectura de referencia guía de SharePoint .
en algún momento, que tendrá que escribir pruebas de integración que dependen del modelo de objetos de SharePoint. Es recomendable para administrar las pruebas unitarias que son independientes de servidor de los que son dependientes de servidor.
Puede utilizar el Editor de lista de pruebas en el administrador de prueba en Visual Studio para separar las pruebas de unidades y de integración. Por ejemplo, puede crear dos listas de pruebas: servidor dependiente y servidor independiente (consulte la figura 6 ). Este enfoque le permite seleccionar el conjunto de pruebas para ejecutar, en función de si se encuentra en el servidor.
Figura 6 el mostrar editor de pruebas lista de una lista de pruebas organizados por categorías
En casos en que Visual Studio está instalado en el servidor, puede ejecutar y depurar las pruebas en el IDE o utilizar la herramienta de línea de comandos de MSTest.exe para ejecutar pruebas dependientes del servidor. Por desgracia, MSTest no se ejecuta a menos que Visual Studio está instalado en el servidor. Esperamos es que una versión futura de MSTest no incluirá esta dependencia gruesa.
MSTest.exe le permite especificar qué pruebas que desea ejecutar a través de los argumentos de la línea de comandos. Cuando se ejecuta MSTest.exe, debe especificar en el /testcontainer o la opción /testmetadata. Mediante la opción /testmetadata, puede especificar qué pruebas se ejecutarán. Por ejemplo, para ejecutar todas las pruebas depende de servidor, escriba:
MSTest /testmetadata:SPTips.vsmdi /testlist:ServerDependentTests
Para ejecutar una prueba específica dentro de las pruebas depende de servidor, escriba:
MSTest /testmetadata:SPTips.vsmdi /test:GetTasks_ShouldReturnTasks
Para obtener ejemplos de servidor de pruebas y pruebas con un marco de trabajo mocking, vea el código de ejemplo de la solución SPTips de Visual Studio incluida con la descarga de código en este artículo.

Integración continua de 6. y generación automática
Mantener el código en control de código fuente, depender de integración continua y automatizar el proceso de compilación son pasos esenciales para versión eficaz de activos de código de alta calidad. SharePoint realiza la configuración de un este entorno desafío, al decir el menor. Para esta sugerencia, el punto de partida más importante es el " Información general sobre el equipo desarrollo "tema.
Más adelante en la introducción, verá el tema Guía de SharePoint " Cómo: Crear una generación automatizada y solución de implementación con Team Foundation Server Build. " En este tema se centra en la creación de destinos de generación para crear e implementar soluciones. Aunque este método tiene mérito, no es se puede utilizar al generar los TFS y servidores de SharePoint no residen en el mismo entorno, como a menudo es el caso de la empresa. Creación de los paquetes de solución con objetivos limita el uso de paquetes para el entorno de generación automática y, por tanto, no fomentar primeras desarrollo y pruebas de paquetes por los desarrolladores.
La alternativa es utilizar posterior a la generación de eventos de Visual Studio. Los eventos posterior a la generación se pueden configurar para realizar los mismos pasos empaquetado los objetivos de MSBuild y permiten a los desarrolladores crear paquetes de implementación a sus propios entornos de recinto de seguridad. Este enfoque también funciona con herramientas de otros fabricantes, como WSPBuilder y STSDEV.
Al implementar a la empresa, también tendrá que tener en cuenta las versiones de los paquetes de solución. Unión de la versión de solución para la versión de compilación actual es el enfoque un. Puede ser facilitado mediante ejecutar en el evento de MSBuild AfterBuild o desde el evento posterior a la generación de código de aplicación personalizada. Considere también solución ID en la generación automática y si desea generar nuevos ID con cada generación. Esta decisión afectará a su capacidad para actualizar soluciones en el futuro. Como norma general, generar nueva solución de los identificadores cuando cambian las versiones de ensamblado. De lo contrario, mantener la solución de los identificadores misma donde crea son estáticos entre los identificadores de versión.
En vez de repetir información que se puede obtener de la Centro de desarrollo de SharePoint Server , se ampliar esta sugerencia centrándose en cómo simplificar aún más el proceso de generación automática. Da por sentado en el tema Guía de SharePoint "cómo a: crear un automática generar y distribución soluciones con Team Foundation Server Team Build", el equipo CyP que se está utilizando VSeWSS o extensiones.
Mientras VSeWSS es una adición fenomenal en el Kit de herramientas del desarrollador de SharePoint, con capacidades como el panel WSPView que le permite configurar la solución sobre la marcha, hemos encontrado que no resulta idóneo para medianas a grandes implementaciones o los equipos que siguen las metodologías de desarrollo ágil.
La documentación de equipo de la Guía de SharePoint CyP afirma que VSeWSS proporciona implementación one-click y depuración de F5. La capacidad de implementación one-click es ciertamente parte VSeWSS, pero la capacidad de depuración de F5 tiene más que ver con el hecho de que debe ejecutar Visual Studio local a la instancia de SharePoint. Esto es un requisito para instalar VSeWSS. Aunque puede utilizar un engañar del registro para obtener VSeWSS instalado en una estación de trabajo, la mayoría de los beneficios de la extensión se pierden cuando está instalado en una estación de trabajo.
La documentación también indica que muchas de las herramientas como WSPBuilder y STSDEV requieren a los programadores mantener Feature.XML y el archivo manifest.xml archivos de paquete de solución SharePoint en un paquete de solución de Web. En realidad, estas herramientas evolucionan constantemente. Por ejemplo, WSPBuilder ahora incluye las extensiones que permiten mantenimiento sencillo de Feature.XML y el archivo manifest.xml en Visual Studio 2005 y 2008.
VSeWSS es muy útil cuando no está seguro acerca de cómo estructurar un proyecto de SharePoint. Por ejemplo, es posible que desee utilizar un tipo de proyecto de VSeWSS para determinar la estructura de un elemento Web o un proyecto de flujo de trabajo de SharePoint. Una vez que se sabe cómo hacerlo, puede tomar dicha información y muévalo a un tipo de proyecto omnipresente. Los principales problemas mediante VSeWSS para una mediana a grande proyecto son los siguientes:
  • Las extensiones están diseñadas para instalarse en una instancia de Visual Studio que se ejecuta en un servidor de SharePoint. Por tanto, tiene una dependencia de disco duro de WSS.
  • Los desarrolladores que no han instalado VSeWSS no tendrá los tipos de proyecto especial que crea VSeWSS y no podrán abrir proyectos que dependen de ellos.
  • Volver a generar una solución estará más complicado por VSeWSS.
La documentación de la guía se sugiere que el otro enfoque consiste en manualmente, crear un archivo de solución SharePoint para cada solución de Visual Studio, along with la implementación de manifiesto manifest.xml. Sin embargo, herramientas como WSPBuilder permiten automatizar este paso en la generación.
Las claves para una generación automática correcta son:
  • Usar tipos de proyecto de Visual Studio estándar (es decir, proyectos de clase para los elementos Web) para que todos los desarrolladores pueden abrir fácilmente un proyecto.
  • Estructura del proyecto de código para que el paquete de solución está integrado en el proyecto, tal como se muestra en la figura 7 . No es necesario para crear un proyecto de implementación independientes.
  • Configurar un evento posterior a la generación ejecutar WSPBuilder u otra solución de creación de herramienta para generar el archivo de solución SharePoint automatizada. Este enfoque funciona tanto para la implementación local de la solución como para el proceso de generación automática.
  • Utilizar condiciones de macros para controlar las partes del evento posterior a la generación que se llama en función de donde se produce la generación.
  • Una generación automática es más complicada en un proyecto de InfoPath. Para obtener información sobre esto, vea la sugerencia "tratar con InfoPath proyectos en una automática Build" en la versión en línea de este artículo.
La figura 7 de descarga de estructura de empaquetado de soluciones integrada en el código de proyecto de elementos Web
no implementar en la caché de ensamblados global (GAC) hasta que se mueva a un entorno de integración. Mantener los ensamblados en la carpeta de compartimientos facilita la depuración personalizadas SharePoint aplicaciones considerablemente. Hay ciertos tipos de proyecto que no se ajustan a este modelo, tales como controladores de eventos de SharePoint y las características de SharePoint. Al colocar los ensamblados compatibles en la carpeta de compartimientos, los desarrolladores en un entorno de desarrollo compartido no tienen que endure frecuentes restablece IIS después de cada implementación.
Algunos punteros para ejecutar los ensamblados de SharePoint desde los compartimientos son:
  • Decorar el ensamblado con el atributo [assembly:System.Security.AllowPartiallyTrustedCallers].
  • Configurar directiva de seguridad (CAS) de acceso a código personalizado o establecer web.config a plena confianza, tal como se muestra aquí:
<system.web>
  <trust level="Full" />
</system.web>
Tenga en (cuenta que establecer el nivel de confianza en completa es sólo adecuado para el desarrollo local o interno donde los activos de código se, finalmente, debe implementar en la GAC.)
  • Firmar los ensamblados de implementación final a la GAC.

7. Han SharePoint Administrar configuración de la configuración personalizada
Al igual que cualquier aplicación, soluciones de SharePoint se basan en opciones de configuración para que funcione correctamente. Una aplicación personalizada con sólo unos pocos valores de configuración puede ser difíciles de administrar manualmente. En cambio, al desarrollar empresarial o las aplicaciones comerciales en SharePoint, el número de opciones de configuración puede ser considerable.
Como resultado, es importante para desarrollar, implementar y administrar las aplicaciones saber los tipos de configuración diferente y cómo administrarlos. El mejor método es aumentar el número de opciones que administra SharePoint y reducir el número de configuración administrada manualmente.
Descripción de los tipos de configuración ayuda a identificar que pertenece la configuración. Configuración de SharePoint generalmente se dividen en tres categorías: principal, personalizada y configuración de SharePoint.
Configuración del principal se utiliza a través de una aplicación Web de SharePoint. Bloques de aplicación de Enterprise Library y configuraciones de servicios Web externas son ejemplos de configuración principal típico.
Configuraciones personalizadas son para los componentes de generación personalizadas. Estos valores se utilizan para proporcionar opciones de configuración para el componente personalizado y no se comparten fuera del componente. Por ejemplo, se puede utilizar una configuración personalizada para proporcionar configuración de servidor de directorio para una búsqueda LDAP.
Configuración de SharePoint es necesarios para poner la solución de trabajo dentro de SharePoint. Configuración de esta categoría incluyen entradas SafeControls, SessionState personalizaciones o registrar HttpModules.
Después de clasificar la configuración, las puede implementar en las ubicaciones derecha para administrarlos. El objetivo es reducir el número de configuración administrada manualmente. Permite controlar la configuración de SharePoint reduce el número de errores que pueden producirse cuando se implementan las aplicaciones.
Mejor administra principales de las configuraciones en el control de código fuente. Esto permite mantener un historial de configuración además de proporcionar un único origen de verdad para la configuración. Además, este enfoque permite para mantener las versiones diferentes de archivos de configuración para entornos de desarrollo, prueba y producción.
Puede automatizar la instalación de una configuración personalizada y administración mediante las herramientas de modelo y la implementación del objeto SharePoint. Utilizar la clase SPWebConfigModification, solución de implementación y el directorio CONFIG bajo el subárbol del 12 de SharePoint para formar su estrategia de administración de configuración. Consulte la sección "Crear pueden implementar soluciones de" en este artículo para obtener información adicional acerca de la implementación a través de soluciones.
La clase SPWebConfigModification de SharePoint permite registrar mediante programación la configuración en el archivo web.config de una aplicación Web de SharePoint. SPWebConfigModification, puede escribir una aplicación de consola o extensión de stsadm para la lista, agregar o eliminar entradas de configuración. Este enfoque permite para su modificación rápida y coherente de grandes conjuntos de opciones de configuración de SharePoint. La enumeración SPWebConfigModificationType dentro de esta clase contiene tres valores que especifica el tipo de modificación se realiza: EnsureChildNode, EnsureAttribute y EnsureSection. Tenga cuidado cuando utiliza EnsureSection ya entradas agregadas con esta enumeración no pueden quitarse fácilmente. Para obtener más información, consulte" Automatizar la implementación de aplicaciones Web con la API de SharePoint ."
El directorio CONFIG de SharePoint le permite mediante declaración registrar configuración al mantener archivos XML en este directorio. WSS aplica configuración de los archivos XML para el archivo web.config cuando SharePoint crea una aplicación Web. Configuración de esta carpeta se aplica a todas las aplicaciones Web. Para obtener información de este enfoque, vea" Administrar personalizaciones de Web.config ."

8. Saber que pertenecen la opciones de configuración
La sugerencia anterior se han explorado diferentes tipos de configuración de SharePoint y el modo administrarlos. Como una aplicación pasa a través de entornos, como de prueba a producción, pueden sentir cambios en la configuración de configuración, especialmente aquellas hacia sistemas externos, como objetivas desplazamiento en los pies. Saber que pertenecen valores de configuración, puede colocar administración de configuraciones de entorno en base más sólida.
desarrollo de aplicaciones compuestas ha aumentado depende de configuración. La eficacia y facilidad de uso de configuración posiblemente se llevó a su overuse. Una forma de reducir constantes cambios a esta configuración es aplicando el paradigma de convención de a través de configuración por inferir en su lugar los valores de cosas tales como las convenciones de nomenclatura. Se describen un ejemplo del paradigma de convención de a través de configuración en la sección "continua y automática generación de integración" por demuestre cómo integrar el paquete de solución de SharePoint en los proyectos de Visual Studio. Un ejemplo relacionado de este paradigma aparece en la sugerencia de contenido Web, "utilizar relativas vínculos siempre que sea posible."
configuración específica de instancia son únicos para cada instancia de un elemento Web. Por ejemplo, se puede tener un elemento Web que muestra una lista de proyectos en la página de un administrador de programas, mientras que en la página de un desarrollador muestra detalles de proyectos y tareas. Configuración específica de la instancia mejor se almacenan en un elemento de herramientas personalizado o en varios elementos de herramienta de propiedades un elemento Web.
Opciones de configuración que se utiliza más de un componente se consideran valores globales. Ejemplos de configuración de esta categoría son direcciones URL para los servicios Web externos, configuración del objeto empresarial y configuración de datos. Estas opciones son mejores mantienen en web.config y administra como se describe en la sección "usar SharePoint Administrar personalizada configuración configuración".

Marca de 9 SharePoint de escala y mantenimiento
Marca de su sitio de SharePoint proporciona a los usuarios la indicación visual más evidente de propósito de la aplicación. Trabajar con distintos artefactos, como las páginas maestras, páginas de contenido, diseños de página, las definiciones de sitios y CSS implica la personalización. Para una sugerencia sobre la creación de páginas maestras personalizadas, ver la sugerencia en pantalla "crear páginas de principal personalizado".
Asegúrese de que su estrategia de escala y el mantenimiento de aplicaciones tiene en cuenta cómo administrará estos artefactos de personalización de marca. Para obtener más información de personalización de SharePoint, vea "Microsoft Office SharePoint Server 2007 y Windows SharePoint Server v3" en la barra lateral "Recursos".
antes de elegir una herramienta de personalización, tener en cuenta el tamaño de la implementación de SharePoint, el alcance de los esfuerzos de personalización de marca y la experiencia de los programadores compatibilidad con la aplicación. Nos centraremos en dos herramientas: SharePoint Designer y Visual Studio.
SharePoint Designer tiene sus raíces en FrontPage y es una herramienta de diseño Web útil para editar páginas principales y CSS. Sin embargo, la facilidad de uso proporcionada por SharePoint Designer incluye a un precio:
  • No hay admitir de control de origen integrado.
  • Los cambios realizados en el resultado de SharePoint Designer en el contenido modificado convertirse unghosted.
En un estado fantasma, copias del contenido se almacenan en la base de datos contenido en lugar del sistema de archivos. Como resultado, unghosting tiene los siguientes efectos:
  • Dificulta las implementaciones de administrar porque el contenido se puede actualizar sólo en SharePoint o SharePoint Designer
  • Desconecta un sitio de contenido actualizado implementado en el sistema de archivos
  • Lleva a posibles problemas de rendimiento en grandes, activas las implementaciones de SharePoint
Por estos motivos, creemos SharePoint Designer es más apropiado para pequeñas y medianas implementaciones y prototipos.
Visual Studio proporciona un entorno de desarrollo coherente para los componentes de aplicación y artefactos de personalización de marca, pero carece de la gráfica edición funcionalidad en SharePoint Designer. Los desarrolladores a causa de ello, deben ser más capaces con edición HTML y CSS. Una estructura de proyecto buena debe configurarse para mantener los artefactos de personalización de marca. Con compatibilidad con control de código fuente integrado de Visual Studio, es más fácil de administrar las configuraciones específicas de entorno y el paquete marca artefactos para implementarse en distintos entornos. Además, los artefactos de personalización de marca permanecen fantasma. Por lo tanto, Visual Studio es nuestra preferido SharePoint personalización herramienta empresarial de gran tamaño e implementaciones comerciales.
hay tres enfoques a aplicar personalización: plantillas de sitio, las definiciones de sitio personalizadas y OOB sitios de las definiciones junto con las personalizaciones mediante la característica grapado. Crear plantillas de sitio personalizadas puede ser el enfoque más rápido para implementaciones pequeñas y prototipos. Sin embargo, los sitios creados desde una plantilla no se actualizará cuando se carga una plantilla nueva. Las plantillas personalizadas no permiten especificar el IDENTIFICADOR de plantilla, que requerirá que los cambios en cualquier código de aprovisionamiento que hace referencia a las plantillas. Además, las plantillas de sitio crear sólo contenido fantasma, que puede afectar al rendimiento.
Las definiciones de sitio son más flexibles y portátiles que las plantillas de sitio. Puede administrar el archivo de definición de sitio (onet.xml) y el contenido asociado en el control de código fuente y distribuir contenido fantasma, permitir que un sitio se actualiza con nuevo contenido siempre que no se ya se haya personalizado. Las definiciones de sitios pueden ser difíciles crear debido de la complejidad del código XML deberá modificar. Esta tarea se realiza más fácil mediante las definiciones de sitio OOB (se encuentra en 12\Template\SiteTemplates como punto de partida) o exportar una definición de sitio utilizando VSeWSS. Para información sobre las definiciones de sitios, vea" Definiciones de sitio Demystified ."
Cuando se trabaja con medianas a grandes implementaciones, combinar OOB definiciones de sitios con características personalizadas es el mejor método. Las características se pueden utilizar para extender las definiciones de sitios y proporcionar un enfoque modular para el aprovisionamiento de sitios. Para una buena introducción de las características, examine la columna Office Space" Características de SharePoint ." Las extensiones VSeWSS, así como algunas herramientas de terceros, ofrecen plantillas para crear funciones comunes utilizados en sitios Web de personalización.
Grapado de característica le permite adjuntar una característica a una definición de sitio y tiene habilitado cuando se crea un sitio Web nuevo. Esto es una forma excelente para aplicar la marca a las definiciones de sitio OOB de SharePoint.

10. Generación pueden implementar soluciones
Puede obtener los componentes en una aplicación Web de SharePoint de varias maneras. En esta sección se centra en cómo utilizar el empaquetado y marcos de implementación que SharePoint ofrece, incluidos los paquetes de solución de Web (soluciones y WSPs), las características y el modelo de objeto de SharePoint.
decidir cómo al paquete componentes depende en gran medida donde se implementan los componentes. Soluciones contienen archivos que se implementarán en el servidor. Las características de contienen que se implementarán en la base de datos de contenido.
Una solución de SharePoint contiene los ensamblados y los recursos para implementarse en aplicaciones Web de SharePoint. Las soluciones son compacto, fácil de implementar y retirar y reflejo actualizaciones de archivos en las soluciones de SharePoint en múltiples servidores de un conjunto de controladores de SharePoint. También puede utilizar las soluciones de SharePoint para modificación de web.config. Consulte las secciones "saber críticas SPDev tareas y información orígenes" y "usar SharePoint Administrar personalizada configuración configuración" para obtener información adicional acerca de soluciones y modificación de web.config. Figura 8 muestra las ubicaciones de carpeta comunes compatibles con las soluciones y su contenido. El "subárbol 12" hace referencia a la raíz de la aplicación de SharePoint, o <%CommonProgramFiles%> \Microsoft Shared\Web servidor extensions\12 de forma predeterminada.
Figura 8 comunes ubicaciones de archivo accesibles desde WSPs de
Carpeta en la sección 12 Contiene
\ISAPI\HELP\[LCID] Los archivos de Ayuda de SharePoint. Implementar sus propios archivos .chm en esta carpeta (o una subcarpeta localizada)
\CONFIG Las personalizaciones de Web.config
\ISAPI Servicios web de SharePoint (implementar los servicios web personalizado aquí así); se asigna a /_vti_bin
\Resources Archivos .resx global tiene acceso desde las características personalizadas y definiciones de sitio
\TEMPLATE\CONTROLTEMPLATES Los controles de usuario .ascx; se asigna a /_controltemplates
\TEMPLATE\FEATURES Características, de curso.
\TEMPLATE\LAYOUTS Comunes de las páginas del sitio; se asigna a /_layouts
\TEMPLATE\IMAGES Común de archivos de imagen de sitio; se asigna a/_layouts/imágenes
\TEMPLATE\SiteTemplates SharePoint todas las definiciones del sitio; crear un \xml <subfolder> para implementar la definición de sitio personalizadas onet.xml
\TEMPLATE\THEMES Todos los elementos de interfaz de usuario se utilizan en los temas; clonar una carpeta de tema existente para crear los suyos propios
\TEMPLATE\[LCID]\XML Webtemp.xml archivos para definir las definiciones de sitio disponibles; agregar un archivo xml aquí para la definición de sitio personalizadas
\TEMPLATE\ADMIN Páginas utilizadas por el administrador central; se asigna a /_admin
\ADMISAPI Servicios de administración web; se asigna a /_vti_adm
A continuación se reglas importantes que recordar cuando trabaje con soluciones:
  • Ya se administran soluciones de SharePoint en la base de datos de configuración, puede haber sólo una instancia única de una solución de SharePoint de un conjunto de servidores. Este punto es importante si piensa utilizar del mismo conjunto a host diferente versiones de la misma aplicación Web, por ejemplo, tanto mantenimiento actual y entornos de desarrollo futuros.
  • Realiza SharePoint seguimiento soluciones por ID no por nombre, por lo que necesita mantener los identificadores de la solución en el control de código fuente si piensa actualizar soluciones en el futuro.
  • El subárbol 12 es un espacio de aplicaciones Web compartido. Si piensa alojar varias aplicaciones Web en el mismo conjunto de servidores, debe asegurarse de que las soluciones de SharePoint no sobrescriben SharePoint existente archivos implementado por otras soluciones en este espacio o.
  • Las soluciones no pueden implementar archivos fuera de las carpetas enumeradas en Figura 8 , incluidas las carpetas de la aplicación Web, como wpresources, _wpresources global o otras carpetas fuera del subárbol 12.
  • Las soluciones no pueden distribuir contenido dentro de una aplicación Web de SharePoint. Esto es la función de las características de SharePoint.
Las características pueden realizar elementos Web disponibles en la galería, cargar y publicar archivos en bibliotecas de documentos y realizar acciones personalizadas, como cuando se establece el tema de sitio o página maestra predeterminada con los ensamblados de receptor de características. Ver la información sobre el uso de la derecha la técnica anterior de este artículo para obtener información sobre el uso las características de personalización de marca.
A continuación figuran algunas advertencias para crear funciones:
  • Características no un seguimiento contenido agregado, por lo que es la responsabilidad de la característica para limpiar después de sí mismo cuando se está desactivada mediante un receptor de características. Considere la posibilidad de todo el ciclo de vida de la característica y si implementa la característica de contenido puede ser necesario por otras partes de la aplicación Web antes de elimina el contenido. Por ejemplo, quitar una página principal de la desactivación de una característica desvincularán todas las páginas que heredan de esa página maestra.
  • Desactivar una característica de todas las aplicaciones Web antes de quitar la solución utilizada para implementar la característica. Si no lo hace, se producirá la implementación de soluciones, y si se ha eliminado la carpeta de características, deberá forzar una desinstalación de la característica utilizar STSADM.

Suficiente dice que
Mediante este artículo como el mapa, se revisar las referencias proporcionadas para información y se descargar ejemplo de código del artículo en el para ayudarle a empezar. Quizás como desarrollar aplicaciones en la plataforma SharePoint, revisará estas recomendaciones nuevo y también buscar uso en los ejemplos de código. Si necesite aclaración o desea otorgar a nosotros comentarios acerca de las sugerencias se ha proporcionan o otras sugerencias que considere importante, envíenos sus preguntas o comentarios y nos se endeavor responder rápidamente. Se pueden llegar a nosotros a través del correo electrónico en ewilansky@Yahoo.com .
Sugerencias adicionales
Aquí se algunas sugerencias adicionales para el desarrollo de soluciones de SharePoint.
Utilizar vínculos con relación siempre que sea posible
Considere la posibilidad de utilizar vínculos relativos en lugar de vínculos absolutos. Incluye vínculos relativos a ubicaciones como bibliotecas de documentos, las conexiones de datos y bibliotecas de informes simplifica la implementación de una instancia de SharePoint a otro. Con el ejemplo de biblioteca de informes de cuenta, si utilizas una ubicación Web coherente para la biblioteca de informes en todos los entornos de SharePoint, no será necesario cambiar los punteros a informes que se mueve la aplicación de un entorno a la siguiente. Normalmente, convención sobre configuración se aplica a la configuración de código, pero este concepto también se puede escasamente aplicar a otros aspectos de la configuración de sus implementaciones.
Nota relacionada, esperamos que Microsoft admitirá vínculos relativos dentro de la plataforma SharePoint, donde actualmente algunas opciones de configuración requieren vínculos absolutos. Por ejemplo, debe especificar una dirección URL absoluta a la biblioteca de formularios en un le archivo de conexión de datos de InfoPath ucdx, y el elemento de Web ReportViewer requiere una ruta de acceso absoluta a la definición del informe.
Crear las páginas maestras personalizadas
Una forma común marca sitios de SharePoint con su aspecto es crear páginas maestras personalizadas, que proporcionan el control más sobre el diseño de su sitio. Puede tomar una página principal de SharePoint existente y modificarlo para satisfacer sus necesidades. Este enfoque funciona mejor si la página maestra existente está cerca a la distribución que desee. Si el aspecto que desea es muy diferente de cualquiera de las páginas principales de OOB, es posible que tienden iniciar desde cero. Sin embargo, debido a que SharePoint requiere cierta funcionalidad en las páginas principales, se recomienda comenzar con una página maestra mínima y crear su apariencia y funcionamiento desde allí. Para saber más sobre cómo crear una página maestra mínimos, consulte “ Cómo: Crear una página maestra mínima ” en. También puede descargar algunas páginas principales mínima de ’s Solomon Hari blog, que también se enumera en la sección de recursos.
Trabaja con proyectos de InfoPath en una generación automática
Proyectos creados en Microsoft InfoPath Designer determinar aún más sus esfuerzos para automatizar la generación. Lo mejor que puede hacer realmente es dejar que InfoPath y SharePoint controlan el paquete. Vea “ automatizar aplicaciones implementación con la SharePoint API Web ” en la sección de recursos para obtener más información acerca de cómo obtener los paquetes de solución portátil desde proyectos de InfoPath.

Ethan Wilansky es un director en práctica de FTI consultoría de tecnología y se centra en la creación de soluciones personalizadas de SharePoint. Como MVP de servicios de directorio Microsoft, se centra en el marco de programación DS y se también es un miembro del consejo consultivo de cambios de Office Developer.

Paul Olszewski es un especialista de información en un equipo de capacidad de .NET. Se especializa en crear e implementar aplicaciones de componentes reutilizables aprovechar las tecnologías de Microsoft.

Tomek Stojecki funciona en Annapolis equipos donde él especializada en la arquitectura y desarrollo de aplicaciones de .NET con patrones de diseño y metodologías ágiles. Ha consultar en un número de proyectos en función de SharePoint.

Stefan Kowalewski es consultor senior en un equipo de desarrollo de SharePoint. Proporciona experiencia técnica y aporta experiencia ágil ha demostrado dar buenos resultado a los esfuerzos de desarrollo de SharePoint personalizados.

Page view tracker