MSDN Magazine – Microsoft Research – F#

Despues de hablar de C-Omega hace un tiempo, leyendo la MSDN Magazine de este mes, me encuentro con este proyecto de Microsoft Research, llamado F#. Este proyecto, se suma a los tantos que hay en este momento en microsoft, para evaluar nuevas caracteristicas y posibilidades para las nuevas versiones de los productos que conocemos actualmente.
Sin embargo, es la primera vez que veo que se le hace mencion publicamente, en un medio tan masivo como la MSDN Magazine. Desde hace un tiempo, podemos bajarnos la version completa de la revista en formato CHM, de forma completamente gratuita, ademas de poder leerla en Internet.
Si no la conocen es un buen momento para subscribirse o tan solo acordarse de leer mensualmente esta publicacion, mas que completa de tecnologia Microsoft para Desarrolladores.
 
Advertisements

Visual Studio 2005 en 64-bit

Otro capitulo interesantisimo de MSDN TV.
Larry Sullivan nos muestra como corre el VS2005 sobre una plataforma de 64-bit. .Net se adapta automaticamente a la nueva plataforma aprovechando la potencia que esta nos brinda. Hoy podemos programar aplicaciones en 32-bit y luego correrlas en 64-bit sin modificaciones sobre la app.


More Info –> http://msdn.microsoft.com/msdntv/episode.aspx?xml=episodes/en/2005062364bitLS/manifest.xml

Enterprise Library – Referenced assembly ‘Interop.MSDASC’ does not have a strong name

Buenas …

Compilando la nueva version de Enterprise Library de Julio de 2005, con un StrongName. Me surgio una excepcion en uno de los proyectos, ya que usaba un Interop de un componente Com.

  Referenced assembly ‘Interop.MSDASC’ does not have a strong name

Antes de generar el Interop a mano con la herramienta tlbimp.exe, decidi revisar sino existia otra solución. Para mi sorpresa, hay una solución en los proyectos de C#, donde si uno pone en las propiedades del proyecto, el path del archivo de StrongName, automaticamente se firman los Interop generados. Pero, l amentablemente esto no se puede hacer con Visual Basic .Net.

Para mas información ver http://support.microsoft.com/Default.aspx?kbid=313666.


Si un proyecto .NET de C# de Visual C hace referencia al ensamblado de interoperabilidad de COM, el ensamblado de interoperabilidad de COM se genera para usted cuando hace referencia a la biblioteca de vínculos dinámicos COM (DLL). Puede especificar a continuación el archivo contenedor de claves de ensamblado en las propiedades de proyecto de Visual C:

  1. En Microsoft Visual Studio .NET, abra las propiedades del proyecto de Visual C en el que desea hacer referencia al componente COM.
  2. En el árbol, haga clic en Propiedades comunes y a continuación, haga clic en General.
  3. En el campo Wrapper Assembly Key File , agregue el archivo de claves.
  4. Vuelva a generar el proyecto.

Announcement: Enterprise Library June 2005 now available!

Enterprise Library June 2005 now available!
Enterprise Library June 2005 now available!(7/2/2005 10:24:14 AM)
The June 2005 release is a minor update to the original January release. It incorporates the patches and extensions previously released to the community, and also includes miscellaneous minor bug fixes. Although this release is still designed for .NET Framework 1.1, it is now possible to use this with .NET Framework 2.0 beta 2 – see the included Readme file for details.

Bill Gates at Live8

Me llamo la Pao y me dijo:

Ese no es Bill Gates ??

efectivamente, estaba en el concierto Live8
apoyando a la causa del concierto y presentando a Dido !!

Good One !!


Cada día, 30.000 niños mueren, innecesariamente, de extrema pobreza.

El día 6 de julio, por fin tendremos la oportunidad de detener esta vergonzosa estadística.

A 8 líderes mundiales, reunidos en Escocia para la Cumbre del G8, se les presentará un plan factible para duplicar la ayuda, condonar la deuda y aprobar unas leyes comerciales justas. Si estos 8 hombres se ponen de acuerdo, nos convertiremos en la generación que logró la erradicación de la pobreza.

Pero sólo lo harán si se lo pide un número suficiente de personas.

Por ese motivo estamos organizando Live 8. 5 conciertos, 100 artistas, un millón de espectadores, 2.000 millones de telespectadores y 1 único mensaje… Conseguir que esos 8 hombres reunidos en una sala detengan la pesadilla que supone que 30.000 niños mueran cada día de extrema pobreza.

¡No queremos su dinero, le queremos a usted! 

.NET Rocks! – Rob Howard on the History of ASP.NET

Muy buen video de casi 2 horas de duracion, con un poco de la historia de Asp.Net. En particular, deja notar el camino que se esta por seguir y como se ha generado una nueva comunidad en torno a http://www.asp.net, para obtener nuevos requerimientos y un feedback mas profundo por parte de los desarrolladores.


Quick Description

Rob Howard drops in to talk to Carl and Richard about ASP.NET past, present, and future. Rob shares his insights as well as a few stories from his days on the ASP.NET team at Microsoft. He also talked about his current gig with Telligent Systems and what excites him the most about ASP.NET 2.0.

 

http://www.microsoft.com/downloads/details.aspx?FamilyID=e92e5384-9f7e-4900-838d-2a03d7f0f6b7&DisplayLang=en 

Microsoft WS-I Basic Security Profile 1.0 Sample Application


Overview

The Microsoft WS-I Basic Security Profile 1.0 Sample Application is a preview release of the work being done by the WS-I Sample Application Working Group members to demonstrate interoperability of secure Web services. This release includes the Sample Application, which was developed using the .NET Framework version 1.1 and Microsoft Web Services Enhancements (WSE) 2.0. The accompanying documentation describes the design and implementation of the Sample Application.
 

http://www.microsoft.com/downloads/details.aspx?FamilyID=40e3d4c5-2105-47f1-ba26-9e4c29ba6990&DisplayLang=en 

Windows Desktop Search Extensibility for Partners (Beta)

News para el FileRules entre otros, Microsoft ha liberado la documentacion de la interfaz de manejo del Desktop Search. Por lo que podremos agregar nuestros contenidos personalizados al mismo.

Mas info –> http://addins.msn.com/devguide.aspx#WindowsDesktopSearchApi
–> http://desktop.msn.com/
–> http://g.msn.com/8SEURL/enusDownloadSuiteURLbdy_dshome

Remoting Helper


Usualmente cuando utilizamos componentes y los publicamos con Remoting, se dificulta mantener una configuracion coherente de las partes del sistema. He visto lugares donde se utiliza un archivo Remoting.Config para guardar la configuracion de los componentes, y luego dentro de otro archivo .config, se guarda casi el mismo dato para poder usarlo desde la aplicacion.
 
Una de las tecnicas aconsejdas por Microsoft y que por lo general da muy buen resultado, es guardar la configuracion en un archivo .Config (Remoting.Config por ejemplo) y al momento de inicializar la aplicacion cargar dinamicamente esta configuracion. En el caso de una aplicacion Windows, a esto lo podemos hacer en el evento Load del Form de la siguiente manera
 

Private Sub frmPrincipal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  ‘ carga la configuracion de los componentes de Remoting

  Dim remFile As String = "Remoting.config"

  System.Runtime.Remoting.RemotingConfiguration.Configure(remFile)

End Sub


 
El archivo Remoting.Config podria contener la siguiente informacion
 

<

configuration>

  <system.runtime.remoting>

  <application>

  <channels>

    <channel ref="http" useDefaultCredentials=’true’>

    <clientProviders>

      <formatter ref="binary"></formatter>

    </clientProviders>

    </channel>

  </channels>

  <client>

    <wellknown type="ICliente, ICliente" url="http://localhost/ServidorComponentes/Cliente.soap"></wellknown>

  </client>

  </application>

  </system.runtime.remoting>

</

configuration>


 
Cuando se desea crear una nueva instancia de un componente, por lo general necesitamos conocer el tipo de objeto que queremos probar y la url donde se publica el mismo. Usualmente se utiliza el objeto Activator y las lineas para inicializar un componente de Remoting son:
 

Dim urlRem As String

Dim iC As ICliente

urlRem = "http://localhost/ServidorComponentes/Cliente.soap&quot;

iC = Activator.GetObject(

GetType(ICliente), urlRem)


 
Sin embargo, si ya tenemos cargada la informacion desde el archivo .config, se puede acelerar el proceso de creacion de componentes, leyendo la informacion desde el registro local de componentes de Remoting. Para esto podemos utilizar el metodo RemotingConfiguration.GetRegisteredWellKnownClientTypes  
 

RemotingConfiguration.GetRegisteredWellKnownClientTypes (Método) 
Recupera una matriz de tipos de objetos registrados en el cliente como tipos conocidos.
[Visual Basic]
Public Shared Function GetRegisteredWellKnownClientTypes() As WellKnownClientTypeEntry()
Valor devuelto
Matriz de tipos de objetos registrados en el cliente como tipos conocidos.
Comentarios
Los tipos de objetos conocidos pueden ser llamadas únicas o singleton. Si un tipo de objeto es una llamada única, se crea una nueva instancia de él cada vez que se recibe una llamada del cliente. Todas las llamadas a un objeto singleton se controlan mediante una instancia de ese objeto.

 
Utilizando este metodo, podemos crear un helper, que cargue internamente una lista de los objetos que estan configurados y luego, permita de una manera las simple, crear los objetos Remoting. Para esto creamos una clase Helper.
 

Imports System.Runtime

Imports

System.Runtime.Remoting

 

Public Class RemotingHelper

”’ —————————————————————————–

”’ <summary>

”’ Define si se ha inicializado el diccionario shared que almacena los tipos

”’ que se pueden acceder desde remoting

”’ </summary>

”’ <remarks>

”’ </remarks>

”’ <history>

”’ [BCA] 27/06/2005 Created

”’ </history>

”’ —————————————————————————–

Public Shared mLoaded As Boolean

”’ —————————————————————————–

”’ <summary>

”’ Almacena los tipos que se pueden acceder desde Remoting

”’ </summary>

”’ <remarks>

”’ </remarks>

”’ <history>

”’ [BCA] 27/06/2005 Created

”’ </history>

”’ —————————————————————————–

Public Shared mWellKnownTypes As IDictionary

”’ —————————————————————————–

”’ <summary>

”’ Retorna un objecto, a partir del tipo del mismo. Se crea en base a la

”’ definicion de los objetos que se pueden crear remotos

”’ </summary>

”’ <param name="type">Tipo del Objeto a crear</param>

”’ <returns>New Object</returns>

”’ <remarks>

”’ </remarks>

”’ <history>

”’ [BCA] 27/06/2005 Created

”’ </history>

”’ —————————————————————————–

Public Shared Function GetObject(ByVal type As Type) As Object

Dim strExc As String

‘ inicializa el cache de objetos

If Not mLoaded Then

LoadRemTypes()

End If

‘ obtiene el tip

Dim entr As WellKnownClientTypeEntry = mwellKnownTypes(type)

If entr Is Nothing Then

strExc = "Type [{0}] not found!"

strExc =

String.Format(strExc, type.ToString)

Throw New RemotingException(strExc)

End If

‘ crea el objeto

Return Activator.GetObject(entr.ObjectType, entr.ObjectUrl)

End Function

”’ —————————————————————————–

”’ <summary>

”’ Inicializa el diccionario interno de Objetos que se pueden crear por remoting

”’ </summary>

”’ <remarks>

”’ </remarks>

”’ <history>

”’ [BCA] 27/06/2005 Created

”’ </history>

”’ —————————————————————————–

Public Shared Sub LoadRemTypes()

Dim sExcepcion As String = ""

Dim sAssName As String

mLoaded =

True

mwellKnownTypes =

New Hashtable

‘ recorre los tipos que se pueden crear

For Each entr As WellKnownClientTypeEntry In RemotingConfiguration.GetRegisteredWellKnownClientTypes()

If (entr.ObjectType Is Nothing) Then

Try

sAssName = entr.AssemblyName

Catch

sAssName = "No Assembly Name defined."

End Try

sExcepcion = "A configured type could not be found. Please check spelling. AssemblyName: [{0}]"

sExcepcion =

String.Format(sExcepcion, sAssName)

Throw New RemotingException(sExcepcion)

End If

‘ agrega el nuevo tipo

mwellKnownTypes.Add(entr.ObjectType, entr)

Next

End Sub

End Class


 
( Les debo la indentacion  ) Finalmente la creacion de un objeto a partir de un servidor de componentes Remoting, queda mucho mas simple
 

Dim iC As ICliente

iC = RemotingHelper.GetObject(GetType(ICliente))


 
Pues bien, este es un pequeño ejemplo de algo que tambien nos ayuda a programar de una forma mas simple.
 
Tb esta publicado en el Guille http://tinyurl.com/dj82z