NCommon - resources, documentation - c#

I like NCommon project, but the lack of resources and documentation makes it very hard to use.
Does anyone of you know some good resources, examples...?
I figured out some basic setting, like Repository Pattern etc. But i'm completly lost i.e. with "NCommon.Rules".
Thank you.

NCommon author Ritesh Rao has sadly been very quiet for the past year. His blog is nevertheless an excellent resource for discussion of the rationale behinde (some of) the ideas in NCommon.
I agree that it's currently difficult to understand what all the clever stuff in the framework is really for since there's no sample app included in the source.
Ritesh did say a while back that he intended Rhinestone to be a sample for NCommon but that never came to fruition. However, if you look here you'll see that Ritesh is about to make a renewed effort to do a sample app and has started work on NCommon 1.1 (now on GitHub)
One final note of caution is that Ritesh has not tagged all of the pertinent posts in his blog with the NCommon tag because he started disussing some of the patterns he's used before he thought of rolling it all into NCommon so check his older posts also. For example he talks about implementing a Persistence Ignorant Unit of Work but didn't tag it with NCommon.

Related

WinRT Data Virtualization implementation in C#

I have asked this question on the MSDN forum (with no success), maybe StackOverflow will prove its strength one more time...
I was attending Hamid Mahmood's session on collection and list apps and was excited to see control-level support for data virtualization. Unfortunately, no details were given on how to implement IVirtualizingVector and IIncrementalLoadingVector, and it is not evident how to do so by looking at the interfaces themselves.
Can anybody post a sample?
Additional bonus question for SO - is there an easier way to implement IAsyncOperation (needed by IIncrementalLoadingVector implementation) than coding it "from scratch"?
For your bonus question, have a look at the overloaded Create method available in System.Runtime.InteropServices.WindowsRuntime.AsyncInfoFactory, specifically the overloads that take Func<Task<T>>.
I have posted an article on my blog showing how to implement IVirtualizingVector here. It describes an overview of how IVirtualizingVector works, as well as an implementation that you can use released as part of the open-source Cocoon framework. I hope to also show how to use IIncrementalLoadingVector in the future.

Is there an updated version of "Improving .NET Application Performance and Scalability"?

I'm looking for an updated version of this article: Improving .NET Application Performance and Scalability.
The message on this page states:
Retired Content
This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This page may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
I'm looking for either an update of this article or a collection of articles with the same emphasis.
A (recent) book on .NET performance and scalability is also acceptable.
Microsoft Application Architecture Guide (From the Microsoft Patterns and Practices Team)
http://www.amazon.co.uk/Microsoft-Application-Architecture-Patterns-Practices/dp/073562710X/ref=pd_sim_b_8
That's the one you're are looking for.
Excellent book ... happy reading :-)
A quick Google check and wording of that statement indicates no, but perhaps the blog of one of the authors may help? Esp. his "Performance" tag?
http://blogs.msdn.com/b/jmeier/archive/tags/performance/
It doesn't appear that an updated article exists. However, I wouldn't let the retired content disclaimer discourage you from reading the article and heeding it's advice. While some information may be outdated and some links might be invalid, there is probably a lot of useful information that still applies.
Technology will always continue to improve, but the basics of good programming rarely change.
Here are a few that I've looked at in the past.
http://channel9.msdn.com/Blogs/pdc2008/TL24
http://www.codeproject.com/KB/aspnet/10ASPNetPerformance.aspx
Some of the same information, particularly in regard to testing, can be found in the 2007 J.D. Meier series, "Performance Testing Guidance for Web Applications" series.
The patterns & practices Application Architecture Guide 2.02 also mentioned above from October 2009 contains some of the architectural information.
Enterprise and cloud based development guides are gathered here. In particular the 2013, 273 page Book Download: Data Access for Highly-Scalable Solutions: Using SQL, NoSQL, and Polyglot Persistence5 has some very useful information.
And the 2012, Developing Multi-tenant Applications for the Cloud, 3rd Edition - Book Download
You can also look into Iqbal Khan's articles on improving .net application's performance and scalability using distributed caching solutions like NCache here:
http://msdn.microsoft.com/en-us/magazine/ff714590.aspx
http://msdn.microsoft.com/en-us/magazine/dd942840.aspx

What is a good replacement for MyGeneration / d00dads code generation and data layer?

I have used MyGeneration and the d00dads architecture for several years, and have been a big proponent. The tool is fairly simple and straightforward and the code layer is dead simple.
But a recent experience with it has left me a bit wary now. Support for this software is completely non-existent, any forums dealing with it are virtual ghost towns. I am scared of running into another issue later down the road that I cannot fix and being stuck.
I'm looking for something that:
Explicitly supports MS SQL Server and C#.
Simple: No XML schemas! Straighforward tools. Just convert SQL tables to easily accessible objects and collections
Supported: Developer support is essential. A robust forum community with ongoing bug fixes is ideal.
A year or two ago I would have agreed with the answer to this StackOverflow question. Hell, I may have even upvoted that answer. But I just can't justify that anymore. It's dead software and the source code is complicated enough it's not something you can just dive in and update without prior experience.
Microsoft's Entity Framework?
LINQ to SQL is probably a little simpler, but it's been "officially" replaced by the EF.
** UPDATE **
Here's the 3.5 EF link
Have you taken a look at CodeSmith Generator's Framework templates? I'd recommend taking a look at .NetTiers as it would be a good replacement for d00dads. Other developers have went this route. Otherwise we have the PLINQO templates and soon to be PLINQO for Enity Framework.
Thanks
-Blake Niemyjski (CodeSmith Employee)
I know it's uncouth to answer one's own question, but... after digging into this a bit, the answer became pretty obvious: Entity Spaces is the logical replacement for MyGeneration/dOOdads. Written by the same person, uses a similar syntax and design patterns. Only con is that it is not a free tool.
I realize that this is a very old post, but it still ranks pretty high on DuckDuckGo results.
The MyGeneration guy has created https://www.My2ndGeneration.com. It's not syntax compatible with the first, but it's still pretty nice.

Is MSDN website sufficient for C# self-learning?

I know there are plenty of books on C#, but I'd rather learn by reading articles/guides and watching video tutorials. Would Microsoft's MSDN website be enough to teach myself C# in depth?
Thank you.
**Update*:*
#Jon Skeet: Thanks for your honest answer. I might just do that then, - I'll get Table of Contents from a C# .NET book and then go through each topic on MSDN.
Thanks again to all of you. I wish I could mark everyone's answer.
All the information is there, yes. Heck, the C# specification is available there, so that's all you need, in theory.
However - and I'm biased as the author of a C# book, of course - I believe that books add value by giving you a structured learning experience. Authors put a lot of time into working out the order in which to introduce concepts so that it makes the most sense.
Of course you could just take the table of contents from a C# book and then look up bits of MSDN in that order - but a good book will lead you through in a more orderly manner, building on examples and areas you've learned before rather than treating each one individually.
IMHO this will depend on your general programming level. If this is your first encounter with programming I think that a book would be better than MSDN. If on the other hand you have experience with similar technologies such as Java there's no reason MSDN wouldn't be enough as it contains extensive documentation, many tutorials and samples.
MSDN comprehensively covers all aspects of C# and the .Net platform. so Yes MSDN is sufficient to learn C#.
I would say so too, but only as a reference. That's what I did, and still do.
Edit: It might be hard for a beginner, but not impossible.
I think MSDN is a very good place to teach yourself C# in depth, that being said I don't think it's a good source to get you started.
Let me explain... MSDN is a great place when you want to work out how things work and why, what other options are there and all the rest of little details other sources usually overlook, but can be important. However, I think it lacks a certain "get up and do something meaningful" attitude you are looking for when learning a new language.
Just my 2 cents worth though.
Though I personally didn't learn it that way, there are some excellent resources on the MSDN now vs when I started with .NET.
In general, if you're going to learn C# from the MSDN, your launchpad will be here. If you're new to programming in general, here looks like a good place to start.
As far as I see it, there are articles about how to do things and articles about classes/methods, etc.
Some of the examples in articles about a class or method aren't enough for you to say that you know them and don't discuss everything, so I'd say they're a starting point - together with blogs and articles and tutorials on other sites you will probably get a lot more information.
The articles about how to do things, that start with a problem and show how to solve it, are ok and clear (or at least the ones I've read).
It also depends on what you already know and what you're building on.

Which namespace from the .NET Framework should I research?

I am just beginning to play around with .NET (using C#).
Which namespace, aside from System.*, do I need to research ?
UPDATE: A number of people are asking why research namespaces.
My previous programming experience is mainly non-OOP and VBA (self-taught).
I have no idea at all to what has already been provided in the .NET framework.
I don't want to sit down and write string-handling functions (for example) to then find out that all the string-handling I could ever need is already written for me (and works better than mine)
Why do you want to start with namespace?
Rather start with windows form applications, web apps, database operations.
While working on these applications, you will need the details of required namespaces and classes.
At that time you can look int only required namespace.
I think you would benefit a lot more by reading over the source from a few decent applications than you will from researching a namespace. Of course, that largely depends on what you're trying to do - if you just want academic knowledge of C#, then that may be a solid direction. But if you want to actually build something, I would look at samples.
BabySmash is an interesting WPF app: http://babysmash.codeplex.com/SourceControl/changeset/view/17438
Speaking of, Scott Hanselman did a long series called "The Weekly Source Code" where he blogged about numerous open source projects whose source he was reading - to be a better developer. Most of those are C#.
I'm not sure whether it makes sense to try to research on whole namespaces. They are large and it could get boring...
My best way to dive into new frameworks or languages is examples.
Try to achieve something specific (e.g. create a simple web shop, a hello world winforms app, ...). For that, google on how to do that. While studying the code examples answering your specific problems, you will get to know the object model without even noticing.
You could also start with some tutorial. Or, if you like books, buy a book and read it. Namespaces, however, I do not even care about what namespace provides a certain class. I just right-click the class and choose "Resolve".
Some tutorials:
http://www.w3schools.com/ngws/default.asp
http://www.dotnetcurry.com/ShowArticle.aspx?ID=377&AspxAutoDetectCookieSupport=1
http://www.c-sharpcorner.com/UploadFile/jmukharjee/WindowsFormsTutorial111282005011245AM/WindowsFormsTutorial1.aspx
using Microsoft;
And there are many others on the internet, you'll find some good one on CodePlex, or write your own.
My recommendation would be start with the System.IO (Deep understanding of IO, reading and writing files, streams, etc).
For an "academic" vision of the framework read this book:
http://www.amazon.com/MCTS-Self-Paced-Training-Exam-70-536/dp/0735622779
Greetings ;)
This reminds of DNR episodes, where they have a namespace or a class to be the thing of the day - much like the letter of the day on Sesame Street.
Seriously though, researching a namespace in language framework will not give you much practical knowledge. Far better to trawl through online tutorials and give yourself a mini project to work on.
If you really want to research into Namespaces, then Microsoft and System are the only places you really need to go. Whithin the System namespace you should check out:
System.Collections
System.Data
System.Linq
System.Web (If you're interested in ASP.NET)
There are of course many others, but these are the main ones for starting out. You can check out MDSN for more info on these.
I agree with most of the others answers though in the fact that really you should just read a book or do some web tutorials (check out MSDN again). Its the way I learnt and it worked just fine, although I suppose it will not suit everybody.

Categories