I have a client-server application written in c#. I am hoping someone can give some direction on where to look in order to set it up where a user could connect to the server from their workstation, most likely through http but that's not a requirement, and download the client. The mechanism would need the following features:
Check for updates on client startup and automatically apply them.
Allow multiple clients (connected to different servers) to download on the same machine
Client can be downloaded by a non-local admin
Possibly install any prerequisites needed on the workstation
I currently use ClickOnce but it isn't quite working out. Currently the server sits in IIS and uses WCF services.
Related
I have an application that can be downloaded from our website and runs on user PC.
This application provides connection between our hardware and our web application. It uses SignalR for communication.
Basically, I run SignalR server under WinForms application and have javascript client that tries to access it through http://localhost:8084/signalR.
Everything works fine when I use HTTP version of the web application, but fails, when I use HTTPS for my web application:
Most of the browsers don't allow unsecured connections from a secure page.
So, my question is how can I have self-signed certificate included in my software which installs certificate on user pc during installation and how can I make it work in the way that browsers not complaining about unsecured connection?
If you run SignalR server on user PC each user must obtain the certificate for SignalR connection it launches. Self-signed certificate would be reasonable decision for an Intranet or development. It isn't safe enough for the internet. Another possible problem is retrieving name of the machine where SignalR is running. Certificate attaches to certain local machine(I could be wrong at this) and for connecting to client's application SignalR server you need to know the name of machine he uses. Migrating SignalR server from client to web app server will solve mentioned troubles.
I have to create a Lync 2010 bot. The initial idea that I pitched for the development purposes was to create the application on my own laptop and add the application as a trusted application endpoint to the production lync server. In that way I can develop and test the bot on my machine.
But, this idea was not highly encouraged by Microsoft themselves and they recommended to create a development lab environment to develop the application. I have done my fair share of research and have come to conclusion of adding 2 VMs -
1) 1st VM will serve as the AD server. My question is, what all things/roles should be added to this server like DHCP, DNS, IIS etc.?
2) 2nd will be Lync Server. Here I will create the connection with the AD server. Again, how will the connection be done? What extra roles should this server fulfill?
3) My laptop will act as the application server and I will add my laptop and the application as an application endpoint to the Lync server. Can I create all the three things on a single VM and not worry about multiple VMs?
4) Do I need an exchange server? If yes then why?
Any help is appreciated. Thanks.
Good morning,
I have following scenario: I have solution with two projects - first project is MVC WebClient and second one is WCF Service. I want open Windows explorer on specific location, probably through WCF. I know that it is not possible from pure client so I was thinking if WCF can does it.
Full scenario is: User clicks on button and then windows explorer will be opened.
I have tried do it on my local computer
Process.Start(path);
and it works, but what if I will host it on IIS?
Will it works?
Will it open client's explorer or server's explorer?
If first two steps will work, will I need host WCF service on IIS too or MVC client with service reference is enough?
And if this scenario won't work, can anyone help with some solution for this problem (if is any)?
Many thanks
The only way I could think of doing this purely with a browser would be to require the client to use IE and then embed an ActiveX control. The page would have to run with the highest security privileges so the ActiveX could run unimpeded. The nice thing about this is it would not require much (if any) server-side support. It would all be handled by Javascript.
Otherwise, to make it browser agnostic, you would have to have a listener app running on the client machine, probably as a service or set to start on machine boot (good candidate for the notification area on the taskbar). The listener app on the client machine could establish a connection to the server using WCF, Sockets (whatever you want really) and then when the user presses the button on the WEB application a message is sent from the web server to the client-side listening application. This of course could trigger anything you want on the client-side.
I see several complications with this as well:
1) How do you get the listener installed on the client machine?
If it's really simple you could just send the exe over with instructions where to copy.
You could build an installer or use ClickOnce to deploy it right from the website: http://msdn.microsoft.com/en-us/library/ms973805.aspx
2) Your web application now needs to communicate with a server-side component that is connected to the client-side listener. If you are already using WCF on the server this might not be too bad. If the client-side listener connects to the same web application the user is using it probably wouldn't be too difficult either (use long-polling or web sockets, etc)
3) How do you secure the client-side listener and connect the client-side "session" to the web "session" such that the user clicking on the button in his web browser sends a message to his instance of the client-side listener and not another user's listener.
These are all doable. I wrote an app that worked sort of like this several years ago. There were definitely challenges but we got it working and it has been stable for several years now. We used WCF.
I'm trying to create a client-server app where the server runs on the user's machine. I'm looking into either using WCF or Sockets but I have a couple of questions.
I'd like to use WCF but it seems that the user needs admin rights in order to launch the service. Would the user need admin rights if the WCF service was running within a managed application (e.g. a Windows Service)? With sockets it seems that admin rights isn't required to open the relevant port.
How would HTTPS security work in WCF? Since this is a LAN program (user talking from client to their own machine), do I need to purchase a certificate and install it on their machines? I'd rather avoid this if possible as the data being transferred isn't sensitive. Would this be the same if I use SSLStream for sockets?
There are a lot of questions, :), so very short answer on part of them:
You can host WCF even in console application. Windows Services may not require admin properties to be installed on pc.
For HTTPS - you does not have to buy certificate, you can crate your own - there are a lot of examples in the net. But - if your data is not sensitive - you can probably use simple http.
We had a requirement to build a ASP.NET 3.5 web application using web forms, WCF, ADO.NET and SQL Server. The users would connect via Internet.
Recently we understood that it is possible that users would often remain disconnected and would have Internet access intermittently.
I need to understand if we can create occasionally connected web application using asp.net 3.5 - what all technologies/features we need to use? Is MS Sync Framework the answer to the problem - is it a viable option to use with web application?
Is windows application the right approach instead of web applications - where the business logic would be run at the client itself, using local SQL Express editions with data then been synced up with Enterprise SQL server at server end when connection is established using replication and/or MS Sync framework. In that case is there a need to use WCF?
Does Silverlight applications help in this context -building paritally connected web apps?
Really appreciate if you can give pointers to how to go about this task of creating .net partially connected apps (not mobile apps)?
It looks to me as if you'll need to store your client data locally when not connected.
If you use wcf you can determine what type of protocol to use according to connectivity without affecting your main code e.g. tcp/ip for LAN, http for internet and msmq for storing up data when disconnected.
If data for transfer is stored up using msmq, as soon as a connection is remade then the data will be passed to your main server.
If you write your wcf, or communications code to run as a service (assuming windows functionality here) then it is up to you whether to retain the asp code or write a new windows app.
edit
Setup MSMQ at both ends, its part of windows setup and can be installed on a client machine, just the same as IIS is, it's on the installation disk but not installed by default.
I wouldn't use it to get web pages, have those available on the local machine, but instead use it to queue up data that MUST get back to the server. Your data access layer should be separated from your GUI layer anyway. I assume that your using the MVC pattern or similar.
I don't know what your application is requried to do but here is the example that I've worked on.
A mobile user who visits clients. He has a replicated copy of a company product database on his laptop. When he visits client sites he may not be able to connect to his company server, but still wants to place client orders. This he does using his laptop based application and database. Order data is queued up in MSMQ on the laptop.
As soon as he is able to connect to his company server MSMQ automatically sends the order data. The server has queued up MSMQ messages of changes to pricing and stock etc. that took place whilst he was disconnected. These are now received and the local database is updated.
The choice of TCP/IP, HTTP or MSMQ all happens seemlessly to the main application, the WCF code copes with the choice.
From what I know, you have two options:
Use Gears (abandoned) or Web Storage to store and sync local data, combined with heavily javascripted web pages that can detect loss of connection and work against the local data store.
Use the Sync Framework with a rich client (WinForms, WPF or possibly Silverlight OOB if it gets supported). The Sync Framework does not require a local installation of a database, instead it uses SQL Server Compact, which is simply a local file.
At this stage using Sync franework with probably rich client seems to be better option. Thanks a lot Guys for taking your time out and trying to answer my queries. I will let you know the technologies used after i manage to deploy the app!