In Russia, there are few Internet sites on SharePoint (there are
considerably more of them abroad), meanwhile this platform, widely used on the intranet, looks very attractive in Internet / extranet scenarios for customers and web developers. Many do not even know that you can create websites on SharePoint. Meanwhile, the platform’s functionality allows you to quickly create business-efficient websites, while the basic Windows Sharepoint is available for free.
Let's analyze a fairly typical scenario and you will say whether it is worth using Sharepoint for the web, and if it is not worth it, please comment - why? Here, the thing is that at the TechDays seminars I give a demonstration of creating such a scenario and you can
download the presentation and step-by-step instructions on how to make it - you can try it on your computer. For this reason, comments and responses are especially interesting to me.
Situation
There is a small company, let it be “Horns and hoofs”, which need to make a website to work with suppliers and partners.
')

The script that you want to work:
- suppliers place in the form on the site offers to sell horns
- partner sellers place in another application form for finished products for their stores
- employees of the company “Horns and hoofs” work out the applications, interact with the production department
- heads of departments receive reports on the process, control key indicators (number of applications per day, percentage taken, etc.)
Management considers the site as an important business tool and therefore believes that
- almost all employees should be able to work with him,
- The site should integrate with other systems in the future.
- it should be a supported solution with clear development prospects
The requirements of the customer to the site include the following items:
- Software is free or very inexpensive (say, up to $ 1,000)
- Minimum development time (let it be 1 week for the original version)
- Availability of documented API for the subsequent development of the system (required)
- The ability to use your own design for the site (required)
- The ability to authenticate both external users and company employees (required)
- Browser support for partners and providers - IE, FireFox, Safari, Opera (very desirable)
- Availability of specialists in the local market (very desirable)
- Simple user interface and integration with Office 2007 (very desirable)
It seems to me that the wishes of the customer are quite appropriate and do not look far-fetched.
Decision
Install Windows Sharepoint Services
Windows Sharepoint Services 3.0 can be installed according to the README.docx instructions, which are located in the
attached archive . After installing WSS, you need to create a default node. To do this, start the Sharepoint Administration Center (Sharepoint Administration Center) and perform two simple steps:
- Create a web application (Central Administration> Application Management> Create or extend a web application> Create a web application). As the account from which your web application will work, specify some service login from the domain or an account from the local machine.
- Create a site collection for this application with a default template (Central Administration> Application Management> Creating a site collection)
So, now you have a default site and it looks like this:

Setting up an application for processing applications
Create the necessary types, lists, create user groups, distribute the corresponding rights to these lists, and finally create a workflow in the Sharepoint Designer that will assign tasks when a new item appears in this list ... a clever user can read all the documentation . At the basic level, of course :) But, by the way, this scenario should be enough for our scenario.
I demonstrate this part in 30 minutes in my
screencast about using Sharepoint for a simple site for accepting applications from the public with integration with Office at minimal financial costs. My colleague Sergey Piminov
automates the process of arranging business trips for about the same time.
I give three main ideas in the form of screenshots.
This is how, by default, the application form for horn sales in FireFox looks like:

This is how the task creation workflow is constructed when a new application appears in the Sharepoint Designer:

This is what an employee created task looks like, provided that he has linked Outlook to the Sharepoint site with one click of the mouse:

It's pretty simple.
Actually, in this regard, the SharePoint platform is really very good - they recently held a
contest for the best intranet portal and five out of ten winners used Sharepoint - every second successful intranet project was implemented at Sharepoint. There is even a special chapter on this topic in the
review . Therefore, we will not dwell on this in detail.
User Authentication and Security
After we have created and configured our application on the site with user authentication by default, i.e. using Windows Authentication, we need to publish this web application on the Internet and enable user authentication via web forms for this zone. And if internal users are stored in Active Directory, then we will most likely want to store external users elsewhere.

Generally speaking, we have a
detailed description and downloadable package that will allow to implement this scenario and this, of course, is the recommended and most protected path. But in my presentations on TechDays, I use the option of storing users in a local database, which is specifically designed to securely store information about users and their passwords. This will be using the ASP.NET SQLMembershipProvider authentication provider.
In the archive you can find a step-by-step scenario in the comments of my presentation, and here I will describe the main steps in order not to overload the article with details.
First you need to create a database to store information about users using this command:
aspnet_regsql.exe -S. \ sqlexpress -A all -d fba –E
(-S server instance, –A authentication and personalization functionality that can be provided by this base, –d database name, –E — it does not matter, see for yourself if you are interested;))
After that, you need to create sections of the configuration file, which we will add to the web.config file so that the web application understands where our database lives and what functions our providers provide, in our case FBA_Member authentication and FBA_Role user groups provider:
<connectionStrings>
<add name = "FBA_CS" connectionString = "Data Source =. \ sqlexpress; Initial Catalog = fba; Integrated Security = True" />
</ connectionStrings>
<system.web>
<membership defaultProvider = "FBA_Member">
<providers>
<add
connectionStringName = "FBA_CS"
enablePasswordRetrieval = "false"
enablePasswordReset = "true"
requiresQuestionAndAnswer = "false"
applicationName = "RogaIKopyta"
requiresUniqueEmail = "false"
passwordFormat = "Hashed"
maxInvalidPasswordAttempts = "5"
minRequiredPasswordLength = "1"
minRequiredNonalphanumericCharacters = "0"
passwordAttemptWindow = "10"
passwordStrengthRegularExpression = ""
name = "FBA_Member"
type = "System.Web.Security.SqlMembershipProvider, System.Web, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" />
</ providers>
</ membership>
<roleManager enabled = "true" defaultProvider = "FBA_Role">
<providers>
<add
connectionStringName = "FBA_CS"
applicationName = "RogaIKopyta"
name = "FBA_Role"
type = "System.Web.Security.SqlRoleProvider, System.Web, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a" />
</ providers>
</ roleManager>
</system.web>
Actually, now we can extend our existing web application to the zone in the Internet:

As a matter of fact, Sharepoint creates in IIS another website linked to the hostheader “rogaikopyta.ru”, which will also be processed by the Sharepoint engine. And Sharepoint already understands that this will be the existing rogaikopyta node, only for it you can now specify a different authentication model:

Now we have 2 websites (intranet and Internet) and, accordingly, 2 web.config, into which we need to add sections formed earlier. These files live in the C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ [website ID] directories. Now both of our sites know about the users who will be stored not in Active Directory, but in the SQL table. But the fact that they know about them is still not enough for these users to be allowed onto the site - you also need to tell Sharepoint what rights these groups and users will have. By the way, we added FBA (Forms Based Authentication) providers to our intranet zone, just so that with our Windows account and admin rights go to the internal site and distribute the rights to the site to users from the Internet zone, about which this site is now also knows (although he most likely will not see these users in the future).

Well, now, we can absolutely safely go to the site from the same FireFox (only to show working menus in Sharepoint :)), using an account from FBA.

I am quite sure that even such a simplified version of authenticating users in mixed zones will be safer than most websites, where this mechanism was developed by web studios independently. And now, as you know, cybercrime blooms in full color.
Site appearance
As I said at the very beginning, there are quite a lot of Sharepoint websites abroad —
here are a hundred of the most interesting ones with screenshots. We don’t have enough of them so far - I’m collecting links to sites I’m aware of (if you know others, you can add)
Regarding the change in the appearance of the site at Sharepoint, we have a detailed and thorough
report by Tanya Smetanina . There she examines the branding methods for the corporate Microsoft Office Sharepoint Server product, which implements the prudent functionality of the content management system. I use simplified functionality of free Windows Sharepoint Services in my presentation.
In my past experience, the process of branding at Sharepoint, I must admit, is more laborious than using the same
Template Toolkit :) But for a B2B site to make a simple design will not be difficult. See for yourself - in general, the so-called MasterPage is responsible for the appearance, in which HTML defines the appearance and location of PlaceHolders, in which the Sharepoint engine will render its content - the menu, title, main area, and so on. All these placeholders in your MasterPage should be left, and if they will not be used, hide them using <asp: Panel visible = "false" runat = "server"> </ asp: Panel>. Thus, using the Sharepoint Designer to copy the minimal.txt text I attached to the
archive to the _catalogs / masterpage / default.master
file , the page will look like this:

Now, having checked the
documentation (by the way, already in Russian) for each placeholder you can draw your own design. In order not to draw horns and hooves myself, I asked the author of the site
Start In Garage to send me my masterpage version and he kindly provided it to me.
If you replace the contents of the masterpage with the text from the file startingarage.txt, using the same Sharepoint Designer, copy 2 files - sig_core.css and web.sitemap to the site root, and copy all the pictures into the images directory on the site, then you will get site appearance:

Well, in general, it becomes obvious that the designer on the layout of the designer can continue to bring this masterpage to an unrecognizable form, for example,
Motobloggers .
And if you go further, you can do it on a SharePoint
website like this or something :)

And, indeed, it is quite possible to do this, because Silverlight control can be easily taught to take information from web services that are available for data in Sharepoint without additional efforts from the developer. How the guys from EPAM do it for their
project of interactive knowledge management inside the company is described in
this detailed report , made not on PowerPoint, but on Silverlight. There you will find application codes. Be sure to look - very interesting :)
IT support and further development of the solution
The fact that our solution initially has a set of web services to change the content and settings of the site, and we can integrate our site with other systems in any way is a matter of course. Here is the
detailed documentation in Russian .
I admire something else ... On the Windows platform, any .NET application can be “steered” from PowerShell. For example, when I did authenticate users using SQLMembershipProvider, I really didn’t want to create users from a smart web interface — simply because the system administrators don’t like to press buttons on the web interfaces, especially if you need to create a hundred users. I thought about how to implement this functionality on PowerShell. The solution is quite simple - the authentication provider model in .NET is implemented in the System.Web assembly, and the settings for these providers, as we have seen, are taken from the corresponding sections of the .config file. PowerShell is a .NET application, so I created a powershell.exe.config file, copied XML into it with the connection string and the system.web section, loaded the System.Web assembly, and my PowerShell command line turned from an .NET perspective into ASP.NET a website in which I can create users and groups! In 5 minutes, this file was created:
[System.Reflection.Assembly] :: LoadWithPartialName ("System.Web");
function global: create-asprole ([String] $ name = $ (throw 'Parameter -name is missing!'))
{
[System.Web.Security.Roles] :: CreateRole ($ name)
write-host "Role was created"
}
function global: add-aspusertorole ([String] $ user = $ (throw 'Parameter -user is missing!'),
[String] $ group = $ (throw 'Parameter -group is missing!'))
{
[System.Web.Security.Roles] :: AddUserToRole ($ user, $ group)
write-host "User was added to role"
}
function global: create-aspuser ([String] $ user = $ (throw 'Parameter -user is missing!'),
[String] $ password = $ (throw 'Parameter -password is missing!'),
[String] $ email = $ (throw 'Parameter -email is missing!'))
{
$ result = [System.Web.Security.Membership] :: CreateUser ($ user, $ password, $ email)
if ($ result) {write-host "User was created"}
}
and I got the opportunity to write a script (well, go and drink beer, respectively), as a system administrator:
create-asprole admins
create-asprole users
create-aspuser user1 password1 email1
create-aspuser user2 password2 email2
create-aspuser user3 password3 email3
add-aspusertorole user1 users
...
The SharePoint object model is implemented on .NET and therefore we can work fine with it from PowerShell. You can learn more about working with Sharepoint from PowerShell in the report by Alexander Romanov -
Let's hit PowerShell on SharePoint :) My version of the settings for working with Sharepoint and the described scripts are in the archive.
PowerShell is really something! Even for web solutions under the Unix platform, there is not always a full-fledged command line interface. It is not strange, on the Windows platform, such complexity disappears.
Ready and semi-ready solutions that you can use
No report now passes without mentioning about the crisis and the situation is that IT departments froze the introduction of large projects, and web studios are looking for opportunities to capitalize on those customers for whom the sites have already been made. Here
40 ready-made templates for Windows Sharepoint Services can help.
IT departments can, on their own, with a little blood, automate some tasks, and also create a site for their department (no time is required) and show the management on this site how many tasks they face and how critical they are for business :)
Web studios can include these 40 templates in their portfolio and browse their customers with a proposal to “zanedorogo” solve one of the problems in the company. Those. If the company has Windows Server 2003/2008 with a mandatory set of client licenses, then without additional investments in software, WSS can solve these problems. Of course, these are not ready-made vertical solutions, the templates implement basic functionality that you can develop yourself, but this is often enough. 2 years ago, for one company, I proposed a
temporary version of the solution to the Technical Support Service at WSS, until they buy a complete system. As far as I know, WSS is still being used and in the near future something is unlikely to change :)
Needless to say, solutions on these templates can also be published on the Internet. The Infobox company posted a
description of these templates and demos with their use for their customers.
In my demonstration, in 5 minutes I create the website of the IT department of the company. In the same PowerShell, these commands are run here, which are provided in the instructions for installing templates:
stsadm -o addsolution -filename ApplicationTemplateCore.wsp
stsadm -o deploys solution -allowgacdeployment -immediate -name ApplicationTemplateCore.wsp
stsadm -o copyappbincontent
stsadm -o addsolution -filename ITTeamWorkspace.wsp
stsadm -o deploys--allowgacdeployment -immediate -name ITTeamWorkspace.wsp
then it remains for us to create a site according to the set pattern

and we get a site like this where you can manage IT projects, work out user requests, monitor the performance of the department with the help of custom indicators, etc.


How much money does it cost and what should a customer choose?
There are 2 groups of products in the SharePoint family. The first is WSS (Windows SharePoint Services 3.0) - this is a basic technology for increasing collaboration productivity (distributed as a
free component for Windows Server and Small Business Server), with which you can quickly deploy an intranet site for small teams and organizations or as a pilot project. The second group - SharePoint Server 2007 and SharePoint Server 2007 for Internet Sites - cost money because they provide the functionality demanded in the corporate environment - for example, content management, search in documents and information systems, data collection using forms, business analysis, etc. . Here, for example, Maxim Kozlenko demonstrates the use of Excel Services, a component of MOSS.
In order for everything described in this article to be properly licensed on an intranet, it is enough to have Windows Server 2003/2008 and if the database size does not exceed 4Gb, you can use free SQL Express - i.e. zero investment.
If we are considering an internet / extranet script, then any authenticated user must have a Windows Server license. If there are several dozen of these users, buy Windows Server CAL on them, they are inexpensive. If there may be many users and it is not clear how many CALs to buy - buy External Connector for Windows Server. You can also use Windows Web Server 2008 (which was available for free on the shares on the site
microsoftweb.ru ) for the Internet / Extranet script and not think about CAL for external users. On the Windows Web Server, it is not possible to install a standard SQL server under a license agreement, but you can install SQL Express with a 4Gb limit or use the existing SQL server infrastructure - i.e. you can save zero investment ...
A detailed comparison of the functional versions is on the
link .
Learn more about licensing WSS for the Internet is written
here .
Here, the main thing is not to start “saving on matches” :) It is possible to start from a minimum and scale the system to a serious scale using the right products. During that time (and, accordingly, the cost of the project) while you independently implement the MOSS functionality, you can deal with the Sharepoint Server and significantly increase your cost as a developer in the labor market - good Sharepoint specialists are an order of magnitude smaller than, for example, PHP developers and the demand for SharePoint is growing - this is a
fact even in times of crisis (for the UK, but for Russia the situation in the trend will not differ).

In the end, if you have an idea to create your own product or commercial service and you see it appropriate to use
the Sharepoint platform - just read the
description of the BizSpark program in my blog and send me a request -
sergey.polyakov@microsoft.com - I will provide all the necessary software for commercial use, including the powerful MOSS for Internet for 3 years for $ 100.
Summary
In conclusion, besides the fact that my decision fully meets the requirements of the customer, I want to add brief results from the point of view of the directors in the company.
Executive Director:
- The website is an integrated business tool with other systems.
- No problems with user training + site functionality is available through Office 2007
- Received ready-made functionality for monitoring and reporting business processes
Financial Director:
- Development and minimum terms
- Software cost varies
- The investments made are protected by a leading product position in the market and long-term development plans for the platform.
- There will be specialists in the region with knowledge of .NET who can further develop the solution.
IT director:
- Uses existing IT infrastructure and does not need to train system administrators.
- The application is easily scalable due to the features of the platform
- Integration and support of the solution with other systems is carried out using the documented API and PowerShell

Links in dogonku
Have questions and comments on the topic? Write to.