0

Architectural Enhancements in SharePoint 2013

The evolution of SharePoint 2010 has been revolutionary, there were so many new features, capabilities, development changes and architectural enhancements to 2010 when compared with 2007. So with 2013 released we should not be expecting a completely new architecture as most of its architecture is inherited from 2010. Microsoft has always channeled its efforts in making SharePoint a self-service product, heavily encouraging on no-code solutions, using browser and office applications for business needs. So 2013 has some architectural enhancements to support the above and also making SharePoint a better product. This blog post with summarize major enhancements and the related posts would explain each in detail.

  •  Database improvements – Contributes to faster & efficient data retrieval
    As Microsoft keeps improving SQL Server version by version, adding more features/   functionality, SharePoint can leverage such enhancements and make it more even powerful in terms of data storage, search and retrieval.
    The following can be treated as highlights of the database enhancements
    1. Shredded Storage
    As the name indicates files are shredded and stored in the content database. Once the user requests a file all the bits and pieces are combined and shown as a single file. So when a file has multiple versions, only the changes on that file are saved to the content database instead of the entire file being saved repeatedly. So no more storing of the entire file, version after version, as it has always been in SharePoint 2007/2010. This would be faster, reduces the amount of space occupied in the content database and also saves on network bandwidth.
    2. The database is Microsoft SQL Azure compliant
    If you wish to host SharePoint 2013 on the cloud the SQL Server database is all set for this. This is quite important to those organization which plan to host their sites on cloud as the new features include Updates to throttling behavior, New event table for trouble shooting, Recursive triggers are supported etc.
    3. Cleaned up databases – Both config and content databases
    Redundant and unused tables are removed and this would clearly enhance the database performance when queried.
    4. Better design
    The SQL Server has an improved schema to support ‘Shredded Storage’ which reduces the input and output operations while using document libraries.
  • Request Management
    SharePoint 2013 ships with request management which is designed for ‘Throttling & Routing’, ‘Prioritization’ and ‘Load Balancing’. Please DO NOT consider this as a replacement of ‘Load Balancer’ or ‘Traffic Mangers’ and as a matter of fact your organization MAY NOT require this at all. If you chose to use this make sure you understand the capabilities and if that’s the right choice for the problem.  ‘Request Management’ is just a service instance that run on WFEs (Web Front End server which runs SharePoint Foundation Web Application Service (SPFWA)). This service understands SharePoint and can route requests at the ‘Web Application’ level and this is the key advantage of Request Management. 
  • Workflow enhancements
     SharePoint Server 2013 brings a major advancement to workflow: enterprise features such as fully declarative authoring, REST and Service Bus messaging, elastic scalability, and managed service reliability.SharePoint Server 2013 can use a new workflow service built on the Windows Workflow Foundation components of the .NET Framework 4.5. This new service is called Workflow Manager and it is designed to play a central role in the enterprise. More on this can be found at What’s new in workflow in SharePoint Server 2013>>
  • Cache Service improvements
    The cache service improvements plays an important factor in building high-performance and scalable applications. In SharePoint 2010 each server has its own cache which is used only if the request comes to that server and so when a request come to a different server the whole information has to be recreated. But SharePoint 2013 introduces Distributed Cache Service (DCS) which is based on the Windows Server AppFabric 1.1. AppFabric Caching stores serialized managed objects in a cache cluster which can be used by all the server to serve the request. This pooled memory is presented to cache clients as a single source of caching memory.
  • Minimal Download Strategy
    In SharePoint 2010, when a user requests a page or makes changes to it, the whole page is downloaded. But in SharePoint 2013 only changed portions of the page are downloaded using Ajax Delta control which is added to the head section of the master page.
  • The Theme Engine
    Themes in SharePoint 2013 are HTML5 compatible and the format is not based on Office Open XML format as in SharePoint 2010. So in SharePoint 2010 you can create new themes using office applications which you can no longer do it in 2013,but you would use browser to preview and publish new themes.
  • Mobile Device support in SharePoint 2013
    SharePoint 2013 content is created and delivered based of location aware technique which detects the user-agent and servers the content. So lists are location aware and optimized for mobile delivery. So there are multiple views for enhanced mobile experiences such as Contemporary view (for HTML5 supported browsers), Classic View (for backward compatibility for SharePoint 2010), Full Screen view (for full desktop view on mobile device).
  • Deprecated browser support and more supported browser
    Internet explorer 6 and 7 are still supported for content rendering but cannot be used for content authoring, so WCM authors can use IE 8 & above for full support. Other browsers like Chrome, Mozilla FireFox, Apple Safari offer limited support.
  • New, deprecated  and modified/improved service applications
    This sections provides very brief explanation of the service applications, detailed description is out of scope of this post, but will be covered in later with in SharePoint 2013 blogs
    1. )New service applications
    The following service applications are added to SharePoint 2013
    – Machine Translation
    – Work Management
    – App Management.
    2.) Modified/improved Service Applications
    The following applications are improved in 2013
    – SSA (Search Service Application)
    – MMS (Managed Meta Data Service Application),
    – BCS (Business Connectivity Services),
    – User Profile Service application
    – Microsoft SharePoint Foundation Subscription Settings Service
    – Access Service Application  which is s
    plit into 2 services.
    a.) ‘Access Services 2010
    b.) ‘Access Services‘ for 2013 only.
     3.) Deprecated Service Applications
    The following service application are not totally deprecated but served as a different way such a isolating as a separate product or service on server etc.
    – ‘Office Web Apps’ is no longer a service applications and is packaged as a separate service product.
    – ‘Web Analytics’ is no longer a service application but is part and parcel of SharePoint search engine.
    – ‘Power Point Automation Service’ is no longer a service applications but can be started using ‘Service On Server’ page in SharePoint.
  • Web Application and Site Collection improvements
    Microsoft now recommends using Claims based authentication by default and also use Hosted Named Site Collections. With HNSC each site collections can be accessed using its own top-level URL even though they originate from the same content database. 
  • SharePoint 2013 development changes
    1. ) SharePoint Apps – Any hosting services to run and deploy your app
    This is something new to SharePoint and also its developer community. The concept is old and is similar to how we have apps hosted in Android market, Microsoft or Apple’s app store. They are all apps & everything in there is an app. This is direction the ‘Apps for SharePoint’ is going even faster. Apps are easier to integrate with cloud services,  Office suite and has even better platform for distribution.  In spite of all this complex technical evolution of apps, as always Microsoft provided easier options to create apps as web applications using HTML, JavaScript or using  server side programming languages like C#, VB.NET or PHP. Now the developer
    2.) Extended Client-Object Model
    This would enable custom code can be created by using a similar apps model
    3.) Alternative choice to  Sandbox solution
    Microsoft still continues to support farm solutions, but there are not major enhancements to Sandbox solutions and recommends using App instead of Sandbox solution. Now the choice would be either Farm solution or App instead of Farm solution or a Sandbox solution.Details explanation to each of the enhancements would be covered in other articles under SharePoint 2013 category.

References:

  • TechNet Microsoft
  • Book – Exploring Microsoft SharePoint 2013 by Penelope Coventry
    – This is one of the best technical books I have ever read, the author has outstanding knowledge in the subject. I totally recommend reading this book. I would give total credit, even this blog post for the author
0

Windows Command Prompt vs Windows PowerShell

With PowerShell gaining more popularity and more adoption among developers/administrators, there is also increasing confusion between Command Prompt and PowerShell.

I will try my best to show case the differences between these two based on my experience.

Please read my other blogs on PowerShell to get some basic understanding of what it is and how it can change your life as  an IT pro.

Lets gets started….

What is a shell?

Shell is a program that takes commands from the keyboard or mouse and passes on to operating system to perform requested actions. This could be as simple as opening a text file, navigating through your C or D drive, opening your internet explorer etc.

For instance look at the following examples and see why they qualify as Shell.

1. Windows Explorer ( is a shell ):  It is one of the most commonly used shell with a GUI (Graphical User Interface).
This qualifies to be a Shell because, all it does is it takes input for your keyboard or mouse and helps you navigate through your files and folders.

2. Command prompt ( is a shell ):
 DOES NOT have a GUI works only with predefined commands like dir, mkdir, taskkill etc. which takes only text as input.

3. Windows PowerShell (is a shell)DOES NOT have a GUI works with predefined command-lets like Get-Process, Get-Help etc which takes objects as input and not just text.

Difference 1: Commands (PowerShell can execute all the commands that Command Prompt and beyond.)

Following images shows how ‘dir’ commands works on both Command Prompt and PowerShell. Do you see any difference? Not much, correct?

Powershell and Command Prompt Difference

Powershell and Command executing ‘Dir’ Command

Please see below image executing a command-let ‘Get-ChildItem’ to list the same files with in the same Images folder. If you observe the previous example, ‘PowerShell’ was running ‘Dir’ command but behind the scenes it is executing ‘Get-ChildItem’ command-let. PowerShell ships with Command-lets only, some these command-lets execute on behalf of the DOS commands.

PowerShell Showing Get-ChildItem

PowerShell executing Get-ChildItem

 

The following table contains a selection of the cmdlets that ship with PowerShell, noting similar commands in other well-known command-line interpreters. Many of these similar commands come out-of-the-box defined as aliases within PowerShell, making it easy for people familiar with other common shells to start working.[1]

Comparision of PoweShell cmdlets with similar commands

Comparision of PoweShell cmdlets with similar commands


If you would like to know the total count of all  the available command-lets available try to run the following command – @(Get-Command).Count.
The count varies from version to version of the Powershell, the following is for version 3.

PowerShell Showing Command Count

PowerShell Showing Command Count

Check your version by running $PSVersionTable.PSVersion command.

Difference 2: Generation Gap (Automation and Security)

Command prompt was born in early 1980s,  it was doing well during its infancy and childhood , but when it reached its adult hood around 2005, it was facing some harsh challenges: Automation and Security.

Automation: 

It is very hard to find instances where you do not require to automate. All the things that you do on a daily basis can be automated such as creating an IIS site, clean up logs, back up databases and the list goes on…

Let see the following scenario where automation helps tremendously.

Imagine that your website is hosting ‘The Super Bowl’ or ‘The American Idol’ finale, can you fathom the amount of traffic you can expect for these events? Also think about the very next day or as a matter of fact, the very next hour once these events are done? There is very high probability or almost guaranteed that you will drop to 5% of your traffic that you had while these events are streaming live.

Do you believe it makes sense to purchase hundreds of servers just for a day or few hours and not use them for the rest of the year? How about any other events that can draw huge audiences but not as much as Super Bowl? You will be under utilizing your hardware then.

So ideally you need to scale-out or scale-down when ever appropriate. This scenario can be applied even for a day, for instance, if your’s is a stock brokerage firm and is very typical that you might have heavy traffic from 9:00 to 4:00 pm only, so does it mean that you can shut down few of your servers after 4:00 pm? Absolutely!!

It would be close to  impossible to achieve something at this scale and time with out automation. Command prompt cannot achieve this with the limited commands it has and as a matter of fact it wasn’t designed or built for these use cases. One the flip side, Powershell is designed and well baked for automation.

Security:

Security is a broad topic and I am not going to deep dive, but this section will help you get some sense of what kind of security challenges that PowerShell solves.

Bad guys running .bat or .ps1 files:

For example, if you are running a .bat file (batch file: series of commands) it is all or nothing proposition, for instance, if a bad guy somehow gets access to your server, he can execute all the batch files he wished for.

With PowerShell you can set execution policy to run only digitally signed scripts, to go even further, you can even restrict the server not to run the PowerShell at all.

Impersonation or running in a different security context:

It is very easy to impersonate user with PowerShell it has built in cmd-lets to support it. It is possible with CMD prompt as well but not very straight forward.

Remote Command Execution:

Typically if you have to run batch files, you need to have these running on the server. With PowerShell it is designed to execute command remotely with out even copying the PowerShell script to the server that it is supposed to run. How this works? PowerShell is built on .NET and uses cmd-lets to accomplish tasks. As long as the server has the cmd-lets on the server, you should be able to run any command from any where. You can accomplish the same with Command Prompt, of-course not as elegant solution as with PowerShell.

Restricted permissions on the server itself:

When using Command prompt your options are limited. Even common administrative tasks might be tough or not even feasible to accomplish, for instance, modifying Registry and other administrative functions. With PowerShell ships with cmd-lets that make these administrative tasks absolutely pain free.

Difference 3: Adoption and Support

PowerShell is part of the CEC (Common Engineering Criteria) since 2009, which means that all the products shipped since then have to support PowerShell. All Microsoft products must ship with cmd-lets that help with administrative and maintenance tasks. Microsoft Exchange team is one of the early adopters and the product can be completely administered via PowerShell.

All such products from Microsoft stack, ship with these cmd-lets going forward. It is very unlikely that the will be any changes or improvements with command prompt to support these products. Even all the third party tools that are build on Mircosoft tools and software will provide support for PowerShell and not Command Prompt.

References:

[1] https://en.wikipedia.org/wiki/Windows_PowerShell

Disclaimer:

All data and information provided on this blog is for informational purposes only makes no representations as to accuracy, completeness, recentness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.