Acabo de implementar mi aplicación de servicio de punto de venta IronPython a principios de este mes. La aplicación de servicio es un servidor HTTP RESTful que sirve consultas & solicitud transaccional al cliente .NET WinForms. Con la ayuda de alguna biblioteca remota, la aplicación de servicio se implementa puramente en IronPython.
En mi opinión, Python es indudablemente el mejor lenguaje para codificar lógicas de negocios complejas. Aquí están mis razones.
El lenguaje es muy expresivo. Podría pensar en un sinfín de ideas para DSL internas que hacen que mi lógica empresarial sea más corta y más simple de entender.
Es interactivo. El análisis de problemas y las pruebas lógicas se pueden realizar de forma interactiva.
Es dinámico. Es libertad. Sin configuración xml Sin plomería. Sin compilación.
Puedo trabajar en mi editor favorito.
La mayoría de los escépticos alway mencionan "código de finalización" y "depurador". Bueno, los extraño a veces. Sin embargo, soy consciente de que renuncié deliberadamente a esas conveniencias a favor, un factor mucho más importante, la comprensibilidad. Con las pruebas de unidad y el registro adecuados, elegiría IronPython en cualquier idioma para mi lógica de negocios.
actualización:
A veces, yo experimento y log problemas del usuario con IronPython Script que actúan como si ser un cliente de la siguiente manera:
>> from boon.service import client
>> CASH_PAYMENT_TYPE = '000000011'
>> cl = client.Client('http://pos-server/bin?posB2K')
>> cl.connect('user', 'password')
>> order = cl.workspace('pos.Order')
>> order.load('1312')
>> payments = order.dataset.Tables['POS_PAYMENTS']
>> payments.Rows[0]['PAYMENT_TYPE_ID'] = CASH_PAYMENT_TYPE
>> order.save()
A veces, investigo errores de objeto de servidor de secuencias de comandos como este:
>> from boon import pos
>> pos.register_pos_service(debug=True)
>> from boon.service import get_instance
>> possvc = get_instance('pos')
>> print possvc.store['POS_PAYMENTS'] \
.. .where(lambda r: r.POS_HD_ID == 1312) \
.. .include('PAYMENT_TYPE_ID', 'PAY_AMT') \
.. .list()
[('000000011', 1520)]
Puede que el código no sea demasiado elegante ya que prefiero basar mi trabajo en ADO.NET DataSet. Sin embargo, es más simple para el cliente de Windoows Forms.
+1 Interesante pregunta. –
http://mail.python.org/pipermail/pythondotnet/2009-June/000936.html – Ricky