Should my connected web parts support IWebPartField, IWebPartRow and IWebPartTable? - sharepoint

I've been writing some simple webparts, and they communicate via a custom interface type. That's working fine.
I've got one ConnectionProvider, with a variety of ConnectionConsumers.
I see that the OOTB SharePoint webparts provide many standard connections, apparently through IWebPartField and IWebPartRow (IWebPartTable seems less supported).
I've tried to add a IWebPartRow interface to a provider, and found that it's not actually useful (apparently), unless it's sharing data that the OOTB components use, such as images, urls and users. Well, that's the impression I got, anyway... I've only done a quick experiment, and found it quite difficult to implement and test.
Is there any point in spending time trying to add support for the standard webpart interfaces?

Web part connections are a bit of a nightmare especially as to make them useful you will end up implementing both the old style 2003 interface and the new style 2007 interface because (for just one example) the OOTB list web parts in 2007 use the old style interface....
Is there any point in spending time
trying to add support for the standard
webpart interfaces?.
Yes if it makes sense to be able to connect OTTB and 3rd party web parts to your own web parts.
Also look at the implementing Filter interfaces - they are normally of more use than IWebPartRow etc.

Related

Embeddable Web UI Designer

Is there are web framework that allows creating of custom Web UI designers that can be embedded into a webpage/webapp?
What I am looking for is to create a web UI that allows users to edit the UI in a drag and drop style editor. It should be possible to select some widgets (like these: http://scaffy.railsware.com/futurico/#pagination) and to select a data source (will be provided by back-end, nodejs).
Background: I am not a web designer and have no previous web experience. I just want to know if it possible to create what I am looking for and how much effort it would be. My background is in embedded Linux development and I would like to create an easy way for people to create machines with single board computers. The embedded stuff is pretty much complete and I am exploring ways to create nice and user editable user interfaces.
I think what you want is possible.
However... as far I know nothing exists which will do exactly what you require.
There are thousands of UI widgets on the Web to choose from but you would need a custom built backend cms developed especially for your needs
There plenty of Web agencies who could provide a bespoke solution. They could also assist with updates and adding new widgets.
So it can be done (and may encounter some browser incompatability issues), but you'll just have to be prepared to spend money.

How do I create transferable dll's for a specific website functionality?

VS2013 update 5, MVC5 using Areas
I have a stand-alone function programmed for a website. The functionality is a specific user interface to collect survey responses in a particular way. It has several controllers, a model and a group of views. The functionality is completely contained in an Area of the project, except for the Shared _Layout file that provides the main menu for consistency.
'Is it possible for me to' / 'how do I' compile this Area into a single or set of .dll file(s) that I could then add conveniently to other websites? I'm assuming creating something for transfer/download is very standard functionality. For example, I used Elmah.MVC for this site. What I want to do is pretty much create a package that can be downloaded in a similar way to how we integrate Elmah.MVC into a site. (Be certain I'm not talking about creating error logging software, I'm only using Elmah.MVC as an example of software that is easily integrated into other website applications.)
I've never compiled any website functionality into a .dll(s) for use elsewhere and would appreciate either some specific guidance, or perhaps what would be easier is to provide a link with a good step by step tutorial or explanation for how to do this. Most of what I've found on the web describes bits and pieces of doing this, but it's not enough for me to feel confident with it.
It seems to me there are a lot of 'moving parts' to taking a particular piece of an MVC application and turning it into something that is easily added to other projects.
A particular issue I don't quite grasp is the difference in downloaded packages between getting code and getting just the .dll(s). For instance, when I download an MVC5 site, I get controllers, models and views, but when I download Elmah I get a .dll and no code files. Also, I do understand the concept of transforms, but I'm just struggling right now with even getting from my programmed application into a 'package' regardless of the transforms that make it easy to integrate into another website.
These are just some of my questions I have about how to perform this particular process in developing deliverable and/or shareable software.
What you are looking to do is create a portable MVC Area project. A Portable Area is a set of reusable multi page functionality can be dropped into an application to provide rich functionality without having to custom build functionality that is literally the same in every application. An MVC Portable Area is really just a dll that contains the views, controllers, scripts, etc… needed to use in a website that is either a Web Forms website or an MVC website. A developer can use them for a reusable widget or a complete engine. I have actually used them for both. Here is a link with some basic info to get started. http://elegantcode.com/2012/04/06/mvc-portable-areas/

What is the accepted portlet framework for .Net?

What is the accepted "portlet" framework for .Net these days? By this, I mean the whole "add little widgets to a page and move them around" type of thing.
I know that Web Parts were big at one time, but is this architecture still the "accepted" method in the .Net world? Is this still what Sharepoint uses? (And should that matter?)
I need to use portlet-type things for a client project, and I don't want to re-invent the wheel. I'd like to use the tool that have the most momentum and community support behind it?
Yes, SharePoint still uses web parts. That being said, there are many ways of creating SharePoint web parts.
You can't really go wrong with ASP.NET User Controls. User Controls give you a lot of freedom, are still very "accepted" and supported (and that won't stop anytime soon). What's more, you will be able to re-use the control everywhere (SharePoint or not) with little refactoring which is a big plus in my book.
You can read this article by Scott Gu for more details : http://weblogs.asp.net/scottgu/archive/2006/09/02/Writing-Custom-Web-Parts-for-SharePoint-2007.aspx

What are the pros and cons of developing a SharePoint component versus a standalone app?

A client wants us to develop a Picture Library system for them. The requirements are pretty typical - need to add pictures, tag them with metadata, store different sized versions and so on.
The client is keen on it being developed as a component which plugs into their existing SharePoint system. However, my feeling is that we would be better served building a standalone app - that way we don't have to shoehorn it into a SharePoint page and muck about integrating with SharePoint's APIs.
I am trying to look at this objectively and would welcome any arguments either way that people have.
Using an existing framework like Sharepoint imposes a lot of constraints on the design which makes the software architecture more uniform.
It does require some work on the part of the developer, because the developer does have to understand the API architecture and API's, etc.
However, developing a standalone application is the way that business's software architecture becomes a mix of 200 applications, using 20 different languages/architectures/platforms, half of which were developed by people no longer there - in short, a mess.
Sharepoint is documented, and will be supported probably long after you leave the company. Can you guarantee support for the application that you develop for as long as Microsoft will support Sharepoint?
You should do a cost/benefit analysis of integrating with SharePoint. You have listed some cons for integrating with SharePoint. Here are some pros.
Widely adopted platform.
Existing functionality to store/retreive/update images to data store.
Existing functionality to tag images.
Existing functionality to group several images together and treat as one virtual document (if using SharePoint 2010).
Keep in mind that you can integrate any custom ASP.NET page/application in Sharepoint so you can approach development like a standalone app. Your client wishes might include synchronization with Sharepoint's own picture library functionality and in that case you'll have to work with it's API.
It seems with SharePoint you are already done because it can more or less do what you describe already. What requirements do you have that cannot be met by OOB SharePoint?
I've used picture libraries for something similar before. While they have their quirks you do get a lot 'for free' like a UI, bulk uploading, metadata and 2 alternate sizes rendered.. My biggest gripe is they don't support the datagrid view so I cannot edit list metadata en masse like you can with other list types.

Using Windows Live Writer as a web site content editor

What are your thoughts on using Windows Live Writer communicating with your website as the content editing system?
Windows Live Writer supports multiple category blogs (i.e. can be news, articles, and blogs), multiple category pages, tagging, XHTML WYSIWYG editing, image and file uploading via services or ftp, and the client has a "Insert HTML" plug-in library with a lot of already developed plug-ins for popular sites.
The trickiest part is implementing all of the XmlRpc methods in your services, but some digging with Reflector has exposed them as being pretty simple to implement the features.
I've considered it, but it's kind of like putting a triangle into a round hole. It will fit, but not quite right. Since the primary focus is around blogging, the page editing would be counter intuitive if you presented to someone as a page editor.
Well in the case where a web site's normal update pattern is to post new "news" a.k.a. blog posts, the page editing then becomes secondary to update the static content.
I was thinking the exact same thing. Using Windows Live Writer or MS Word 2007 (it supports Atom Publishing as well) to edit web materials on a site would be awesome (in theory), right?
I tried looking into creating an AtomPub Server, (using Google Data API, Apache Abdera, or Project ROME), to create a simple atom publication server backend on Java Google App Engine. It would save entities and images into the GAE datastore. The saved data could be shown via a simple front end on the site. All editing would be done in MS Word.
But creating a custom Atom pub server turned out overwhelmingly hard for me. I'll throw in the towel for now, at least for the AtomPub protocol. Something dead-simple like a CRUD entity interface might still be possible for Windows Live Writer, as it supports simpler protocols.
As far as I know, it hasn't been done for GAE. Umbraco ASP.net CMS supports it though.

Resources