📜 ⬆️ ⬇️

SharePoint is a great platform for websites. Is not it so?

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.
')
short-horns-and-hooves
The script that you want to work:


  1. suppliers place in the form on the site offers to sell horns
  2. partner sellers place in another application form for finished products for their stores
  3. employees of the company “Horns and hoofs” work out the applications, interact with the production department
  4. 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

The requirements of the customer to the site include the following items:

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:
  1. 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.
  2. 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:

Picture1

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:

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

Picture3_
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:

Picture4
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.

Picture3
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:

Picture5
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:

Picture6
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).

Picture7
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.

Picture8
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:

Picture9
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:

Picture10
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 :)

Picture14
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

Picture11
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.

Picture12
Picture13

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).

Picture15
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:

Financial Director:

IT director:

horns-and-hooves

Links in dogonku



Have questions and comments on the topic? Write to.

Source: https://habr.com/ru/post/51781/


All Articles