I had a lot of fun presenting last night at the Sacramento .NET user group. It was great to hear that people learned a lot and are looking forward in incorporating the things they have learned about the Provider Model design pattern and object persistence in general into their own projects. The slides are available for download here. The source code of the entire reference implementation is available here. I will be finishing up the SQL Server provider within the next few days and make it available in my GitHub repo.
I’ve been updating my reference implementation in the last few days. I’m actually using this reference implement in my own projects. You can download the latest version on my GitHub repo.
This is a complete .NET C# reference implementation to help you jump start a service oriented system running in a cloud environment such as Amazon’s EC2 or on-premis clusters.
This reference implementation shows you how to build a client and the server side. The client side is a sample WPF application that communicates via http REST requests using JSON payloads to the service side. Of course, you can use any type of client as long as the client can communicate via http and REST based JSON’s.
The service side is using a Web API 2 service layer that communicates to a central domain model. The service side demonstrates how to handle exceptions and edge cases and how to communicate failure to the client.
The persistence layer demonstrates the extreamly powerful provider pattern to store the domain objects into the following databases:
- db4o (an object database)
- Redis (a NoSQL database)
- SimpleDB (a NoSQL database)
- SQL Server (comming soon)
Please note that the entire system has no knowledge on how the objects are stored. All implementation details are in the individual providers listed above. This means that you can switch the persistence provider without having to recompile and therefore switch a running system from one persistence store to another.
I will try to create a sample SQL Server provider soon.
I’m proud to announce the first release of my Visual MASM IDE 1.0. With Visual MASM, you can program assembly applications for Windows 32-bit, Windows 64-bit, and even MS-DOS 16-bit COM and EXEs. Visual MASM uses Microsoft’s powerful Macro Assembler but makes it easier to manage all of your Windows assembly programs. I have included simply Hello World applications that range in size from 254 bytes (COM file) to a whopping 2,5 Kbytes for a Windows 32-bit and Windows 64-bit application. Head on over to http://www.visualmasm.com and download it, it’s free.
I’m a confirmed speaker at the appsworld North America 2015 at Moscone Center West, May 12-13 in San Francisco, CA. Discover the future of multi-platform apps. See all confirmed speakers. This sure will be an exciting event. I’m still working on my presentation that will include Redis, Amazon AWS, C#, and more. I will see you there.
As there were not enough reasons already to write Windows applications in assembly (see my Visual MASM project site), I just found out yesterday about some great new development in the SoC (System on a Chip) industry. Intel came out with the Intel Galileo Gen 2 which features a full blown 586 Pentium class computer. What’s so awesome? It’s super tiny and just a little bigger than a credit card. So, you can install and run Windows or Linux on it. How freaking cool is that? No noise and about 5 Watts of power consumption… the possibilities are incredible. Put Windows 10 on it for free, here is how. Create your Windows applications in MASM and my Visual MASM, off you go… amazing. Go check out Microsoft’s Internet of Things(IoT).
Wednesday, March 25th, 20015, I will be presenting “Object Persistence in C#” at the Sacramento .NET User Group (SAC.NET) at the Microsoft Office at 1415 L Street, Suite 200, Sacramento, CA 95814 starting at 6:00 pm. Maria Martinez, Co-Organizer, Sacramento .NET User Group, was kind enough in helping to get this organized. Thank you Maria. I will see you there.
I will be presenting “Object Persistence in C#” at the Bay.NET user group at the Berkeley City College located at Room 451A, 2050 Center Street, Berkeley, CA from 6:15 pm – 9:00 pm.
Deborah Kurata, Co-Organizer, East Bay Chapter Leader, was kind enough in helping to get this organized. Thank you Deborah.
I will see you there.
In part 4 of this series, I went through the entire Visual Studio solution and also showed the db4o object database provider.
In part 5, I’ll show you how to store your Plan Old C# Objects (POCO) into Redis using the Redis Cloud at redislabs.com service. We will build the Redis Provider and take it out for a spin storing our new domain objects.
You can download the source code at GitHub.
In part 3 of my Object Persistence series, I introduced the complete Visual Studio 2012 source code.
This is part 4 of my Object Persistence series. I created a detailed video that goes thru all the parts in the solution. Enjoy! Make sure you continue with part 5 where we build a Redis persistence provider.
Watch the video walkthrough on my YouTube channel:
In part 2 of my Object Persistence series, I’ve touched on the issues that still exist today.
In part 3, I’ve published a complete sample Visual Studio 2012 solution on GitHub that demonstrates object persistence using a db4o persistence provider. Over time, I will add additional sample persistence providers for Redis, SQL Server, and possibly a NoSQL provider such as SimpleDB (one of Amazon’s great NoSQL databases).
This sample solution includes complete server side and client side layers. The Server side runs as a REST based Web API 2 service. The server portion also includes a simple domain model and, of course, the persistence provider and how it is implemented. I will update the solution over time, expand the domain model, UI, etc. as required.
The client side is a WPF application that consumes the REST service. The payload to and from the REST service is via JSON objects.
I hope you like it. You can use this sample solution as a template to start simple or very complex software solutions. This solution can easily be taken and split across different nodes in a cluster of Amazon AWS EC2 instances, for example. However, for a cloud based solution, your persistence would have to support certain features. I will go into details when I add the Redis persistence provider.
Instead of writing a very long blog post, I will post a screen cast video and go through the solution. I think this will make more sense and you have a chance to go through the source code with me. So, go ahead and get the latest version from GitHub and start playing with it.