Curso sobre programacion c# y Visual Studio 2019. En este blog veremos tutoriales para aprender a crear nuestras aplicaciones de consola,aplicaciones web, SQL , Tensorflow y Machine Learning
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a continuar con los servicios windows. Hemos
implementado una mínima lógica en el servicio windows para probar que una
vez instalado en nuestra máquina ejecuta el código y escribe en un fichero en disco cada x segundos.
-Los servicios windows
son una buena solución para ejecutar tareas que no requieran interfaz
gráfica, ni ninguna interacción con los usuarios y que tengan como
objetivo realizar tareas en un segundo plano.Pero tienen el problema que no se se depurar dando al botón de "Play" del proyecto, aunque si se puede depurar un servicio de Windows si se inicia el servicio y se asocia el depurador al proceso del servicio. En el video podéis ver como lo asocio:
Como resumen de estos tres capítulos del curso donde hemos trabajado con un servicio windows os dejo lo más importante:
Al compilar un servicio windows se genera un ejecutable .exe.
Se puede instalar en un sistema windows con la herramienta InstallUtil.exe del framework de microsoft.
Se puede depurar después de instalarlo asociandolo al proceso correspondiente, desde Visual Studio.
Os dejo el código del ejemplo una vez corregido:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ServciosWindowsPrueba
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
var worker = new Thread(Iniciar);
worker.Name = "Prueba";
worker.IsBackground = false;
worker.Start();
}
void Iniciar()
{
Log l = new Log();
int milisegundos = 15000;
try
{
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a continuar con los servicios windows. Vamos a implementar una mínima lógica en el servicio windows para probar que una vez instalado en nuestra máquina ejecuta el código de la misma manera que otras aplicaciones que hemos desarrollado aquí anteriormente, como por ejemplo las aplicaciones de consola.
-Los servicios windows son una buena solución para ejecutar tareas que no requieran interfaz gráfica, ni ninguna interacción con los usuarios y que tengan como objetivo realizar tareas en un segundo plano.En nuestor ejemplo simplemente vamos a hacer que una vez arrancado el servcio escriba en un fichero en disco cada x segundos.En el video podéis ver el ejemplo.
- En esta ocasión os dejo el código de la clase principal, que se inicia al arrancar el servicio.La parte del código que escribe en un fichero en disco os la dejo a vosotros. De todas formas en entradas anteriores del blog hay ejemplos.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ServciosWindowsPrueba
{
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
var worker = new Thread(Iniciar);
worker.Name = "Prueba";
worker.IsBackground = false;
worker.Start();
}
void Iniciar()
{
Log l = new Log();
int milisegundos = 15000;
try
{
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a empezar con los servicios windows. En ocasiones, puede
ser que necesitemos cierta funcionalidad
que no necesite una interfaz gráfica y que este siempre corriendo en un segundo plano, para este caso los servicios windows puede ser una buena solucion.
- En el video os muestro como crear un proyecto del tipo windows service, como agregarle de una manera sencilla la capacidad para ser instalado en una máquina y como instalarlo desde línea de comandos con la herramienta installUtil.exe, que tenemos disponible en los diferentes frameworks de Microsoft.NET.
- Como habéis observado en el video una vez compilado el proyecto nos genera un fichero con extensión exe. Este fichero es el que debemos instalar mediante la herramienta installUtil.exe, siguiendo los siguientes pasos:
Primero abrimos un cmd con permisos de administrador.
Una vez tenemos hecho esto nos vamos a la ruta donde esta la herramienta de instalación que nos proporciona el framework de .net, en nuestro caso esta aquí:
3. Una vez estemos en la ruta donde esta la herramienta installUtil ejecutamos una sentencia similar a la siguiente para instalar el servicio en nuestra máquina:
installutil ruta_ejecutable\nuestroproyecto.exe
* Si queremos desinstalar el servicio basta ejecutar la misma senetecia pero añadiendo /u al final.
Os dejo además un par de enlaces a sites de Microsofto con más información sobre los servicios:
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver los controles de usuario. En ocasiones, puede ser que necesitemos cierta funcionalidad
que no está incluida en los controles que vienen por defecto incluidos en Visual Studio. En estos casos, podemos crear nuestros propios controles agregando a nuestro proyecto un objeto ascx.
- Un control de usuario es similar a una página Web (archivo .aspx) e incluye una página de interfaz de usuario y
código. El proceso de creación del control de usuario es muy similar al
proceso de creación de una página ASP.NET, sólo que al final se agregan
el formato y los controles secundarios necesarios.
- En el video os dejo un ejemplo sobre como crear un control ascx y como agregar a una página aspx:
- Un control de usuario se diferencia de una página Web ASP.NET en los siguientes aspectos:
La extensión de nombre de archivo es .ascx.
Los controles de usuario no se pueden ejecutar como archivos independientes.
El control de usuario no contiene elementos html, body o form. Estos elementos deben estar en la página de alojamiento.
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver un control de uso común en muchas de las páginas web
que utilizamos habitualmente. Este control es el Chart, que es
un componente que se utiliza para mostrar gráficos en pantalla de uan manera fácil.
- El control de servidor Chartpermite crear páginas ASP.NET que incluyan gráficos de análisis estadístico. Algunas de las características que admite el control Chartson las siguientes:
Series de datos, áreas de gráfico, ejes, leyendas, etiquetas y títulos.
Enlace de datos.
Manipulación de datos, como copiar, dividir, combinar, alinear, agrupar, ordenar, buscar y filtrar.
Fórmulas estadísticas y financieras.
Apariencia avanzada de los gráficos, como 3D, suavizado de contorno, iluminación y perspectiva.
- En el siguiente video os muestro como enlazar el control Chart a un procedimiento almacenado de nuestra base de datos. Permite mostrar en pantalla gráficos enlazados a múltiples origenes de datos, en nuestra caso utilizamos nuestra base de datos de pruebas:
- Os dejo un enlace a la página de Microsoft con más información este control:
- En este capítulo del curso de programación en c# con visual studio
2017,vamos a ver un control de uso común en muchas de las páginas web
que utilizamos habitualmente. Este control es el ListView, que es un componente que muestra los valores de un origen de datos previamente seleccionado ,mediante plantillas definidas por el usuario.
- En esta ocasión vamos a cargar los datos del control utilizando el asistente que trae Visual Studio 2017. Este asistente nos permite seleccionar un origen de datos que puede ser un base de datos SQL o un fichero XML entre otros. En nuestro ejemplo vamos a enlazar el control a un procedimiento almacenado que nos devuelve el listado de paises y su código correspondiente.
- Una vez enlazado a un origen de datos como habéis visto en el video, es posible utilizar una de las plantillas predefinidas para visualizar los datos como más nos interesen.
- Como en el resto de controles de .NET también es posible editar las propiedades y eventos del control desde el fichero .cs en el que este alojado el control.
- Os dejo un enlace a la MSDN con más información y el código de la página aspx donde hemos alojado nuestro control de pruebas:
42-. Aplicaciones web.Guardar Pedidos.Carrito de compra(5)
- En este capítulo del curso de programación en c# con visual studio
2017,vamos afinalizar nuestro ejemplo del carrito de compra.Para ello vamos guardar en nuestra base de datos los pedidos que un usuario previamente logado en la web hace una vez desde la página.
- Os dejo un una imagen con el diseño de las tablas de nuestra base de datos ya que hemos añadido el campo cantidad a nuestra tabla Pedidos_Lineas:
- Como podéis ver en el video siguiente, además de un botón para finalizar la compra hemos añadido un botón para limpiar nuestro carrito de la compra.El botón finalizar compra llama a un procedimiento almacenado que guarda en nuestra base datos el pedido con todos sus productos asociados. El botón limpiar carro borra todos los articulos que tengamos en el carrito.
- Os dejo el código de lo visto en el video y un enlace a Microsoft para que sepáis cuando usar la función identity de SQL.
Procedimento almacenado SQL:
ALTER PROCEDURE [dbo].[GuardarPedido]
@idUsuario int ,
@Lista AS dbo.ListaProductosCompra READONLY
AS
BEGIN
DECLARE @TablaTemp2 TABLE(IdTemp int NOT NULL, cantidad int)
INSERT INTO @TablaTemp2 SELECT idprodcuto,cantidad FROM @lista
--INSERTAMOS EN TABLA PEDIDOS
DECLARE @idpedidoAux int
INSERT INTO dbo.Pedidos (IdUsuario,FechaPedido) VALUES (@idUsuario ,GETDATE() )
SET @idpedidoAux = @@IDENTITY
--INSERTAMOS EN TABLA LINEAS PEDIDOS
INSERT INTO Pedido_Lineas
SELECT @idpedidoAux,* FROM @TablaTemp2
END
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace GestionVarios
{
public partial class Pedidos : System.Web.UI.Page
{
private ArrayList productosSeleccionados = new ArrayList();
private void CargarDatosProducto(string idProducto)
{
SqlConnection Con = new SqlConnection(ConfigurationManager.ConnectionStrings["EmpresaConnectionString"].ConnectionString);
private void CargarListaProducto(DataTable productos)
{
SqlConnection Con = new SqlConnection(ConfigurationManager.ConnectionStrings["EmpresaConnectionString"].ConnectionString);