Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup microsoft.public.es.* 1 Foro > Newsgroup microsoft.public.es.dotnet.aspnet
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 05-09-2008, 21:58:09
Claudia
 
Mensajes: n/a
Predeterminado Consideraciones del Patron Singleton

Hola:

He implementado el patron singleton en la capa de datos de mi aplicacion
n-capas, con el objetivo de crear una unica instancia de la conexion a SAP BO
dado que cuando necesito obtener alguna informacion desde algun metodo la DAL
se realizan los siguientes pasos :

1. Se abre una conexion con SAPBO
2. Se obtiene la informacion requerida por ejemplo datos de un cliente o
lista de precios.
3. Se cierre la conexion con SAPBO.

El incoveniente es que por cada conexion a SAPBO este se demora un lapzo
tiempo considerable por lo tanto pienso que el patron singleton me podria
ayudar a mejorar los tiempos dado que solo se conectara una sola y las
proximas veces me retornara el objeto conectado. Aunque yo le he probado en
ambiente de desarrollo osea en mi pc y este cumple con su objetivo, aunque me
han saltado unas dudas con respecto su implementacion en ambiente de
produccion.

- Estoy haciendo lo corrrecto ?
- En produccion no habria ningun tipo de problemas ?
- Que consideraciones deberia tener al respecto.
- Cuando terminaria la conexion con SAP BO?
- Cuando la el cliente es una app. web deberia usar el httpcontext?. Segun
este articulo (http://dotnet.org.za/eduard/archive/...7/07/2609.aspx) si
deberia pero no funciona cuando uso el httpcontext.

Ademas que las App. UI podrian ser tanto web como windows, ojo que yo no
deseo que toda mi DAL sea un singleton si no mas bien la clase que se conecta
a SAPBO tal y como se muestra a continuacion:

DAL
-- MySingleton
-- ConexionDA -> obtiene el datacontext
-- OrderDA -> usa ConexionDA
-- CustomerDA -> usa ConexionDA
-- SAPBO_DA -> metodos que obtienen info de SAPBO usando MySingleton
-- ...

BLL -> used DAL
-- OrderBL
-- CustomerBL
-- SAPBO_BL
-- ...

WIN_UI -> usa BLL
WEB_UI -> usa BLL

Singleton :
Public Class mySingleton

Private Shared oInstance As mySingleton
Private Shared _company As New SAPbobsCOM.Company

Protected Sub New()
Dim retCode, errCode As Integer
Dim errMSG As String = ""

With _company
.Server = ConfigurationManager.AppSettings("Server_SBO").ToS tring
.DbServerType =
CType(ConfigurationManager.AppSettings("DbServerTy pe_SBO"), Integer) '4 ->
BoDataServerTypes.dst_MSSQL2005
.UseTrusted = False
.CompanyDB =
ConfigurationManager.AppSettings("CompanyDB_SBO"). ToString
.DbUserName =
ConfigurationManager.AppSettings("DbUserName_SBO") .ToString
.DbPassword =
ConfigurationManager.AppSettings("DbPassword_SBO") .ToString
.UserName =
ConfigurationManager.AppSettings("UserName_SBO").T oString
.Password =
ConfigurationManager.AppSettings("Password_SBO").T oString
.language =
ConfigurationManager.AppSettings("Language_SBO").T oString '3 ->
SAPbobsCOM.BoSuppLangs.ln_English

retCode = _company.Connect

If retCode > 0 Then
_company.GetLastError(errCode, errMSG)

Throw New Exception("Connection Failed - " & errMSG)
End If
End With
End Sub

Public Shared Function Instance() As mySingleton
'If HttpContext.Current Is Nothing Then
If oInstance Is Nothing Then
oInstance = New mySingleton()
End If
Return oInstance
'End If


'If Not HttpContext.Current.Items.Contains("mySingleton") Then
' HttpContext.Current.Items.Add("mySingleton", New mySingleton())
'End If

'Return DirectCast(HttpContext.Current.Items("mySingleton" ),
mySingleton)
End Function

Public ReadOnly Property GetConnection() As SAPbobsCOM.Company
Get
Return _company
End Get
End Property
End Class

Method:

Public Function ObtenerImpuesto(ByVal tipo As String) As Impuesto
Dim _company As SAPbobsCOM.Company

Try
'_company = Connect()
Dim objConexion As mySingleton = mySingleton.Instance
_company = objConexion.GetConnection

Dim rs As SAPbobsCOM.Recordset
rs = _company.GetBusinessObject(BoObjectTypes.BoRecords et)

Dim query As String = String.Format("SELECT T0.[code],
T0.[Name],T0.[Rate] FROM OSTA T0 WHERE T0.[code] ='{0}'", tipo)

rs.DoQuery(query)

Dim _impuesto As New Impuesto

While Not rs.EoF
_impuesto.Codigo = rs.Fields.Item(0).Value
_impuesto.Nombre = rs.Fields.Item(1).Value
_impuesto.Valor = rs.Fields.Item(2).Value

rs.MoveNext()
End While

Return _impuesto
Finally
'_company.Disconnect()
End Try
End Function
Thank you,

Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 10-09-2008, 23:05:27
Sergio
 
Mensajes: n/a
Predeterminado Re: Consideraciones del Patron Singleton

On 5 sep, 22:58, Claudia <Clau...***discussions.microsoft.com> wrote:
> Hola:
>
> He implementado el patron singleton en la capa de datos de mi aplicacion
> n-capas, con el objetivo de crear una unica instancia de la conexion a SAP BO
> dado que cuando necesito obtener alguna informacion desde algun metodo laDAL
> se realizan los siguientes pasos :
>
> 1. Se abre una conexion con SAPBO
> 2. Se obtiene la informacion requerida por ejemplo datos de un cliente o
> lista de precios.
> 3. Se cierre la conexion con SAPBO.
>
> El incoveniente es que por cada conexion a SAPBO este se demora un lapzo
> tiempo considerable por lo tanto pienso que el patron singleton me podria
> ayudar a mejorar los tiempos dado que solo se conectara una sola y las
> proximas veces me retornara el objeto conectado. Aunque yo le he probado en
> ambiente de desarrollo osea en mi pc y este cumple con su objetivo, aunque me
> han saltado unas dudas con respecto su implementacion en ambiente de
> produccion.
>
> - Estoy haciendo lo corrrecto ?
> - En produccion no habria ningun tipo de problemas ?
> - Que consideraciones deberia tener al respecto.
> - Cuando terminaria la conexion con SAP BO?
> - Cuando la el cliente es una app. web deberia usar el httpcontext?. Segun
> este articulo (http://dotnet.org.za/eduard/archive/...7/07/2609.aspx) si
> deberia pero no funciona cuando uso el httpcontext.
>
> Ademas que las App. UI podrian ser tanto web como windows, ojo que yo no
> deseo que toda mi DAL sea un singleton si no mas bien la clase que se conecta
> a SAPBO tal y como se muestra a continuacion:
>
> DAL
> -- MySingleton
> -- ConexionDA -> obtiene el datacontext
> -- OrderDA -> usa ConexionDA
> -- CustomerDA -> usa ConexionDA
> -- SAPBO_DA -> metodos que obtienen info de SAPBO usando MySingleton
> -- ...
>
> BLL -> used DAL
> -- OrderBL
> -- CustomerBL
> -- SAPBO_BL
> -- ...
>
> WIN_UI -> usa BLL
> WEB_UI -> usa BLL
>
> Singleton :
> Public Class mySingleton
>
> *** *** Private Shared oInstance As mySingleton
> *** *** Private Shared _company As New SAPbobsCOM.Company
>
> *** *** Protected Sub New()
> *** *** *** *** Dim retCode, errCode As Integer
> *** *** *** *** Dim errMSG As String = ""
>
> *** *** *** *** With _company
> *** *** *** *** *** *** .Server = ConfigurationManager.AppSettings("Server_SBO").ToS tring
> *** *** *** *** *** *** .DbServerType =
> CType(ConfigurationManager.AppSettings("DbServerTy pe_SBO"), Integer) '4 ->
> BoDataServerTypes.dst_MSSQL2005
> *** *** *** *** *** *** .UseTrusted = False
> *** *** *** *** *** *** .CompanyDB =
> ConfigurationManager.AppSettings("CompanyDB_SBO"). ToString
> *** *** *** *** *** *** .DbUserName =
> ConfigurationManager.AppSettings("DbUserName_SBO") .ToString
> *** *** *** *** *** *** .DbPassword =
> ConfigurationManager.AppSettings("DbPassword_SBO") .ToString
> *** *** *** *** *** *** .UserName =
> ConfigurationManager.AppSettings("UserName_SBO").T oString
> *** *** *** *** *** *** .Password =
> ConfigurationManager.AppSettings("Password_SBO").T oString
> *** *** *** *** *** *** .language =
> ConfigurationManager.AppSettings("Language_SBO").T oString '3 ->
> SAPbobsCOM.BoSuppLangs.ln_English
>
> *** *** *** *** *** *** retCode = _company.Connect
>
> *** *** *** *** *** *** If retCode > 0 Then
> *** *** *** *** *** *** *** *** _company.GetLastError(errCode, errMSG)
>
> *** *** *** *** *** *** *** *** Throw New Exception("Connection Failed - " & errMSG)
> *** *** *** *** *** *** End If
> *** *** *** *** End With
> *** *** End Sub
>
> *** *** Public Shared Function Instance() As mySingleton
> *** *** *** *** 'If HttpContext.Current Is Nothing Then
> *** *** *** *** If oInstance Is Nothing Then
> *** *** *** *** *** *** oInstance = New mySingleton()
> *** *** *** *** End If
> *** *** *** *** Return oInstance
> *** *** *** *** 'End If
>
> *** *** *** *** 'If Not HttpContext.Current.Items.Contains("mySingleton")T hen
> *** *** *** *** ' *** ***HttpContext.Current.Items.Add("mySingleton", NewmySingleton())
> *** *** *** *** 'End If
>
> *** *** *** *** 'Return DirectCast(HttpContext.Current.Items("mySingleton" ),
> mySingleton)
> *** *** End Function
>
> *** *** Public ReadOnly Property GetConnection() As SAPbobsCOM.Company
> *** *** *** *** Get
> *** *** *** *** *** *** Return _company
> *** *** *** *** End Get
> *** *** End Property
> End Class
>
> Method:
>
> Public Function ObtenerImpuesto(ByVal tipo As String) As Impuesto
> *** *** *** *** Dim _company As SAPbobsCOM.Company
>
> *** *** *** *** Try
> *** *** *** *** *** *** '_company = Connect()
> *** *** *** *** *** *** Dim objConexion As mySingleton = mySingleton.Instance
> *** *** *** *** *** *** _company = objConexion.GetConnection
>
> *** *** *** *** *** *** Dim rs As SAPbobsCOM.Recordset
> *** *** *** *** *** *** rs = _company.GetBusinessObject(BoObjectTypes.BoRecords et)
>
> *** *** *** *** *** *** Dim query As String = String.Format("SELECT T0.[code],
> T0.[Name],T0.[Rate] FROM OSTA T0 WHERE T0.[code] ='{0}'", tipo)
>
> *** *** *** *** *** *** rs.DoQuery(query)
>
> *** *** *** *** *** *** Dim _impuesto As New Impuesto
>
> *** *** *** *** *** *** While Not rs.EoF
> *** *** *** *** *** *** *** *** _impuesto.Codigo = rs.Fields.Item(0).Value
> *** *** *** *** *** *** *** *** _impuesto.Nombre = rs.Fields.Item(1).Value
> *** *** *** *** *** *** *** *** _impuesto.Valor = rs.Fields.Item(2).Value
>
> *** *** *** *** *** *** *** *** rs.MoveNext()
> *** *** *** *** *** *** End While
>
> *** *** *** *** *** *** Return _impuesto
> *** *** *** *** Finally
> *** *** *** *** *** *** '_company.Disconnect()
> *** *** *** *** End Try
> *** *** End Function
> Thank you,


Hola:

Por opinar y perdona si digo alguna tontería:

¿No puedes activar un pool de conexiones (si el proveedor .NET y el
sistema gestor base de datos que utiliza lo permite)?
¿Una única conexión en singleton? ¿No podría ser que un "cliente"
tuviera que esperar porque otro "cliente" está utilizando la conexión?
Lo digo porque si sólo hay 1 conexión para todos, no tiene buena
pinta, no?
Lo has probado en tu PC y va de lugo, pero ¿en un entorno de
producción? ¿No crees que quizás deberías hacer alguna prueba de
"estres" de tu aplicación para ver como se comporta con algunas
decenas de usuarios "hambrientos" de datos?

De todas formas...hablar es gratis, pero yo miraría eso.

Un saludo y suerte.

Responder Con Cita
  #3 (permalink)  
Antiguo 10-09-2008, 23:05:27
Sergio
 
Mensajes: n/a
Predeterminado Re: Consideraciones del Patron Singleton

On 5 sep, 22:58, Claudia <Clau...***discussions.microsoft.com> wrote:
> Hola:
>
> He implementado el patron singleton en la capa de datos de mi aplicacion
> n-capas, con el objetivo de crear una unica instancia de la conexion a SAP BO
> dado que cuando necesito obtener alguna informacion desde algun metodo laDAL
> se realizan los siguientes pasos :
>
> 1. Se abre una conexion con SAPBO
> 2. Se obtiene la informacion requerida por ejemplo datos de un cliente o
> lista de precios.
> 3. Se cierre la conexion con SAPBO.
>
> El incoveniente es que por cada conexion a SAPBO este se demora un lapzo
> tiempo considerable por lo tanto pienso que el patron singleton me podria
> ayudar a mejorar los tiempos dado que solo se conectara una sola y las
> proximas veces me retornara el objeto conectado. Aunque yo le he probado en
> ambiente de desarrollo osea en mi pc y este cumple con su objetivo, aunque me
> han saltado unas dudas con respecto su implementacion en ambiente de
> produccion.
>
> - Estoy haciendo lo corrrecto ?
> - En produccion no habria ningun tipo de problemas ?
> - Que consideraciones deberia tener al respecto.
> - Cuando terminaria la conexion con SAP BO?
> - Cuando la el cliente es una app. web deberia usar el httpcontext?. Segun
> este articulo (http://dotnet.org.za/eduard/archive/...7/07/2609.aspx) si
> deberia pero no funciona cuando uso el httpcontext.
>
> Ademas que las App. UI podrian ser tanto web como windows, ojo que yo no
> deseo que toda mi DAL sea un singleton si no mas bien la clase que se conecta
> a SAPBO tal y como se muestra a continuacion:
>
> DAL
> -- MySingleton
> -- ConexionDA -> obtiene el datacontext
> -- OrderDA -> usa ConexionDA
> -- CustomerDA -> usa ConexionDA
> -- SAPBO_DA -> metodos que obtienen info de SAPBO usando MySingleton
> -- ...
>
> BLL -> used DAL
> -- OrderBL
> -- CustomerBL
> -- SAPBO_BL
> -- ...
>
> WIN_UI -> usa BLL
> WEB_UI -> usa BLL
>
> Singleton :
> Public Class mySingleton
>
> *** *** Private Shared oInstance As mySingleton
> *** *** Private Shared _company As New SAPbobsCOM.Company
>
> *** *** Protected Sub New()
> *** *** *** *** Dim retCode, errCode As Integer
> *** *** *** *** Dim errMSG As String = ""
>
> *** *** *** *** With _company
> *** *** *** *** *** *** .Server = ConfigurationManager.AppSettings("Server_SBO").ToS tring
> *** *** *** *** *** *** .DbServerType =
> CType(ConfigurationManager.AppSettings("DbServerTy pe_SBO"), Integer) '4 ->
> BoDataServerTypes.dst_MSSQL2005
> *** *** *** *** *** *** .UseTrusted = False
> *** *** *** *** *** *** .CompanyDB =
> ConfigurationManager.AppSettings("CompanyDB_SBO"). ToString
> *** *** *** *** *** *** .DbUserName =
> ConfigurationManager.AppSettings("DbUserName_SBO") .ToString
> *** *** *** *** *** *** .DbPassword =
> ConfigurationManager.AppSettings("DbPassword_SBO") .ToString
> *** *** *** *** *** *** .UserName =
> ConfigurationManager.AppSettings("UserName_SBO").T oString
> *** *** *** *** *** *** .Password =
> ConfigurationManager.AppSettings("Password_SBO").T oString
> *** *** *** *** *** *** .language =
> ConfigurationManager.AppSettings("Language_SBO").T oString '3 ->
> SAPbobsCOM.BoSuppLangs.ln_English
>
> *** *** *** *** *** *** retCode = _company.Connect
>
> *** *** *** *** *** *** If retCode > 0 Then
> *** *** *** *** *** *** *** *** _company.GetLastError(errCode, errMSG)
>
> *** *** *** *** *** *** *** *** Throw New Exception("Connection Failed - " & errMSG)
> *** *** *** *** *** *** End If
> *** *** *** *** End With
> *** *** End Sub
>
> *** *** Public Shared Function Instance() As mySingleton
> *** *** *** *** 'If HttpContext.Current Is Nothing Then
> *** *** *** *** If oInstance Is Nothing Then
> *** *** *** *** *** *** oInstance = New mySingleton()
> *** *** *** *** End If
> *** *** *** *** Return oInstance
> *** *** *** *** 'End If
>
> *** *** *** *** 'If Not HttpContext.Current.Items.Contains("mySingleton")T hen
> *** *** *** *** ' *** ***HttpContext.Current.Items.Add("mySingleton", NewmySingleton())
> *** *** *** *** 'End If
>
> *** *** *** *** 'Return DirectCast(HttpContext.Current.Items("mySingleton" ),
> mySingleton)
> *** *** End Function
>
> *** *** Public ReadOnly Property GetConnection() As SAPbobsCOM.Company
> *** *** *** *** Get
> *** *** *** *** *** *** Return _company
> *** *** *** *** End Get
> *** *** End Property
> End Class
>
> Method:
>
> Public Function ObtenerImpuesto(ByVal tipo As String) As Impuesto
> *** *** *** *** Dim _company As SAPbobsCOM.Company
>
> *** *** *** *** Try
> *** *** *** *** *** *** '_company = Connect()
> *** *** *** *** *** *** Dim objConexion As mySingleton = mySingleton.Instance
> *** *** *** *** *** *** _company = objConexion.GetConnection
>
> *** *** *** *** *** *** Dim rs As SAPbobsCOM.Recordset
> *** *** *** *** *** *** rs = _company.GetBusinessObject(BoObjectTypes.BoRecords et)
>
> *** *** *** *** *** *** Dim query As String = String.Format("SELECT T0.[code],
> T0.[Name],T0.[Rate] FROM OSTA T0 WHERE T0.[code] ='{0}'", tipo)
>
> *** *** *** *** *** *** rs.DoQuery(query)
>
> *** *** *** *** *** *** Dim _impuesto As New Impuesto
>
> *** *** *** *** *** *** While Not rs.EoF
> *** *** *** *** *** *** *** *** _impuesto.Codigo = rs.Fields.Item(0).Value
> *** *** *** *** *** *** *** *** _impuesto.Nombre = rs.Fields.Item(1).Value
> *** *** *** *** *** *** *** *** _impuesto.Valor = rs.Fields.Item(2).Value
>
> *** *** *** *** *** *** *** *** rs.MoveNext()
> *** *** *** *** *** *** End While
>
> *** *** *** *** *** *** Return _impuesto
> *** *** *** *** Finally
> *** *** *** *** *** *** '_company.Disconnect()
> *** *** *** *** End Try
> *** *** End Function
> Thank you,


Hola:

Por opinar y perdona si digo alguna tontería:

¿No puedes activar un pool de conexiones (si el proveedor .NET y el
sistema gestor base de datos que utiliza lo permite)?
¿Una única conexión en singleton? ¿No podría ser que un "cliente"
tuviera que esperar porque otro "cliente" está utilizando la conexión?
Lo digo porque si sólo hay 1 conexión para todos, no tiene buena
pinta, no?
Lo has probado en tu PC y va de lugo, pero ¿en un entorno de
producción? ¿No crees que quizás deberías hacer alguna prueba de
"estres" de tu aplicación para ver como se comporta con algunas
decenas de usuarios "hambrientos" de datos?

De todas formas...hablar es gratis, pero yo miraría eso.

Un saludo y suerte.

Responder Con Cita
  #4 (permalink)  
Antiguo 10-09-2008, 23:05:27
Sergio
 
Mensajes: n/a
Predeterminado Re: Consideraciones del Patron Singleton

On 5 sep, 22:58, Claudia <Clau...***discussions.microsoft.com> wrote:
> Hola:
>
> He implementado el patron singleton en la capa de datos de mi aplicacion
> n-capas, con el objetivo de crear una unica instancia de la conexion a SAP BO
> dado que cuando necesito obtener alguna informacion desde algun metodo laDAL
> se realizan los siguientes pasos :
>
> 1. Se abre una conexion con SAPBO
> 2. Se obtiene la informacion requerida por ejemplo datos de un cliente o
> lista de precios.
> 3. Se cierre la conexion con SAPBO.
>
> El incoveniente es que por cada conexion a SAPBO este se demora un lapzo
> tiempo considerable por lo tanto pienso que el patron singleton me podria
> ayudar a mejorar los tiempos dado que solo se conectara una sola y las
> proximas veces me retornara el objeto conectado. Aunque yo le he probado en
> ambiente de desarrollo osea en mi pc y este cumple con su objetivo, aunque me
> han saltado unas dudas con respecto su implementacion en ambiente de
> produccion.
>
> - Estoy haciendo lo corrrecto ?
> - En produccion no habria ningun tipo de problemas ?
> - Que consideraciones deberia tener al respecto.
> - Cuando terminaria la conexion con SAP BO?
> - Cuando la el cliente es una app. web deberia usar el httpcontext?. Segun
> este articulo (http://dotnet.org.za/eduard/archive/...7/07/2609.aspx) si
> deberia pero no funciona cuando uso el httpcontext.
>
> Ademas que las App. UI podrian ser tanto web como windows, ojo que yo no
> deseo que toda mi DAL sea un singleton si no mas bien la clase que se conecta
> a SAPBO tal y como se muestra a continuacion:
>
> DAL
> -- MySingleton
> -- ConexionDA -> obtiene el datacontext
> -- OrderDA -> usa ConexionDA
> -- CustomerDA -> usa ConexionDA
> -- SAPBO_DA -> metodos que obtienen info de SAPBO usando MySingleton
> -- ...
>
> BLL -> used DAL
> -- OrderBL
> -- CustomerBL
> -- SAPBO_BL
> -- ...
>
> WIN_UI -> usa BLL
> WEB_UI -> usa BLL
>
> Singleton :
> Public Class mySingleton
>
> *** *** Private Shared oInstance As mySingleton
> *** *** Private Shared _company As New SAPbobsCOM.Company
>
> *** *** Protected Sub New()
> *** *** *** *** Dim retCode, errCode As Integer
> *** *** *** *** Dim errMSG As String = ""
>
> *** *** *** *** With _company
> *** *** *** *** *** *** .Server = ConfigurationManager.AppSettings("Server_SBO").ToS tring
> *** *** *** *** *** *** .DbServerType =
> CType(ConfigurationManager.AppSettings("DbServerTy pe_SBO"), Integer) '4 ->
> BoDataServerTypes.dst_MSSQL2005
> *** *** *** *** *** *** .UseTrusted = False
> *** *** *** *** *** *** .CompanyDB =
> ConfigurationManager.AppSettings("CompanyDB_SBO"). ToString
> *** *** *** *** *** *** .DbUserName =
> ConfigurationManager.AppSettings("DbUserName_SBO") .ToString
> *** *** *** *** *** *** .DbPassword =
> ConfigurationManager.AppSettings("DbPassword_SBO") .ToString
> *** *** *** *** *** *** .UserName =
> ConfigurationManager.AppSettings("UserName_SBO").T oString
> *** *** *** *** *** *** .Password =
> ConfigurationManager.AppSettings("Password_SBO").T oString
> *** *** *** *** *** *** .language =
> ConfigurationManager.AppSettings("Language_SBO").T oString '3 ->
> SAPbobsCOM.BoSuppLangs.ln_English
>
> *** *** *** *** *** *** retCode = _company.Connect
>
> *** *** *** *** *** *** If retCode > 0 Then
> *** *** *** *** *** *** *** *** _company.GetLastError(errCode, errMSG)
>
> *** *** *** *** *** *** *** *** Throw New Exception("Connection Failed - " & errMSG)
> *** *** *** *** *** *** End If
> *** *** *** *** End With
> *** *** End Sub
>
> *** *** Public Shared Function Instance() As mySingleton
> *** *** *** *** 'If HttpContext.Current Is Nothing Then
> *** *** *** *** If oInstance Is Nothing Then
> *** *** *** *** *** *** oInstance = New mySingleton()
> *** *** *** *** End If
> *** *** *** *** Return oInstance
> *** *** *** *** 'End If
>
> *** *** *** *** 'If Not HttpContext.Current.Items.Contains("mySingleton")T hen
> *** *** *** *** ' *** ***HttpContext.Current.Items.Add("mySingleton", NewmySingleton())
> *** *** *** *** 'End If
>
> *** *** *** *** 'Return DirectCast(HttpContext.Current.Items("mySingleton" ),
> mySingleton)
> *** *** End Function
>
> *** *** Public ReadOnly Property GetConnection() As SAPbobsCOM.Company
> *** *** *** *** Get
> *** *** *** *** *** *** Return _company
> *** *** *** *** End Get
> *** *** End Property
> End Class
>
> Method:
>
> Public Function ObtenerImpuesto(ByVal tipo As String) As Impuesto
> *** *** *** *** Dim _company As SAPbobsCOM.Company
>
> *** *** *** *** Try
> *** *** *** *** *** *** '_company = Connect()
> *** *** *** *** *** *** Dim objConexion As mySingleton = mySingleton.Instance
> *** *** *** *** *** *** _company = objConexion.GetConnection
>
> *** *** *** *** *** *** Dim rs As SAPbobsCOM.Recordset
> *** *** *** *** *** *** rs = _company.GetBusinessObject(BoObjectTypes.BoRecords et)
>
> *** *** *** *** *** *** Dim query As String = String.Format("SELECT T0.[code],
> T0.[Name],T0.[Rate] FROM OSTA T0 WHERE T0.[code] ='{0}'", tipo)
>
> *** *** *** *** *** *** rs.DoQuery(query)
>
> *** *** *** *** *** *** Dim _impuesto As New Impuesto
>
> *** *** *** *** *** *** While Not rs.EoF
> *** *** *** *** *** *** *** *** _impuesto.Codigo = rs.Fields.Item(0).Value
> *** *** *** *** *** *** *** *** _impuesto.Nombre = rs.Fields.Item(1).Value
> *** *** *** *** *** *** *** *** _impuesto.Valor = rs.Fields.Item(2).Value
>
> *** *** *** *** *** *** *** *** rs.MoveNext()
> *** *** *** *** *** *** End While
>
> *** *** *** *** *** *** Return _impuesto
> *** *** *** *** Finally
> *** *** *** *** *** *** '_company.Disconnect()
> *** *** *** *** End Try
> *** *** End Function
> Thank you,


Hola:

Por opinar y perdona si digo alguna tontería:

¿No puedes activar un pool de conexiones (si el proveedor .NET y el
sistema gestor base de datos que utiliza lo permite)?
¿Una única conexión en singleton? ¿No podría ser que un "cliente"
tuviera que esperar porque otro "cliente" está utilizando la conexión?
Lo digo porque si sólo hay 1 conexión para todos, no tiene buena
pinta, no?
Lo has probado en tu PC y va de lugo, pero ¿en un entorno de
producción? ¿No crees que quizás deberías hacer alguna prueba de
"estres" de tu aplicación para ver como se comporta con algunas
decenas de usuarios "hambrientos" de datos?

De todas formas...hablar es gratis, pero yo miraría eso.

Un saludo y suerte.

Responder Con Cita
  #5 (permalink)  
Antiguo 11-09-2008, 12:59:23
Paco
 
Mensajes: n/a
Predeterminado Re: Consideraciones del Patron Singleton

On 5 sep, 22:58, Claudia <Clau...***discussions.microsoft.com> wrote:
> Hola:
>
> He implementado el patron singleton en la capa de datos de mi aplicacion
> n-capas, con el objetivo de crear una unica instancia de la conexion a SAP BO
> dado que cuando necesito obtener alguna informacion desde algun metodo laDAL
> se realizan los siguientes pasos :
>
> 1. Se abre una conexion con SAPBO
> 2. Se obtiene la informacion requerida por ejemplo datos de un cliente o
> lista de precios.
> 3. Se cierre la conexion con SAPBO.
>
> El incoveniente es que por cada conexion a SAPBO este se demora un lapzo
> tiempo considerable por lo tanto pienso que el patron singleton me podria
> ayudar a mejorar los tiempos dado que solo se conectara una sola y las
> proximas veces me retornara el objeto conectado. Aunque yo le he probado en
> ambiente de desarrollo osea en mi pc y este cumple con su objetivo, aunque me
> han saltado unas dudas con respecto su implementacion en ambiente de
> produccion.
>
> - Estoy haciendo lo corrrecto ?
> - En produccion no habria ningun tipo de problemas ?
> - Que consideraciones deberia tener al respecto.
> - Cuando terminaria la conexion con SAP BO?
> - Cuando la el cliente es una app. web deberia usar el httpcontext?. Segun
> este articulo (http://dotnet.org.za/eduard/archive/...7/07/2609.aspx) si
> deberia pero no funciona cuando uso el httpcontext.
>
> Ademas que las App. UI podrian ser tanto web como windows, ojo que yo no
> deseo que toda mi DAL sea un singleton si no mas bien la clase que se conecta
> a SAPBO tal y como se muestra a continuacion:
>
> DAL
> -- MySingleton
> -- ConexionDA -> obtiene el datacontext
> -- OrderDA -> usa ConexionDA
> -- CustomerDA -> usa ConexionDA
> -- SAPBO_DA -> metodos que obtienen info de SAPBO usando MySingleton
> -- ...
>
> BLL -> used DAL
> -- OrderBL
> -- CustomerBL
> -- SAPBO_BL
> -- ...
>
> WIN_UI -> usa BLL
> WEB_UI -> usa BLL
>
> Singleton :
> Public Class mySingleton
>
> *** *** Private Shared oInstance As mySingleton
> *** *** Private Shared _company As New SAPbobsCOM.Company
>
> *** *** Protected Sub New()
> *** *** *** *** Dim retCode, errCode As Integer
> *** *** *** *** Dim errMSG As String = ""
>
> *** *** *** *** With _company
> *** *** *** *** *** *** .Server = ConfigurationManager.AppSettings("Server_SBO").ToS tring
> *** *** *** *** *** *** .DbServerType =
> CType(ConfigurationManager.AppSettings("DbServerTy pe_SBO"), Integer) '4 ->
> BoDataServerTypes.dst_MSSQL2005
> *** *** *** *** *** *** .UseTrusted = False
> *** *** *** *** *** *** .CompanyDB =
> ConfigurationManager.AppSettings("CompanyDB_SBO"). ToString
> *** *** *** *** *** *** .DbUserName =
> ConfigurationManager.AppSettings("DbUserName_SBO") .ToString
> *** *** *** *** *** *** .DbPassword =
> ConfigurationManager.AppSettings("DbPassword_SBO") .ToString
> *** *** *** *** *** *** .UserName =
> ConfigurationManager.AppSettings("UserName_SBO").T oString
> *** *** *** *** *** *** .Password =
> ConfigurationManager.AppSettings("Password_SBO").T oString
> *** *** *** *** *** *** .language =
> ConfigurationManager.AppSettings("Language_SBO").T oString '3 ->
> SAPbobsCOM.BoSuppLangs.ln_English
>
> *** *** *** *** *** *** retCode = _company.Connect
>
> *** *** *** *** *** *** If retCode > 0 Then
> *** *** *** *** *** *** *** *** _company.GetLastError(errCode, errMSG)
>
> *** *** *** *** *** *** *** *** Throw New Exception("Connection Failed - " & errMSG)
> *** *** *** *** *** *** End If
> *** *** *** *** End With
> *** *** End Sub
>
> *** *** Public Shared Function Instance() As mySingleton
> *** *** *** *** 'If HttpContext.Current Is Nothing Then
> *** *** *** *** If oInstance Is Nothing Then
> *** *** *** *** *** *** oInstance = New mySingleton()
> *** *** *** *** End If
> *** *** *** *** Return oInstance
> *** *** *** *** 'End If
>
> *** *** *** *** 'If Not HttpContext.Current.Items.Contains("mySingleton")T hen
> *** *** *** *** ' *** ***HttpContext.Current.Items.Add("mySingleton", NewmySingleton())
> *** *** *** *** 'End If
>
> *** *** *** *** 'Return DirectCast(HttpContext.Current.Items("mySingleton" ),
> mySingleton)
> *** *** End Function
>
> *** *** Public ReadOnly Property GetConnection() As SAPbobsCOM.Company
> *** *** *** *** Get
> *** *** *** *** *** *** Return _company
> *** *** *** *** End Get
> *** *** End Property
> End Class
>
> Method:
>
> Public Function ObtenerImpuesto(ByVal tipo As String) As Impuesto
> *** *** *** *** Dim _company As SAPbobsCOM.Company
>
> *** *** *** *** Try
> *** *** *** *** *** *** '_company = Connect()
> *** *** *** *** *** *** Dim objConexion As mySingleton = mySingleton.Instance
> *** *** *** *** *** *** _company = objConexion.GetConnection
>
> *** *** *** *** *** *** Dim rs As SAPbobsCOM.Recordset
> *** *** *** *** *** *** rs = _company.GetBusinessObject(BoObjectTypes.BoRecords et)
>
> *** *** *** *** *** *** Dim query As String = String.Format("SELECT T0.[code],
> T0.[Name],T0.[Rate] FROM OSTA T0 WHERE T0.[code] ='{0}'", tipo)
>
> *** *** *** *** *** *** rs.DoQuery(query)
>
> *** *** *** *** *** *** Dim _impuesto As New Impuesto
>
> *** *** *** *** *** *** While Not rs.EoF
> *** *** *** *** *** *** *** *** _impuesto.Codigo = rs.Fields.Item(0).Value
> *** *** *** *** *** *** *** *** _impuesto.Nombre = rs.Fields.Item(1).Value
> *** *** *** *** *** *** *** *** _impuesto.Valor = rs.Fields.Item(2).Value
>
> *** *** *** *** *** *** *** *** rs.MoveNext()
> *** *** *** *** *** *** End While
>
> *** *** *** *** *** *** Return _impuesto
> *** *** *** *** Finally
> *** *** *** *** *** *** '_company.Disconnect()
> *** *** *** *** End Try
> *** *** End Function
> Thank you,


Claudia,

¿SAPbobsCOM.Company?, ¿es una conexión a SQL Server 2005?
Por los nombres de los parámetros, diría que hereda o usa un
System.Data.SqlClient.SqlConnection.

Si es así, tienes que hacer justo lo contrario, las conexiones las
debes cerrar lo antes posible, aunque suene contraproducente.
O sea, que si tu ASPX necesita 5 Selects para poblar controles, pues
cada Select debe abrir y cerrar la conexión al SQL Server.

Obviamente, no puedes hacer esto si estás en medio de una Transaccion,
en este caso tienes que mantener la misma conexión para toda la
transacción.

Esto es algo que hace tiempo que aprendimos, el cambio fué
espectacular, leete este par de enlaces para una explicación
detallada.
http://blogs.msdn.com/angelsb/archive/2004/08/25/220333.aspx
http://blogs.msdn.com/angelsb/archive/2004/09/20/231963.aspx

Saludos,

Paco Ferre
Responder Con Cita
  #6 (permalink)  
Antiguo 11-09-2008, 12:59:23
Paco
 
Mensajes: n/a
Predeterminado Re: Consideraciones del Patron Singleton

On 5 sep, 22:58, Claudia <Clau...***discussions.microsoft.com> wrote:
> Hola:
>
> He implementado el patron singleton en la capa de datos de mi aplicacion
> n-capas, con el objetivo de crear una unica instancia de la conexion a SAP BO
> dado que cuando necesito obtener alguna informacion desde algun metodo laDAL
> se realizan los siguientes pasos :
>
> 1. Se abre una conexion con SAPBO
> 2. Se obtiene la informacion requerida por ejemplo datos de un cliente o
> lista de precios.
> 3. Se cierre la conexion con SAPBO.
>
> El incoveniente es que por cada conexion a SAPBO este se demora un lapzo
> tiempo considerable por lo tanto pienso que el patron singleton me podria
> ayudar a mejorar los tiempos dado que solo se conectara una sola y las
> proximas veces me retornara el objeto conectado. Aunque yo le he probado en
> ambiente de desarrollo osea en mi pc y este cumple con su objetivo, aunque me
> han saltado unas dudas con respecto su implementacion en ambiente de
> produccion.
>
> - Estoy haciendo lo corrrecto ?
> - En produccion no habria ningun tipo de problemas ?
> - Que consideraciones deberia tener al respecto.
> - Cuando terminaria la conexion con SAP BO?
> - Cuando la el cliente es una app. web deberia usar el httpcontext?. Segun
> este articulo (http://dotnet.org.za/eduard/archive/...7/07/2609.aspx) si
> deberia pero no funciona cuando uso el httpcontext.
>
> Ademas que las App. UI podrian ser tanto web como windows, ojo que yo no
> deseo que toda mi DAL sea un singleton si no mas bien la clase que se conecta
> a SAPBO tal y como se muestra a continuacion:
>
> DAL
> -- MySingleton
> -- ConexionDA -> obtiene el datacontext
> -- OrderDA -> usa ConexionDA
> -- CustomerDA -> usa ConexionDA
> -- SAPBO_DA -> metodos que obtienen info de SAPBO usando MySingleton
> -- ...
>
> BLL -> used DAL
> -- OrderBL
> -- CustomerBL
> -- SAPBO_BL
> -- ...
>
> WIN_UI -> usa BLL
> WEB_UI -> usa BLL
>
> Singleton :
> Public Class mySingleton
>
> *** *** Private Shared oInstance As mySingleton
> *** *** Private Shared _company As New SAPbobsCOM.Company
>
> *** *** Protected Sub New()
> *** *** *** *** Dim retCode, errCode As Integer
> *** *** *** *** Dim errMSG As String = ""
>
> *** *** *** *** With _company
> *** *** *** *** *** *** .Server = ConfigurationManager.AppSettings("Server_SBO").ToS tring
> *** *** *** *** *** *** .DbServerType =
> CType(ConfigurationManager.AppSettings("DbServerTy pe_SBO"), Integer) '4 ->
> BoDataServerTypes.dst_MSSQL2005
> *** *** *** *** *** *** .UseTrusted = False
> *** *** *** *** *** *** .CompanyDB =
> ConfigurationManager.AppSettings("CompanyDB_SBO"). ToString
> *** *** *** *** *** *** .DbUserName =
> ConfigurationManager.AppSettings("DbUserName_SBO") .ToString
> *** *** *** *** *** *** .DbPassword =
> ConfigurationManager.AppSettings("DbPassword_SBO") .ToString
> *** *** *** *** *** *** .UserName =
> ConfigurationManager.AppSettings("UserName_SBO").T oString
> *** *** *** *** *** *** .Password =
> ConfigurationManager.AppSettings("Password_SBO").T oString
> *** *** *** *** *** *** .language =
> ConfigurationManager.AppSettings("Language_SBO").T oString '3 ->
> SAPbobsCOM.BoSuppLangs.ln_English
>
> *** *** *** *** *** *** retCode = _company.Connect
>
> *** *** *** *** *** *** If retCode > 0 Then
> *** *** *** *** *** *** *** *** _company.GetLastError(errCode, errMSG)
>
> *** *** *** *** *** *** *** *** Throw New Exception("Connection Failed - " & errMSG)
> *** *** *** *** *** *** End If
> *** *** *** *** End With
> *** *** End Sub
>
> *** *** Public Shared Function Instance() As mySingleton
> *** *** *** *** 'If HttpContext.Current Is Nothing Then
> *** *** *** *** If oInstance Is Nothing Then
> *** *** *** *** *** *** oInstance = New mySingleton()
> *** *** *** *** End If
> *** *** *** *** Return oInstance
> *** *** *** *** 'End If
>
> *** *** *** *** 'If Not HttpContext.Current.Items.Contains("mySingleton")T hen
> *** *** *** *** ' *** ***HttpContext.Current.Items.Add("mySingleton", NewmySingleton())
> *** *** *** *** 'End If
>
> *** *** *** *** 'Return DirectCast(HttpContext.Current.Items("mySingleton" ),
> mySingleton)
> *** *** End Function
>
> *** *** Public ReadOnly Property GetConnection() As SAPbobsCOM.Company
> *** *** *** *** Get
> *** *** *** *** *** *** Return _company
> *** *** *** *** End Get
> *** *** End Property
> End Class
>
> Method:
>
> Public Function ObtenerImpuesto(ByVal tipo As String) As Impuesto
> *** *** *** *** Dim _company As SAPbobsCOM.Company
>
> *** *** *** *** Try
> *** *** *** *** *** *** '_company = Connect()
> *** *** *** *** *** *** Dim objConexion As mySingleton = mySingleton.Instance
> *** *** *** *** *** *** _company = objConexion.GetConnection
>
> *** *** *** *** *** *** Dim rs As SAPbobsCOM.Recordset
> *** *** *** *** *** *** rs = _company.GetBusinessObject(BoObjectTypes.BoRecords et)
>
> *** *** *** *** *** *** Dim query As String = String.Format("SELECT T0.[code],
> T0.[Name],T0.[Rate] FROM OSTA T0 WHERE T0.[code] ='{0}'", tipo)
>
> *** *** *** *** *** *** rs.DoQuery(query)
>
> *** *** *** *** *** *** Dim _impuesto As New Impuesto
>
> *** *** *** *** *** *** While Not rs.EoF
> *** *** *** *** *** *** *** *** _impuesto.Codigo = rs.Fields.Item(0).Value
> *** *** *** *** *** *** *** *** _impuesto.Nombre = rs.Fields.Item(1).Value
> *** *** *** *** *** *** *** *** _impuesto.Valor = rs.Fields.Item(2).Value
>
> *** *** *** *** *** *** *** *** rs.MoveNext()
> *** *** *** *** *** *** End While
>
> *** *** *** *** *** *** Return _impuesto
> *** *** *** *** Finally
> *** *** *** *** *** *** '_company.Disconnect()
> *** *** *** *** End Try
> *** *** End Function
> Thank you,


Claudia,

¿SAPbobsCOM.Company?, ¿es una conexión a SQL Server 2005?
Por los nombres de los parámetros, diría que hereda o usa un
System.Data.SqlClient.SqlConnection.

Si es así, tienes que hacer justo lo contrario, las conexiones las
debes cerrar lo antes posible, aunque suene contraproducente.
O sea, que si tu ASPX necesita 5 Selects para poblar controles, pues
cada Select debe abrir y cerrar la conexión al SQL Server.

Obviamente, no puedes hacer esto si estás en medio de una Transaccion,
en este caso tienes que mantener la misma conexión para toda la
transacción.

Esto es algo que hace tiempo que aprendimos, el cambio fué
espectacular, leete este par de enlaces para una explicación
detallada.
http://blogs.msdn.com/angelsb/archive/2004/08/25/220333.aspx
http://blogs.msdn.com/angelsb/archive/2004/09/20/231963.aspx

Saludos,

Paco Ferre
Responder Con Cita
  #7 (permalink)  
Antiguo 11-09-2008, 12:59:23
Paco
 
Mensajes: n/a
Predeterminado Re: Consideraciones del Patron Singleton

On 5 sep, 22:58, Claudia <Clau...***discussions.microsoft.com> wrote:
> Hola:
>
> He implementado el patron singleton en la capa de datos de mi aplicacion
> n-capas, con el objetivo de crear una unica instancia de la conexion a SAP BO
> dado que cuando necesito obtener alguna informacion desde algun metodo laDAL
> se realizan los siguientes pasos :
>
> 1. Se abre una conexion con SAPBO
> 2. Se obtiene la informacion requerida por ejemplo datos de un cliente o
> lista de precios.
> 3. Se cierre la conexion con SAPBO.
>
> El incoveniente es que por cada conexion a SAPBO este se demora un lapzo
> tiempo considerable por lo tanto pienso que el patron singleton me podria
> ayudar a mejorar los tiempos dado que solo se conectara una sola y las
> proximas veces me retornara el objeto conectado. Aunque yo le he probado en
> ambiente de desarrollo osea en mi pc y este cumple con su objetivo, aunque me
> han saltado unas dudas con respecto su implementacion en ambiente de
> produccion.
>
> - Estoy haciendo lo corrrecto ?
> - En produccion no habria ningun tipo de problemas ?
> - Que consideraciones deberia tener al respecto.
> - Cuando terminaria la conexion con SAP BO?
> - Cuando la el cliente es una app. web deberia usar el httpcontext?. Segun
> este articulo (http://dotnet.org.za/eduard/archive/...7/07/2609.aspx) si
> deberia pero no funciona cuando uso el httpcontext.
>
> Ademas que las App. UI podrian ser tanto web como windows, ojo que yo no
> deseo que toda mi DAL sea un singleton si no mas bien la clase que se conecta
> a SAPBO tal y como se muestra a continuacion:
>
> DAL
> -- MySingleton
> -- ConexionDA -> obtiene el datacontext
> -- OrderDA -> usa ConexionDA
> -- CustomerDA -> usa ConexionDA
> -- SAPBO_DA -> metodos que obtienen info de SAPBO usando MySingleton
> -- ...
>
> BLL -> used DAL
> -- OrderBL
> -- CustomerBL
> -- SAPBO_BL
> -- ...
>
> WIN_UI -> usa BLL
> WEB_UI -> usa BLL
>
> Singleton :
> Public Class mySingleton
>
> *** *** Private Shared oInstance As mySingleton
> *** *** Private Shared _company As New SAPbobsCOM.Company
>
> *** *** Protected Sub New()
> *** *** *** *** Dim retCode, errCode As Integer
> *** *** *** *** Dim errMSG As String = ""
>
> *** *** *** *** With _company
> *** *** *** *** *** *** .Server = ConfigurationManager.AppSettings("Server_SBO").ToS tring
> *** *** *** *** *** *** .DbServerType =
> CType(ConfigurationManager.AppSettings("DbServerTy pe_SBO"), Integer) '4 ->
> BoDataServerTypes.dst_MSSQL2005
> *** *** *** *** *** *** .UseTrusted = False
> *** *** *** *** *** *** .CompanyDB =
> ConfigurationManager.AppSettings("CompanyDB_SBO"). ToString
> *** *** *** *** *** *** .DbUserName =
> ConfigurationManager.AppSettings("DbUserName_SBO") .ToString
> *** *** *** *** *** *** .DbPassword =
> ConfigurationManager.AppSettings("DbPassword_SBO") .ToString
> *** *** *** *** *** *** .UserName =
> ConfigurationManager.AppSettings("UserName_SBO").T oString
> *** *** *** *** *** *** .Password =
> ConfigurationManager.AppSettings("Password_SBO").T oString
> *** *** *** *** *** *** .language =
> ConfigurationManager.AppSettings("Language_SBO").T oString '3 ->
> SAPbobsCOM.BoSuppLangs.ln_English
>
> *** *** *** *** *** *** retCode = _company.Connect
>
> *** *** *** *** *** *** If retCode > 0 Then
> *** *** *** *** *** *** *** *** _company.GetLastError(errCode, errMSG)
>
> *** *** *** *** *** *** *** *** Throw New Exception("Connection Failed - " & errMSG)
> *** *** *** *** *** *** End If
> *** *** *** *** End With
> *** *** End Sub
>
> *** *** Public Shared Function Instance() As mySingleton
> *** *** *** *** 'If HttpContext.Current Is Nothing Then
> *** *** *** *** If oInstance Is Nothing Then
> *** *** *** *** *** *** oInstance = New mySingleton()
> *** *** *** *** End If
> *** *** *** *** Return oInstance
> *** *** *** *** 'End If
>
> *** *** *** *** 'If Not HttpContext.Current.Items.Contains("mySingleton")T hen
> *** *** *** *** ' *** ***HttpContext.Current.Items.Add("mySingleton", NewmySingleton())
> *** *** *** *** 'End If
>
> *** *** *** *** 'Return DirectCast(HttpContext.Current.Items("mySingleton" ),
> mySingleton)
> *** *** End Function
>
> *** *** Public ReadOnly Property GetConnection() As SAPbobsCOM.Company
> *** *** *** *** Get
> *** *** *** *** *** *** Return _company
> *** *** *** *** End Get
> *** *** End Property
> End Class
>
> Method:
>
> Public Function ObtenerImpuesto(ByVal tipo As String) As Impuesto
> *** *** *** *** Dim _company As SAPbobsCOM.Company
>
> *** *** *** *** Try
> *** *** *** *** *** *** '_company = Connect()
> *** *** *** *** *** *** Dim objConexion As mySingleton = mySingleton.Instance
> *** *** *** *** *** *** _company = objConexion.GetConnection
>
> *** *** *** *** *** *** Dim rs As SAPbobsCOM.Recordset
> *** *** *** *** *** *** rs = _company.GetBusinessObject(BoObjectTypes.BoRecords et)
>
> *** *** *** *** *** *** Dim query As String = String.Format("SELECT T0.[code],
> T0.[Name],T0.[Rate] FROM OSTA T0 WHERE T0.[code] ='{0}'", tipo)
>
> *** *** *** *** *** *** rs.DoQuery(query)
>
> *** *** *** *** *** *** Dim _impuesto As New Impuesto
>
> *** *** *** *** *** *** While Not rs.EoF
> *** *** *** *** *** *** *** *** _impuesto.Codigo = rs.Fields.Item(0).Value
> *** *** *** *** *** *** *** *** _impuesto.Nombre = rs.Fields.Item(1).Value
> *** *** *** *** *** *** *** *** _impuesto.Valor = rs.Fields.Item(2).Value
>
> *** *** *** *** *** *** *** *** rs.MoveNext()
> *** *** *** *** *** *** End While
>
> *** *** *** *** *** *** Return _impuesto
> *** *** *** *** Finally
> *** *** *** *** *** *** '_company.Disconnect()
> *** *** *** *** End Try
> *** *** End Function
> Thank you,


Claudia,

¿SAPbobsCOM.Company?, ¿es una conexión a SQL Server 2005?
Por los nombres de los parámetros, diría que hereda o usa un
System.Data.SqlClient.SqlConnection.

Si es así, tienes que hacer justo lo contrario, las conexiones las
debes cerrar lo antes posible, aunque suene contraproducente.
O sea, que si tu ASPX necesita 5 Selects para poblar controles, pues
cada Select debe abrir y cerrar la conexión al SQL Server.

Obviamente, no puedes hacer esto si estás en medio de una Transaccion,
en este caso tienes que mantener la misma conexión para toda la
transacción.

Esto es algo que hace tiempo que aprendimos, el cambio fué
espectacular, leete este par de enlaces para una explicación
detallada.
http://blogs.msdn.com/angelsb/archive/2004/08/25/220333.aspx
http://blogs.msdn.com/angelsb/archive/2004/09/20/231963.aspx

Saludos,

Paco Ferre
Responder Con Cita
 
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consideraciones para un manejador de Errores Armin Saez Newsgroup microsoft.public.es.vb 5 21-02-2008 17:01:41
patron Singleton Edilberto Arteaga Lopez Newsgroup microsoft.public.es.csharp 4 23-11-2007 19:56:40
Consideraciones para servidor final :-S Marcos Galaviz Newsgroup microsoft.public.es.asp 2 21-03-2007 19:43:54
Consideraciones en server final VS 2005 y ASP.NET Marcos Galaviz Newsgroup microsoft.public.es.vs 0 21-03-2007 18:40:13
Consideraciones sobre money 2004 Ismael Newsgroup microsoft.public.es.money 66 17-01-2004 21:36:46





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.