Rash thoughts about .NET, C#, F# and Dynamics NAV.


"Every solution will only lead to new problems."

Category WCF

Die Windows Communication Foundation (WCF – Codename Indigo) ist eine neue serviceorientierte Kommunikationsplattform für verteilte Anwendungen.

Thursday, 3. January 2013


F# and Microsoft Dynamics NAV 2009 Web Services

Filed under: C#,Dynamics NAV 2009,F#,Navision,Visual Studio,WCF — Steffen Forkmann at 9:25 Uhr

If you are a Dynamics NAV developer you have probably heared of the web services feature which comes with the 2009 version. In this walkthrough you can learn how to create and consume a Codeunit Web Service. This method works very well if you only need to create the C# proxy classes once. If you have more than one developer, an automated build system, changing web services or many web services then you will come to a point where this code generation system is very difficult to handle.

Microsoft Visual F# 3.0 comes with feature called “type providers” that helps to simplify your life in such a situation. For the case of WCF the Wsdl type provider allows us to automate the proxy generation. Let’s see how this works.

Web service generation

In the first step we create the Dynamics NAV 2009 Codeunit web service in exactly the same way as in the MSDN walkthrough.

Connecting to the web service

Now we create a new F# console project (.NET 4.0 or 4.5) in Visual Studio 2012 and add references to FSharp.Data.TypeProviders, System.Runtime.Serialization and System.ServiceModel. After this we are ready to use the Wsdl type provider:

At this point the type provider creates the proxy classes in the background – no “add web reference” dialog is needed. The only thing we need to do is configuring the access security and consume the webservice:

Access from C#

This is so much easier than the C# version from the walkthrough. But if you want you can still access the provided types from C#. Just add a new C# project to the solution and reference the F# project. In the F# project rename Program.fs to Services.fs and expose the service via a new function:

In the C# project you can now access the service like this:

Changing the service

Now let’s see what happens if we change the service. Go to the Letters Codeunit in Dynamics NAV 2009 and add a second parameter (allLetters:Boolean) to the Capitalize method. After saving the Codeunit go back to the C# project and try to compile it again. As you can see the changes are directly reflected as a compile error.

In the next blog post I will show you how you can easily access a Dynamics NAV 2013 OData feed from F#.

Tags: , , ,

Tuesday, 9. October 2007


Die 5. Europäische Konferenz der IEEE über WebServices (ECOWS 2007) findet in Halle (Saale) statt

Filed under: Informatik,Veranstaltungen,WCF — Steffen Forkmann at 19:32 Uhr

Am 26. bis 28. November 2007 findet am Institut für Informatik der Uni Halle die ECOWS 2007 statt – eine Konferenz, die sich direkt mit der Standardisierung von WebServices bzw. Serviceorientierter Architektur (SOA) befasst. Ein Vorbeischauen lohnt sich sicher.

Tags: , , , , , ,

Wednesday, 4. October 2006


WCF – Debugging

Filed under: WCF — Steffen Forkmann at 12:30 Uhr

Wenn man WCF-Anwendungen entwickelt möchte man oftmals Client und Service gleichzeitig debuggen. Wenn man beide Projekte in der selben Solution hat, ist das auch eigentlich recht einfach möglich. Ich brauchte jedoch erst einen Anstoß von Christian Weyer um an einen Breakpoint zu halten:

  1. Service-Host als Startup-Projekt festlegen und mit F5 starten
  2. Auf dem Client-Projekt im Projektmappen-Explorer mit “Debuggen/Neue Instanz starten” den Client starten

Nun kann man in beiden Projekten Breakpoints setzen und der Debugger hält auch wirklich an. Man kann sogar mehrere Client-Instanzen starten und alle parallel debuggen.

Sunday, 1. October 2006


Visual Studio "Orcas" September CTP

Filed under: Visual Studio,WCF,WPF — Steffen Forkmann at 12:57 Uhr

Mit der neuen Microsoft CTP-Welle ist auch eine September CTP von Visual Studio “Orcas” erschienen. Besonders wichtig für mich war an dieser Stelle die “Add Service Reference”-Funktionalität die svcutil.exe im Hintergrund aufruft und somit der neue Ersatz für “Add Web Reference” ist.

Weitere Features von Orcas:

  • XAML-Editor für die Windows Presentation Foundation
  • Support für C# 3.0 (inkl. LINQ) 

Thursday, 28. September 2006


Nachlese: TechTalk zu WCF mit Christian Weyer

Filed under: TechTalk,WCF — Steffen Forkmann at 13:23 Uhr

Gestern war ich mit zwei Kollegen beim “Teile und herrsche: Verteilte Lösungen mit der Windows Communication Foundation”-TechTalk in Leipzig. Der Vortragende Christian Weyer  zeigte wieder alles was einen guten Redner ausmacht und vermittelte eine sehr gute und vor allem lustige Einführung in das Thema Serviceorientierte Architektur.

Christian schaffte es in ca. 3 Stunden die komplette Infrastruktur seiner Beispielanwendung TecTv zu erklären und in Live-Codesamples um zu setzen.

Meine ersten Eindrücke vom Thema WCF sind wirklich durchweg positiv. Microsoft scheint die orthogonalen Features wie Security, Transport, Logging, Tracing usw. wirklich fast komplett konfigurierbar gemacht zu haben, so dass man in den meisten Fällen keine Zeile Code mehr schreiben muss um eine neue “Übertragungstechnologie” für seinen Service zu implementieren. 

Man gibt nur noch in den ApplicationSettings (client- und serviceseitig) den entsprechenenden Service-Endpoint an und schon kann es losgehen.

Zum Beispiel so:

<endpoint address="net.tcp://localhost:1234/myNetService" binding="netTcpBinding" bindingConfiguration="unsecureTcp" contract="IMyInterface" /> <endpoint address="http://localhost:1235/myHttpService" binding="basicHttpBinding" contract="IMyInterface2" />

Weitere Feature wie Transaktionen oder Streaming usw. kann man einfach oben drauf per Konfigurationseinstellungen hinzufügen. So rückt der bisher so wichtige Teil der Protokollauswahl sehr stark in den Hintergrund und die Nachricht selbst (bzw. der Contract der Nachricht) kommt an die wichtigste Position.

Wenn man selbst in das Thema einsteigen will, kann man z.B. den Hello-World-Artikel nachprogrammieren – auch wenn Christian mit der Architektur des Samples wohl nicht 100% zufrieden wäre.

Weitere Informationen:

Saturday, 16. September 2006


TechTalk mit Christian Weyer in Leipzig

Filed under: Diverses,TechTalk,WCF — Steffen Forkmann at 12:40 Uhr

 

Am 27. September findent im Leipziger Mercure-Hotel ein TechTalk mit Christian Weyer über die Windows Communication Foundation (WCF ehemals Indigo) statt. Organisiert wird das Event von der .NET User Group Leipzig.

Die Anmeldung und weitere Informationen gibt es hier.

Tuesday, 17. January 2006


.NET Webservice auf Apache HTTP Server

Filed under: ASP.NET,WCF — Steffen Forkmann at 21:41 Uhr

Wie wäre es denn, wenn man einen .NET WebService auf einen Apache WebServer zum laufen bringen könnte. Eine Möglichkeit besteht darin, sich auf dieser Seite den Apache HTTP Server in der Version 2.0 und außerdem das “mod_aspdotnet Apache HTTP Server 2.0 Module”, was es hier gibt herunterzuladen.

Als einzige Vorraussetzung braucht man das Microsoft .NET Framework in Version 1.0 oder 1.1, welches installiert sein muss. Es funktioniert leider nicht mit der ASP.NET Version 2.0.

Nun zur Vorgehensweise:

  • Alles installieren und mit einem Browser testen. Dazu einfach http://localhost/
    oder http://localhost:8080/ (je nachdem was man bei der Installation gewählt hat) eingeben und es müsste der folgende Bildschirm erscheinen:

Apache WebService

  • Als nächstes muss man die httpd.conf mit einem Texteditor öffnen und folgende Zeilen hinzufügen:

LoadModule aspdotnet_module modules/mod_aspdotnet.so

# Use the asp.net handler for all common ASP.NET file types
AddHandler asp.net asax ascx ashx asmx aspx axd config cs csproj licx rem resources resx soap vb vbproj vsdisco webinfo

# Mount the IBuySpy C# example application
AspNetMount /StoreCSVS “C:/StoreCSVS/StoreCSVS”

# Map all requests for /StoreCSVS to the IBuySpy application files
Alias /StoreCSVS “C:/StoreCSVS/StoreCSVS”

# Allow asp.net scripts to be executed in the IBuySpy example

Options FollowSymlinks ExecCGI
Order allow,deny
Allow from all
DirectoryIndex Default.htm Default.aspx

# For all virtual ASP.NET webs, we need the aspnet_client files
# to serve the client-side helper scripts.
AliasMatch /aspnet_client/system_web/(\d+)_(\d+)_(\d+)_(\d+)/(.*) “C:/Windows/Microsoft.NET/Framework/v$1.$2.$3/ASP.NETClientFiles/$4”

Options FollowSymlinks
Order allow,deny
Allow from all

  • Die Pfade müssen natürlich entsprechend dem Projekt angepasst werden und wenn alles funktioniert hat erhält man folgende Seite:

Apache WebService

Ein Problem ist natürlich, dass es kein ASP.NET 2.0 unterstützt, aber auch hierfür gibt es eine Lösung wenn man kein IIS unter Windows betreiben will. Man läd sich das mod_mono Modul von der Mono Seite und schon ist der Apache Webserver auch für ASP.NET gerüstet (wenn das Mono Framework installiert ist), aber dieses Modul gibt es bis jetzt nur für Linux.

Weitere Informationen zu Webservices

Tags: ,

Wednesday, 17. August 2005


Die thinktecture-Gespräche

Filed under: .NET,Veranstaltungen,WCF — Steffen Forkmann at 11:32 Uhr

Unter http://www.thinktecture.com/gespraeche findet man in unregelmäßigen Abständen E-Mail-Gespräche über technologische Themen.
Ein wirklich nettes Format der Wissensvermittlung – und da die Gespräche von den thinktecture-Experten sind, kann man sich auf eine sehr gute inhaltliche Behandlung verlassen.

Thursday, 16. June 2005


Einsatzmöglichkeiten für XML-Webservices

Filed under: Informatik,WCF — Steffen Forkmann at 13:19 Uhr

In Unternehmen tritt häufig das Problem auf, dass wertvolle Daten in isolierten Systemen schlummern, die nicht für den Datenaustausch mit anderen Systemen ausgerichtet sind. Wenn diese Daten jedoch für den Datenaustausch nutzbar gemacht werden könnten, würde dies den Wert der Informationen erheblich steigern.

Ein typisches Einsatzgebiet eines WebService ist die Lieferung von Informationen aus einer Datenbank an verschiedene Client-Anwendungen. Ein Beispiel wäre die Lieferung von aktuellen Meldungen durch Nachrichtenagenturen (wie z.B. Reuters) an Medienunternehmen (Zeitungen, Fernsehen, Internetportale) und der damit verbundene Kostenausgleich.

Webservices

Mehr zu XML-Webdiensten gibt es in meiner Hausarbeit zu XML-WebServices.

Nachtrag: Die Arbeit wurde nun schon über 5000 mal runtergeladen.

Tags: , , , , , , ,