Difference between PnP Core SDK and PnP Framework - sharepoint

Today I read an article about the two PnP libraries "PnP Core SDK" and "PnP Framework".
PnP Core SDK seems to be a framework that is totally abstracting CSOM, Graph or REST Apis of SharePoint/Teams.
So I can just use the Pnp-Context and dont have to care anymore if Graph or CSOM is actually used in the background.
This makes sense to me.
But PnP Framework is also a new library and it provides still access to the actual CSOM context.
This confuses me, because I dont know how to behave now as a developer.
Should I use only the PnP Core SDK? And the PnP Framework only if I need the site provisioning engine?
Or can I use PnP Framework also for typical operations like "Creating sites", "Updating list items" etc.?
The article states the following differences between both libraries:
You might be wondering what the difference is between PnP Framework and PnP Core SDK. The PnP Core SDK is used by the PnP Framework and it’s been implemented with a mindset that is independent of CSOM of SharePoint. More and more new functionalities introduced in SPO are not necessarily available through CSOM; this was the impetus for Microsoft 365 PnP introducing a new SDK, which is under the cover of both PnP Framework and PnP PowerShell for some functionalities.
Yeah - but why do I still need Pnp Framework? This only explains what PnP SDK is...
Later he goes on:
After reading this content, you might ask yourself: “What should I use
and when?”
If you are a SharePoint developer, used to working with CSOM, or if
you have an already existing project built on top of PnP Sites Core
and CSOM, you should rely on PnP Framework and start building modern
solutions leveraging the rich set of extensions and utilities provided
by the new PnP Framework library.
If you are a .NET developer, willing to create a new modern solution
for SPO, start working with PnP Core SDK and enjoy consuming the
Microsoft Graph and the SPO REST APIs with a high-level abstraction
layer.
I am a SharePoint developer and also a .NET 5 developer. But this still does not answer my question.
When should I use PnP Framework? When the SDK?
For normal site, team, list, item operations etc. I could use the SDK and for the provisioning engine the Framework?
But is this correct?

Should I use only the PnP Core SDK? And the PnP Framework only if I need the site provisioning engine?
Or can I use PnP Framework also for typical operations like "Creating sites", "Updating list items" etc.?
You could probably just use PnP Core SDK, it depends, of course, on your needs BUT also for the missing parts you can still use PnP Core SDK since they have made it possible that for those parts you can just use the REST APIs through PnP Core.
I have been using PnP Core SDK in multiple integrations between our product and SharePoint. We have used it for e.g. creating sites, folders, folder access management groups/users, updating and creating list items etc.
As they mention here they are working on a transition which means PnP Core will be only SDK in the future and they are gathering all in it.
This library is the long term evolution of PnP Framework, we'll enable a phased transition from PnP Framework to PnP Core SDK without impacting PnP Framework users.
Unfortunately I don't have any information about the status of the "Provisioning Engine" but as they (again) mentioning here the transition will be done also for that.
As this transition will take quite some time and effort, we plan to gradually move things over from PnP Framework to the PnP Core SDK. Going forward PnP Framework features will move to the PnP Core SDK in a phased approach.
During those projects that I have been working with PnP Core SDK has really surprised me since it already provides tons of functionalities which makes it really powerful. Its a huge SDK and people who are working with it has done a great job (although the documentation needs a little more work, but its still better than many others on the market).
I hope this clarifies stuff a little for you.

Related

SharePoint CSOM in .NET Core Azure function running on Linux

Looking for advice, not necessarily any actual code. I'm a consultant writing some de-duplication functionality into an existing SharePoint Online \ Azure functions solution for a client.
The requirement: I need to write an Azure function that pulls PDF's from a SharePoint library, so I can hash check it before running it through OCR (ComputerVision API), followed by some text processing and a final similarity check.
The challenge: The client environment is locked down to the n-th degree (financial institution) and I only have access to the Azure resource group I'm currently working in. The existing function app, used by other solutions, runs on runtime 2.0 and Linux. I need to use SharePoint CSOM to access the PDF's for the above mentioned checks, but runtime 2.0 only supports .NET Core (not .NET framework), and .NET Core doesn't support SharePoint CSOM. There is a workaround to get CSOM working in .NET Core by fiddling with target build settings, but then it still doesn't run on Linux. Logic Apps doesn't give me the granularity to run all the checks and balances I need to, and SPFX isn't really a solution to do nightly automated runs without some garish compromises. VM's are out.
Any thoughts or suggestions to get this up and running without shooting myself or my client in the foot?
Here's two options:
Using the raw REST APIs with .Net Core running in Linux. You'll need to figure out how to generate the auth token. I know it can be done but don't have sample code for you at this time.
If Node is an option for you, you can use PnP JS in a Node Azure function. https://spblog.net/post/2017/06/07/Using-PnP-JS-Core-(sp-pnp-js)-in-Nodejs-environment
Do not even bother trying to get the CSOM to work. Also I don't even see how SPFX will work in this case.

Can we create a web application (web site) using WinJS?

I am trying out WinJS & would like to know if its possible to create a web application using WinJS.
Something that you would typically create using HTML5 + Bootstrap + JS framework (like AngularJS).
I need to create a Line of business that would be hosted on a server & can be accessed through any browser from any device.
I am thinking of considering WinJS because
- My primary audience would be on Microsoft devices & so in future if I need to create a Cordova wrapper I can easily create one.
- I would benefit from Microsoft support.
Absolutely. As of April 2014, WinJS became an open source, cross-platform framework, no longer exclusive to Windows. It's fully licensed for use on the web, and work has been done to make it compatible with other frameworks. You can find info now on try.buildwinjs.com, specifically http://try.buildwinjs.com/#get that tells you the different ways to acquire libraries for your needs. This includes doing a custom build of a subset of functionality, which takes you to https://github.com/winjs/winjs-modules where the source actually lives.
You can find some details on the Sept 2014 release of WinJS 3.0 at http://blogs.windows.com/buildingapps/2014/09/17/winjs-everywhere/.

MonoTouch - cross-platform API abstraction layer?

I understand that with MonoTouch and MonoDroid that you develop against the native UI layer, which is a good thing. However, I was wondering if there were any cross platform Mono API layers for features such as camera, location, storage, notifications etc... ?
PhoneGap supplies a JavaScript a abstraction layer that does just this. Is there a Mono equivalent?
There is an official monomobile api project from xamarin - that provides camera, contacts and gps abstractions, plus there are discussions (but not firm roadmaps) about extending this further. See http://blog.xamarin.com/2011/11/22/introducing-the-xamarin-mobile-api/ for an intro
Beyond that:
some api's exist cross platform from the start - eg isolated storage can be used on all platforms.
I've seen a few other GitHub projects started - eg chrisntr's mono extensions
I've written a few abstractions (e.g. File, gps, camera) in http://GitHub.com/slodge/mvvmcross
I recently came across MonoDroid.Dialog. I have yet to use it, but if it is as easy as MonoTouch.Dialog to do tables then I will be very happy with it.

Which framework to use for Mobile Agents?

After learning that JADE does not support Mobile Agent concept but supports only traditional Agent Framework, I was wondering which Framework or technology still uses Mobile Agent Concepts and I can build an application using it. IBM's Aglets could have been, but it is no longer maintained and revised (I think, since I didn't see very active participation in Aglet related forums)
JADE supports agent mobility - http://www.iro.umontreal.ca/~vaucher/Agents/Jade/Mobility.html
Take a look at Mobility-RPC, it supports code mobility in general, including mobile agents.

Is it possible to develop a Web Part without .NET

Is it possible to develop a Web Part without usage of .NET technologies? I'm looking for possibilities of integration of legacy (for example java) applications into SharePoint.
Any valid way for .Net CLR to call your code will do what you want. However with that said, it is likely to be very low level, very obscure and very difficult to do.
A more straightforward approach to reusing your Java or whatever code was if there was some sort of public cross language interface for you to exploit in your .Net skeleton. The obvious answer is a REST or SOAP wrapper around the Java code but it doesn't have to be that. It could be CORBA or JMS or all sorts of things.
Even if you want to integrate Java apps, the web Part will be coded in .NET.
There are a few ways to accomplish this, all of which involve a .NET web part exposing external data. All of your common integration methods apply including exposing the legacy application through web services or even directly accessing the database - you could use whatever your organization is accustomed to with other integrations.
Another possible option, depending on your SharePoint version is the Business Data Catalog (2007) or Business Connectivity Services (2010). These options, while can be a little bit of a pain to set up (though third party tools are available) do allow for some automatic integration of other applications into SharePoint.

Resources