Hi,
I am designing a resource access layer that will sit on a database server on a LAN consisting of 5 workstations and 7 servers. My intention for the resource access layer is to expose a set of well defined C# methods to any C# (.Net 3.5) client on the LAN, and allow the client to access data stored in the DBMS without having any knowledge of how the data is being accessed. This is basically an exercise in simple abstraction.
So far I have configured an object relational mapper to retrieve data as entities from the DBMS (MS SQL Server 2008). I have then written a simple data access class that uses those entities to retrieve and insert data. Example methods include GetUser(Int ID) and SetUser(Int ID, String username, String password). All the methods take and return native types and not entity objects or similar wrappers.
I want to make this class remotely accessible on the LAN, so that any C# client code can use the same singleton class to access data in an simple format. In the days of .Net 2.0 the obvious choice would be to use .Net remoting and declare the class to inherit MarshalByRefObject. However with the arrival of .Net 3.5 and WCF there are many more options.
So far I have been reluctant to use WCF for the resource access layer. As I understand it all data is passed as SOAP messages, which is exactly what you want if the data is to traverse the internet and be accessed by multiple platforms but this may be a bit over kill for my needs. All platforms on the LAN are either windows vista or windows server 2008, all have .net 3.5 installed. There is no real need to serialize the data as XML since the all the data is native to the platforms who may need to access it. Another concern I have is speed. This layer needs to be as quick as possible, if the data needs to be transcoded to XML an overhead will be created.
I am looking for any advice on the best .Net technology to use in this situation. I may overlooked a significant benefit WCF can offer me or there may be a way to configure WCF to use very basic payloads. If however my concerns are well founded then I will use .Net remoting in its place.
Apologies for the long question, any advice would be welcome.
Thanks for your time,
James