>Grazie mille per l'aiuto
>Un'ultima cortesia: dove posso trovare un piccolo esempio di
>utilizzo di Code-First? In giro trovo solo piccoli pezzi di codice,
>ma io vorrei vedere un esempio completo per capire come organizzare
>le classi, se devo definire le funzioni nelle classi che uso
>per creare il db o se devo creare altre classi dove definisco
>gli stessi attributi.
l'esempio su www.asp.net lo trovo molto completo e semplice:
http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
ad un certo punto c'è la sezione dove inizia a creare il modello, che sarà poi la base che viene utilizzata da una classe speciale DbContext, che poi è quella che inizializza e crea l'effettivo db dato un modello a classi; ad ogni modo ti consiglio proprio di seguire tutta quella guida dall'inizio alla fine, e secondo me ti aiuta proprio bene a capire come funziona:
codice preso direttamente dal link:
classe per il modello che definisce uno studente
using System;
using System.Collections.Generic;
namespace ContosoUniversity.Models
{
public class Student
{
public int StudentID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
public virtual ICollection<Enrollment> Enrollments { get; set; }
}
}
classe per la definizione, l'inizializzazione e la creazione del database (DbContext)
using ContosoUniversity.Models;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
namespace ContosoUniversity.DAL
{
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
public DbSet<Enrollment> Enrollments { get; set; }
public DbSet<Course> Courses { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
}
>Dove posso trovare un esempio di progetto realizzato a componenti
>(SOA)? Ho sempre voluto realizzare un'applicazione in questo
>modo.
è difficile trovare esempi completi, ma sopratutto un solo esempio, perchè ogni realtà SOA potrebbe avere sviluppi diversi una dall'altra, e garantire tutti i principi fondamentali:
http://www.soainstitute.org/resources/articles/four-tenets-service-orientation
se dovessi riassumere il termine SOA, la descriverei come un termine generico per definire un architettura loosely-coupled (disaccoppiata) che sia in grado di soddisfare le esigenze di business dell'azienda, quindi capisci bene che l'implementazione può variare molto, potrebbe ad esempio essere implementata con un serie di servizi WCF connessi tra loro (anche se non basta avere dei servizi per definirsi SOA, ma i componenti non devono condividere logiche di business, ma essere orchestrate da un altro attore), ma in alcuni casi, specialmente nell'enterprise, si preferisce un sistema di messaggistica a code gestite real-time, affidabile, scalabile e ad alta disponibilità, (msmq, rabbitmq, zeromq, ...) che possa ancora meglio disaccoppiare i componenti, garantendo alte prestazioni, nonostante l'aggiunta di un certo overhead computazionale.
al momento un progetto completo SOA potrebbe essere quello distribuito della Microsoft, che è attuale e completo in ogni sua parte:
http://msdn.microsoft.com/en-us/vstudio/bb499684.aspx
i link di mike hadlow, che ti ho passato nel post precedente, spiegano come ha creato un applicazione enterprise in visione SOA sapendo di dovere scalare per decine di grossi clienti un flusso di richieste importante, e con logiche di business personalizzate per ogni cliente, ma di cui voleva potere anche estrarre le logiche base ed avere a tutti gli effetti un core product, in modo che le personalizzazioni per lo specifico cliente sia codice scritto una sola volta per il cliente stesso, ma che non sia codice dupplicato, il codice in comune tra più clienti, diventa parte del prodotto principale (core product), ed è isolato nei core components attraverso servizi che comunicano sfruttando un service bus implementato con RabbitMQ (come sistema di messaggistica) + EasyNetQ (come framework sopra alle API base di rabbitMq su protocollo AMQP) scambiandosi messaggi via rete in HTTP:
http://mikehadlow.blogspot.it/2011/09/some-thoughts-on-service-oriented.html
http://mikehadlow.blogspot.co.uk/2011/09/some-thoughts-on-service-oriented_27.html
-------------------------------------------------------
Michael Denny
Lead Software Developer & Solutions Architect
http://blogs.dotnethell.it/Regulator/