Foros del Web » Programación para mayores de 30 ;) » .NET »

Inlcudes en ASP.NET

Estas en el tema de Inlcudes en ASP.NET en el foro de .NET en Foros del Web. Hola, acostumbrado estoy al código estructural como ASP y PHP, donde tenemos un archivo .asp y archivos tipo libreria como .inc.asp .lib.asp, etc., como los ...
  #1 (permalink)  
Antiguo 14/06/2006, 16:00
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Inlcudes en ASP.NET

Hola, acostumbrado estoy al código estructural como ASP y PHP, donde tenemos un archivo .asp y archivos tipo libreria como .inc.asp .lib.asp, etc., como los quieramos nombrar, entonces...

En ASP tengo:

a) default.asp

b) /lib/Comun.lib.asp

c) Entonces de default.asp hago un include de Comun.lib.asp y asi puedo usar N funciones en N .asp diferentes.

Bien, mi pregunta, es como se hace en ASP.NET para trabajar de la manera más eficiente con librerias.

Algo como:

a) default.aspx

b) default.aspx.vb

c) /lib/Comun.lib.aspx

d) Donde default.aspx ó default.asox.vb hacen un include de Comun.lib.aspx

Aquí... es mejor usar archivos como /lib/Comun.lib.aspx, o sería mejor siempre tener todo en DLL tipo libreria, como....

e) /lib/Comun.lib.dll el cual tenga las funciones que necesito ? y que pasa cuando necesito N dll los cuales son compartidos para varias paginas.

En fin, cuales son las maneras, y de todas cual seria la mejor manera para trabajar con librerias, y además, cual sería la mejor estructura a usar para una librería ???
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #2 (permalink)  
Antiguo 14/06/2006, 18:52
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Hola Neuron, si son las funciones del tipo que no encajan en ningún objeto en particular, yo te sugeriría que crees una clase adicional, llamada libreria o como te resulte mejor semánticamente, después invocas los métodos de ellas desde cualquier parte de tu aplicación.

Explico un poco mejor como lo trabajo yo...

Tengo un administrador de contenidos, estos contenidos son

Páginas
Eventos

Cada uno de estos, en realidad es un objeto cierto?

Por lo tanto tengo los siguientes archivos:

Pagina.cs
Evento.cs

Los cuales tienen a manera no limitativa los siguientes métodos:

Add()
Edit()
Delete()
Get()

Con sus sobrecargas si es necesario; Ahora, lo que hago regularmente, es que va a haber funciones que por su naturaleza no sean ni de calendario, ni de página, supongamos un método que le da un cierto formato a una cadena. Entonces este método lo pongo dentro de una clase que llamo Helper, de esta manera está disponible por todos lados de mi aplicación, si a esto te preocupas por crear métodos estáticos, pues mejor, pues no sugieren explícitamente una instancia de la clase, de tal forma que puedes hacer:

Helper.FormatPhone(variable);

Basta con que dicha clase se encuentre dentro de tu espacio de nombres.

Una de las cosas que más me costó trabajo de la migración a .NET fué precisamente pensar un poco más orientado a objetos, te sugiero también que te olvides de como lo hacías en ASP ;)

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 15/06/2006, 03:45
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Sencillo y claro.
Buen resumen u_goldman. Opino que es la mejor forma de trabajar el asunto.
Hace un par de dias que descubrí esto del shared. Genial también!
Saludos.
__________________
..:: moNTeZIon ::..
  #4 (permalink)  
Antiguo 15/06/2006, 15:37
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Me perdi en algo ahii...

Entonces, pensemos en esto:

-- Sistema para desplegar fotos de un album --

1. Pagina que muestra un album (default.asp)

2. Pagina donde editas el album (editarAlbum.asp)

Ambas paginas necesitan de funciones comunes como:

function ObtenerInfoAlbumesDeUsuario(x, y, z)

La cual comunmente la ponemos en un archivo libreria que se jala con un include virtual... etc.

Eso, pasarlo a tema de .NET, sería como:

1. default.aspx
1.1 default.aspx.vb

2. editarAlbumes.aspx
2.1 editarAlbumens.aspx.vb

Entonces, creo un archivo con clases (objetos, funciones, etc) como:

3. AlbumesFunciones.aspx.vb ó AlbumesFunciones.vb ???

Bien, entonces, para que 1.1 y 2.1 puedan usar 3, que tengo que hacer en el código, o bien en cada uno de ellos ?

Dicen del nombre de espacio, entonces, en nameespace de 1.1, 2.1 y 3, ahi tengo que poner el mismo espacio, como: "AlbumesWork" ????

Bien, si hago eso, entonces, como hago que una segunda libreria tambien funcione ahi, como:

4. CadenasFunciones.aspx.vb ... en este punto, tambien debo poner el mismo nombre de espacio para esta nueva libreria.

Claro, internamente no son funciones, son objetos, que luego puedo usar como:

obj1 = new CadenasFunciones
obj2 = new AlbumesFunciones

varTemp = obj1.ObtenerInfoAlbumesDeUsuario(x, y, z)

Bien, eso estaría bien, pero como ahora tengo N librerias que cualquier archivo puede jalar, sin ser exclusivos basado en su nameespace?

O, siempre lo mejor es que todo mi sitio WEB tenga el mismo NameSpace? pensando en paginas como forosdelweb.com

Gracias.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #5 (permalink)  
Antiguo 15/06/2006, 16:44
Avatar de moNTeZIon  
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 3 meses
Puntos: 9
Hola Neuron,
Respecto al punto 3, pienso que si. Tendrías que agregar un fichero de clase, en tu caso AlbumesFunciones.vb, por ejemplo. En caso qu se trate de la version 2.0 tendrás que meterlo en la carpeta App_Code.
Se trata de un unico fichero, no hay aspx, porqué no es ningun webform. Es una clase, y ya, de por si, podrás usarla en tu proyecto. De más, puedes incluirla dentro de un namespace, con lo que tendrás que importarlo en tus páginas, o escribirlo antes de llamar a la clase.
En esta clase irían todas la propiedades y funciones respecto a los albumes, como yo lo veo.

El punto 4, es como dices. Seria crear otra clase igual que antes. Si quieres la metes en el mismo espacio de nombres, y si no en otro, o en ninguno.

El ejemplo de uso que pones creo que está más o menos bien. En VB sería algo así:
Código:
Dim obj1 As new CadenasFunciones
Dim obj2 As new AlbumesFunciones

Dim varTemp As ¿String? = obj1.ObtenerInfoAlbumesDeUsuario(x, y, z)
Por ejemplo...

O en caso que hayas metido las clases en un mismo espacio de nombres:
Código:
Dim obj1 As new miNameSpace.CadenasFunciones
Dim obj2 As new miNameSpace.AlbumesFunciones

Dim varTemp As ¿String? = obj1.ObtenerInfoAlbumesDeUsuario(x, y, z)
Saludos.
__________________
..:: moNTeZIon ::..

Última edición por moNTeZIon; 15/06/2006 a las 16:50
  #6 (permalink)  
Antiguo 16/06/2006, 15:27
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Gracias.

Bien, entonces, no es oblitgatorio usar el mismo nombre de espacio, lo cual es bueno, entonces...

Solamente lo ponto en esa carpeta y listo, ahorita, bien, como le digo a mi default.aspx.vb que debe cargar /App_Code/AlbumesFunciones.vb

?
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #7 (permalink)  
Antiguo 16/06/2006, 17:18
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Bien...

Otra pregunta... en ASP yo podia hacer:

Response.write strHtmlCode

Entonces, todo el código de Html se interpretaba correctamente por el usuario, ahora, en .NET también puedo hacerlo, sin embargo los controles de ASP.NET no se interpretan, sino que el código se mira directo en el cliente al hacer un "Ver Código Fuente"

Saben como lograr eso, es decir, seguir manteniendo en un archivo todo el html aun con los controloles de ASP.NET como:

<form id=form1 runat=server><asp:label id=label1 />

Donde, si hago un response.write como:

Response.write "<form id=form1 runat=server><asp:label id=label1 />"

Este codigo sea interpretado correctamente y no se ponga directo en el cliente ?

Espero haberme explicado...

Gracias.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
  #8 (permalink)  
Antiguo 17/06/2006, 19:14
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 4 meses
Puntos: 98
Pero para qué querrías escribir HTML de esta manera?
A mi me pasó cuando hice un formulario gigante, no lo utilicé como un webform sino hice una especie de control con todo el HTML y el procesamiento como un ASP normal(por cierto fué una lata), después tuve que escribir javascript dinámico pues no estaba utilizando validators, así que utilicé un literal control, pero la verdad al final no quedé satisfecho con esto, a lo mejor si explicas que es lo que quieres hacer te podemos dar una mano con otro approach.


Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #9 (permalink)  
Antiguo 15/07/2008, 12:45
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Respuesta: Inlcudes en ASP.NET

Saludos:

Tengo la misma pregunta ligada en el tema:

http://www.forosdelweb.com/f29/agreg...cadena-605873/

Se trata de lo mismo, como hacer una especie de Response.Write strASPCode

Gracias.
__________________
NeuronaNet.com... la idea correcta.
http://www.NeuronaNet.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:23.