Maybe that's another way of looking at it. It's introducing network 
related issues when we should be concentrating on building the app that 
has nothing to do with network, right?

> That is definitely very true. But in this day and age of html5 boilerplate,
> twitter bootstrap, jquery, etc. this particular problem can be considered
> well under control.

IMO, you can never trust the user system too much. It is a possible 
case that the user system doesn't have a browser installed, right? 
What'd happen then? Any fallback mechanism?

On Saturday 28 September 2013 12:04:40 AM IST, Gopalakrishnan Subramani 
wrote:
> I have spent 10+ years of Desktop app development using VC++/.NET, mostly
> on Windows. After Windows XP SP 3 onwards, Microsoft changed the
> application installation and execution architecture, specifically the
> socket servers, firewall, administrator rights etc.
>
> We have WCF Web Service (part of MS .NET framework), which was running on
> TCP/IP, we have so much of trouble when users install application on their
> machines.
>
> Basic issues are listed here, which are difficult for common users to deal.
>
> 1. Anti-virus apps block the socket/outgoing emails/application altogether
> 2. Firewall blocks the binding to port, incoming/outgoing connections.
> 3. End user shall not have admin rights to install/run the server
> applications that especially binds to socket server.
> 4. Socket port number could have been bind  by other process, so we get
> port bind exceptions.
>
> None of above are not part of our application, but affected by external
> world. Situation is completely based on what user had before, what is there
> right now, what he/she might have later.
>
> On Windows, we use WCF Named Pipe binding now. No more socket related
> issues. During installation, we install our server as Windows Service with
> admin rights which uses named pipe (using GUID + some strong identity
> options for naming pipe).
>
> --
>
> Krish
>
>
>
>
>
>
>
>
>
> On Fri, Sep 27, 2013 at 10:20 PM, Dhananjay Nene
> <dhananjay.n...@gmail.com>wrote:
>
>> On Fri, Sep 27, 2013 at 10:04 PM, Sriram Karra <karra....@gmail.com>
>> wrote:
>>> On Fri, Sep 27, 2013 at 8:55 PM, Dhananjay Nene <
>> dhananjay.n...@gmail.com>wrote:
>>>
>>>
>>>>
>>>> In most cases I find users want a installer. Basically just point and
>>>> click. So if there is no installer where a user selects a install
>>>> directory and presses a button called install (and perhaps a couple of
>>>> app specific items), there's a huge support cost due to users being
>>>> not able to install apps successfully. I presume what you mean by a
>>>> standard python application, but if it means a user having to install
>>>> python if not installed, create a virtualenv, run pip install, create
>>>> desktop shortcuts to start / stop servers, in most cases it is very
>>>> very unlikely to work with lay end users. (Much of this applies to
>>>> desktop based apps as well).
>>>>
>>>
>>>
>>> None of that pip/virtualenv stuff is required. There are tools available
>>> that can convert a python application into a native executable - py2exe
>> for
>>> windows, and py2app mac, for. e.g. Once you have the native, self
>> contained
>>> executables, they can be wrapped into a msi or dmg package like any other
>>> native application.
>>>
>> Ok. I haven't tried them myself ever :( Though usually there's more
>> required during installation (eg. where does the program get installed
>> what directory should data go to etc. Not sure if these get addressed
>> by these. Perhaps there are standard python ways to deal with all such
>> issues that I am unaware of.
>>
>>> When I said the embedded webapp is like any other python application I
>>> wanted to say that the above packaging options area available for a
>> webapp
>>> as well - because all the code is pure python and is completely self
>>> contained. I hope that was clear.
>>>
>> It wasn't to me, but that could be my shortcoming.
>>>
>>>>
>>>>> I have not done this. The invocation is explicitly on demand. It is
>>>> trivial
>>>>> to protect against multiple invocations of the program, and to
>> support a
>>>>> 'Exit Program' action on the front end that will shut down the web
>>>> server.
>>>>
>>>> Ok. I've never tried this. Perhaps it is trivial. But shutting down a
>>>> server even as the controller is processing a request may
>>>> "potentially" be hard. Perhaps one could set a timeout to allow the
>>>> request to complete and then trigger a shutdown.
>>>>
>>>
>>>
>>> You should definitely fire up the PRS program below, and look at how the
>>> shutdown action is triggered and handled in the controller. My guess is
>> you
>>> will find it very straightforward.
>>>
>> Ok.
>>>
>>>
>>>>>
>>>>> It is as easy as any other program. To give you an example, take a
>> look
>>>> at
>>>>> a sample: https://github.com/skarra/PRS
>>>>
>>>> Ok, I am not particularly familiar with how the windows integration
>>>> works so am not able to quickly figure it out.
>>>>
>>>
>>>
>>> There is no windows integration of any sort here. If you are using python
>>> on Windows already, just clone that repo and double click on the file
>>> called prs.pyw -> that is all you need to start the program.
>>>
>> Haven't used windows in ages :(
>>>
>>>
>>>> The difficulty is that the user may have multiple versions of python
>>>> installed and/or his default version may not be compatible with the
>>>> one you want. Plus virtualenv specific for your app will need to be
>>>> configured.
>>>>
>>>
>>>
>>> As explained above, the py2exe / py2app type programs are able to make
>>> completely self contained native executables.
>>>
>>>
>>>>
>>>> You did mention reusable code. Service integration, system tray
>>>> integration etc. are all cross platform issues that are introduced
>>>> when you install a web app on a desktop
>>>
>>>
>>>
>>> I do not know if there are any cross-platform python libraries that take
>>> care of issues such as this. I will only say that the webapp approach to
>>> cross-platform UI programming does not put you at any greater
>> disadvantage
>>> than using a UI toolkit. Remember the original topic was discussion on UI
>>> toolkits!
>>>
>> My point was that service and system tray integration are usually not
>> required for desktop apps. But if your webapp is going to be
>> explicitly started and stopped by user, it may not be required by such
>> webapps as well.
>>>
>>> You also open yourself up to cross browser portability issues. Also
>>>> having to deal with older vs newer browsers (IE6??). Which if you were
>>>> using a standard widget library wouldn't have worried you.
>>>>
>>>
>>>
>>> That is definitely very true. But in this day and age of html5
>> boilerplate,
>>> twitter bootstrap, jquery, etc. this particular problem can be considered
>>> well under control.
>>>
>>>
>>>>
>>>> At the minimum you have an open port. You probably need to restrict
>>>> traffic only from localhost.
>>>
>>>
>>>
>>> Yes, and this is done very easily, I am sure agree.
>> Yes.
>>>
>>>
>>>> In addition you need to worry about SQL
>>>> injection, XSS, XSRF, and a bunch of other alphabet soup combinations.
>>>>
>>>
>>>
>>> I would image these are all non-issues if you reject all connections not
>>> from localhost as discussed above?
>> I am afraid not.
>>>
>>>
>>> I don't mean to suggest it is wrong or inappropriate to use webapps as
>>>> desktop apps. But just wanted to point out there are a whole bunch of
>>>> counter issues as well that need to be dealt with.
>>>>
>>>
>>>
>>> Absolutely. It is definitely constructive and instructive to think about
>>> all angles - even if just to understand the limits of a given approach.
>>> Thank you for this conversation.
>> The pleasure's mutual. I learnt a few things along the way.
>>
>> Dhananjay
>> _______________________________________________
>> BangPypers mailing list
>> BangPypers@python.org
>> https://mail.python.org/mailman/listinfo/bangpypers
>>
> _______________________________________________
> BangPypers mailing list
> BangPypers@python.org
> https://mail.python.org/mailman/listinfo/bangpypers
_______________________________________________
BangPypers mailing list
BangPypers@python.org
https://mail.python.org/mailman/listinfo/bangpypers

Reply via email to