2009-12-16 9 views

Respuesta

9

Un ejemplo que es una combinación perfecta para IronPython es cuando desea incluir la capacidad de escritura en su aplicación. He estado trabajando en sistemas en los que el usuario puede interactuar directamente con todo el modelo de clases de aplicaciones a través de la capa de scripts de python integrada en la aplicación y ofrece una gran flexibilidad para usuarios avanzados. Un ejemplo tangible es cuando desea exponer "ganchos" en la aplicación donde el usuario puede personalizar las reglas comerciales (por ejemplo, hacer un cálculo de tarifa de corredor personalizado cuando se crea una nueva operación en un sistema comercial).

Editar por solicitud: aquí es un ejemplo simple (burlado-upped). Cuando un usuario crea una nueva operación en el sistema, el sistema verifica si se define la siguiente función de Python, y si está presente, la operación obtiene el resultado de la función como una tarifa añadida antes de comprometerse con la base de datos:

def calculate_broker_fee(trade): 
    fee = 0.043 # default value 
    if trade.exchange in ["SWX", "EURONEXT"] and \ 
     trade.instrument.instrument_type == "Bond": 
     fee = trade.quantity*0.00234 
    return fee 
+1

¿Podría compartir parte de su fragmento de código para ver más concretamente? – Ricky

+0

@Rickaed: ¿significa que los usuarios mantienen "calculate_broker_fee" para personalizar sus necesidades? – Ricky

+0

Sí, seguro que sí. Si la función no está allí, entonces el sistema usa su cálculo predeterminado interno (escrito en C++ en este caso, típicamente C# en el caso de IronPython), pero si el usuario necesita el cálculo personalizado, puede proporcionarlo. – Rickard

3

En el trabajo diurno, es mi lenguaje estándar para esos pequeños bits de proceso de compilación que son demasiado para archivos .bat y no lo suficientemente pesados ​​como para exigir un ejecutable por separado; esto incluye todo lo que podría usar un poco de procesamiento o reflexión XML, generando archivos Wix con un manejo sistemático de instalaciones de 32 y 64 bits, por ejemplo. Esto supera a PowerShell en este rol porque IronPython es una instalación XCOPY en máquinas de construcción.

También es muy útil para generar prototipos de códigos contra API desconocidas o complejas (WMI y Active Directory son las habituales), o diagnosticar problemas en el código usando esas API (como olfatear las rarezas que ocurren cuando se ' re en el controlador de dominio, en lugar de en otro lugar).

+0

¿Podría dar ejemplos más concretos sobre su explicación? – Ricky

+0

En lugar de copiar al por mayor, aquí hay un par de publicaciones de mi blog sobre el tema: http://stevegilham.blogspot.com/2009/07/ironpython-for-build-scripting.html fir the former y http: // stevegilham .blogspot.com/2007/09/watching-files-registry-keys-from-net.html para el último –

+0

@Steve: muchas gracias – Ricky

0

Se creó una herramienta de carga para un complemento de MS Group Chat Server. La API de GC está en C#. Lo envolví en un dll e hice que FePy lo cargara. La aplicación principal, los scripts de configuración, etc. están todos en FePy.

4

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.

  1. 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.

  2. Es interactivo. El análisis de problemas y las pruebas lógicas se pueden realizar de forma interactiva.

  3. Es dinámico. Es libertad. Sin configuración xml Sin plomería. Sin compilación.

  4. 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.

+0

+1.Prefiero IronPython sobre C# para todo .NET. Por todos los motivos anteriores. – codeape

+0

@Sake: ¿Podría proporcionar artículos sobre el punto (2)? Gracias. – Ricky

0

utilizo IronPython durante unos propósitos diferentes:

  • Una alternativa a Powershell cuando necesito algo guión e invoco una biblioteca .NET, o cuando el guión es bastante complicado como para justificar un lenguaje de programación real.
  • Incrustar en una aplicación .NET para complementos programables.
  • Creación de prototipos y prueba de .NET libs en modo inmediato. Esto es mucho más fácil que hacer un proyecto de prueba en C#
0

Lo usamos mucho para pequeñas herramientas administrativas en comparación con SharePoint. En particular, es fantástico explorar la API contra datos reales (con todas sus peculiaridades de la vida real). Las iteraciones de desarrollo son más rápidas y no siempre se puede instalar Visual Studio en los servidores de producción.

Cuestiones relacionadas