Adding SharePoint screen to legacy c# application - c#

We have an Enterprise application written in C# that we well to customers. The server runs in our data center and the customers connect via a windows application also written in C#. Pretty standard.
Management would like a dashboard added to our application. I was told to look into using sharepoint to somehow add a sharepoint dashboard to the main screen of our client application (winforms).
Is this possible? The client application would have to somehow show a web page from the sharepoint server which I guess is no problem using a html componenent. But I'm more worried about getting sharepoint to work with our existing data (sql server 2008).
I suggested just writing the dashboard ourselves and avoiding sharepoint. But management would like to add more 'Business Intelligence' to our application. I know that is the way of the future but I'm worried about the complexity of integration with sharepoint.

There are various options for integrating SharePoint into a windows forms application. The simplest is embedding a web browser control and point it to the page with the dashboard set up.
Alternatively you could use the SharePoint client object model (2)(make calls to the SharePoint server) and retrieve data (and potentially pages) from SharePoint to put into your dashboard.
I would recommend to management that we can display SharePoint through our current application, and we can demonstrate with a simple dashboard part (eg chart control) to demonstrate how we can make the dashboard integrate more naturally over time piece by piece. This would minimise risk by displaying from SharePoint, while being able to show the potential advantages of using the SharePoint data and creating a customised windows forms dashboard.

SharePoint does a good job of going either way with information via BCS, assuming you would want to show LOB data in a SharePoint deployment.
However, since you want to go the other way, the Client Object Model works well with this. Seeing as how it is a .NET application, I can site specific times where we have used the built in REST services to get information from lists in our enterprise SharePoint deployments.
Security will need to be addressed as well, so don't forget about that. If you have AD groups already set up for your enterprise application, you can most likely reuse some of those in SharePoint. If you don't, you will have to now manage how data will be secured. You may also end up getting prompted for a log in to SP which is never a good user experience.
Good luck!

Related

How to go about it: sync/export data for Accounts from Microsoft Dynamics 365 CRM and show it in a 3rd party web app? Using WS and ASP.NET MVC/C#

I'm trying to get data from Microsoft Dynamics 365 CRM, specifically the Accounts and their data to show it in my own web app that I will build using ASP.NET MVC and C#.
How would I go about doing this so that my web app will instantly be updated when the data in CRM changes? I find it difficult enough navigating through the Dynamics platform already, thanks Microsoft.
The app would work like this:
When run, the app would get the initial data, and establish a real-time connection with WS to the CRM to get further new data/changes.
the app will display this data in a table.
When a change is detected, the web app should update without refreshing the page.
individual table rows will be colored according to number of contacts and if they lack any contact data.
I've started researching webhooks with MS CRM, but it seems Visual Basic is crapping out on me a lot and I cant get the tools to work properly . I think that I have to establish a connection somehow with WebSocket to the CRM, I just don't know which technologies to use and what plugins there are, seeing I'm new to ASP.NET MVC and C#.
Anyway, I just don't know where to start. Could someone send me in the right direction? I would greatly appreciate it!
You can access the data inside a Dynamics 365 / Power Apps instance (also known as Dynamics CRM or Dynamics 365 CE) using the APIs provided by the system.
You can leverage these APIs using the SDK provided by Microsoft (this one https://www.nuget.org/packages/Microsoft.CrmSdk.XrmTooling.CoreAssembly/ or this one in preview for .NET Core https://www.nuget.org/packages/Microsoft.PowerPlatform.Dataverse.Client/) or by calling the API directly inside the language of your choice.
Usually you need to deal with CRUD events, and the APIs can do that. In your question you mention "the web app should update without refreshing the page" so you will need to take a look at webhooks (here a doc page https://learn.microsoft.com/en-us/dynamics365/customerengagement/on-premises/developer/use-webhooks) handle them in your application and see if they fit your requirements.

Internet access for SSRS reports

I am trying to get my company to start using SSRS for reporting but I realized something today that I have never tried to use SSRS outside the local LAN before. Our application is external facing on the internet and if I implemented SSRS, I would need to be able to access the Report Manager via an external URL.
It is setup and configured currently, but I can only use it locally on the company domain. I tried searching the web for how to configure this and what best practice is but I didn't really get anywhere.
I imagine it would not be good to set it up on the same server that the database is hosted on? Has anyone done this before? I have setup one application that was inherently not meant to be external before to be external and it was a pain in the ass. :D Course, that application had to be proxied through Tomcat to IIS.
We have a developed an intranet web application build on ASP.Net MVC 4 and SSRS 2012, which is live for past 2 years.
Now we planning to host the same in internet. We are having a bottle neck now for SSRS. As SSRS web access is not ready to use externally (internet).
I also checked for SSRS custom authentication which again not much recommended by Microsoft!
We are looking for something like a proxy (web application) to the SSRS web access, which can be hosted as a web application in IIS along with other services.
Is there any ready to use references / tools available.
Update : For better understanding
We are rendering the ssrs reports inside the Asp.Net mvc razor views using iframe.
And also we are using ssrs for export to various formats.
Use the ReportViewer control to hide the SSRS from the internet.
The connection to the SSRS is from your web servers, not from the internet

Office App design and architecture

I have a VSTO application designed like a standard windows app that has Data Access Layer, Business Access Layer,Controller and Different views for showing different excel sheets. Its a very big applications.
Now I am trying to convert the VSTO application to Office Apps. I want to use the Business and Data Access layer as lot of work has been done in Business Layer. Data Access Layer is basiacally a EF layer. Buiness Layer
access the Data layer using the repository pattern. I need the some guidance on a best way to appraoch for the design for office apps where I can reuse most of the code.
Will MVC be a good fit in this scenario?
By using SharePoint Provider Hosted App you are able to use a Web Application from a SharePoint site in Office 365, also the Web Application can have access to the site context, you just need to convert your Windows Application into a Web Application and publish it using a Windows Server or if you prefer you can use Azure. I have tested this approach as a SharePoint App but I'm not sure if this or a similar approach can work in Word, Excel and PowerPoint, however you should invest some time researching this, worth the effort.
Here is some good resources that will help you to get involved in the Provider Hosted App development:
http://blogs.technet.com/b/meamcs/archive/2013/02/24/sharepoint-provider-hosted-app-walkthrough-part-1-preparation.aspx
https://msdn.microsoft.com/en-us/library/office/fp142381.aspx
https://auth0.com/docs/integrations/sharepoint-apps
Using Azure:
http://www.sharepointnutsandbolts.com/2013/07/deploying-sp2013-provider-hosted.html
https://msdn.microsoft.com/en-us/library/office/dn343301(v=office.15).aspx
Office Apps and VSTO add-ins are entirely different things. You will not be able to re-use the code due to the fact that Office Apps are written in JS and HTML(+CSS). See Build apps for Office for more information.

Integrate an E-Mail server into ASP.NET

I've a general design question:
I have a mailserver, written in C#.
Then I have a web forum software, written in for ASP.NET in C#.
Now I'd like to integrate the mailserver into the ASP.NET forum application.
For example, I'd like to make it possible that one can create a mailinglist from the forum, and give users the oportunity to add oneselfs to the mailinglist members in the forum, and then add the new list-members to the respective mailinglist on the server.
Since the server is a separate console/winforms/service application, I first thought I'd best use .NET remoting for this.
But my second thought was, that some users might host their forum on a host where
(a) they don't have a virtual machine where they can do what they want
(b) the admin of the host might not want to install an additional mailserver or charge extra for this
(c) the user might have a service plan that only permits to add a web-application, not external programs (very likely)
Now, I wanted to ask:
Is it possible to fully integrate a mailserver into an ASP.NET application somehow ?
(I have the full source of the server + ASP.NET application)
Well, it probably won't be a page or a ashx handler, but something like a http module ?
Or what's the general way to integrate TCP/IP applications into asp.net ?
(Of course I'm assuming the respecive ports are available/forwarded - and I'll make it possible to also run it with the e-mail server as external application)
In the ideal case I'd do the following:
Set it up on your own server(s) and expose a WCF/web service that your web app will/can interact with.
If you can't or don't want to afford to keep it running on your own, you could then charge a subscription fee for it.
It's probably not a very great idea, but you can start a thread in Global.asax and do background processing while the application pool is running/the web app is not reloaded. So you could start your server there, but you have no control over the lifetime of it
Adding to chris166's comment... you also wouldn't get control over when the application is started. [Since the application won't be loaded until a page is requested...] Its probably a better idea to setup some sort of integration between the web app and the console/service app.
I'd probably tend towards setting up a near-realtime integration where the mailserver polls the forum app for requested changes.

View need to go Winform to Webform, what is your advices?

Our application is well structured (well we did our best!) and we have split the Model from the View, Now, we need to let some information to our client with a web access. We would like to build something small with IIS and some webform.
Here some information you might think are useful:
Our controller have Thread of database queries
Our database is PostGresql
All is build with C#2.0
We used a lot of databinding between our View and Controller in Winform.
Winform will stay for internal purpose, only a small part will be available on the Internet.
What are your suggestions for this kind of move?
Update
We will host the web in our company server so the database will stay inside the business. No need to duplicate data or any synchronization.
I think the "synchronizing" Michael is talking about is the data in the database and the view presented by the Winform app.
We had a similar problem, and the solution we came up with is to create a Web service that exposes the data via XML and use the service from both the web app and Winform app. Every time you update data send it to the web service, and every time you perform a query get the latest data from the service. Do not consider caching data on the Winform app unless you have profile data showing it is a bottleneck, or you want to run unconnected from the network.
This is perfectly possible in .Net 2, you do not need 3.0 or WCF.
The biggest challenge is going to be synchronizing your database between the local Winforms application and the hosted Webforms application. Once you do that, creating the web app is easy.
If your web application is read only, then you can set up replication. Find a tool that you like. Three that I found through a quick search are:
Slony-I
Mamoth Replicator
Bucardo
If your web application is not read only, then the problem is more difficult. You might want to consider upgrading to .NET 3.0 or 3.5 so you can use WCF. If there is a significant overlap in functionality, you might want to move your data to the web exclusively and expose it through WCF services.

Categories