Architecture :: Which Kind Of Relationship Exists Between Repository And Registry
Jun 1, 2010
the more i read about pattern the more i get confused!
In particular i'm trying to get the relationship between Registry and Repository.
Is it correct to say that a possible implementation of a Registry uses a Factory to return an appropriate Repository which, in turns, uses an underline DataMapper to performe the CRUD operations against a database?
If no, which kind of relationship exists between repository and registry ?
I need some guidance for an application I am working on. I have searched the web and the forum and found parts that answer my questions but I want to do this correctly. My solution uses LINQ to SQL to model the db and I have a repository that is querying my db everytime a controller needs to get some data for the view. I am initially anticipating a maximum of only about a few hundreds hits per day (if that). The website is a directory, with listings and requires a search functionality.
1. What options should I consider to avoid having my repository query the db everytime
2. The site contains a 'search' option, how can I implement this against my repository?
I guess I'm really looking for someone to point me in the right direction. So far I've looked at 'caching' the LINQ to SQL model and Lucene.NET but both seem overkill or am I missing the point?
This is possibly the worst kind of religious debate -- a religious debate with practical consequences. But it's one that needs to be had, and I can't seem to fit it in my tiny head. Here are the pros and cons of the pattern as I know them:
Pros:
-Encourages DRY (don't repeat yourself) design in that identical queries are written only once per set of query conditions -Facilitates unit testing by allowing itself to be abstracted into an interface -Creates an opportunity for business-level validation
Cons:
-Breaks DRY philosophy in that you're generally repeating your database schema -In a sense breaks separation of concerns, because the query concerns of the controller and view frequently become the concerns of whoever is maintaining the repository -Determining what should be a repository and what should be returned as a raw associated ORM entity becomes an ambiguous art
To me it seems like all this stuff should be done at the ORM level, but Entity Framework has much fewer hooks than Linq to Sql does, yet Entity Framework tends to be regarded as being more robust, so it seems that this is by design, and that the designers of EF are in fact encouraging another layer. Are there any tools or anything that I could be using for this? Am I missing something?
I am currently using the 3-tier Repository pattern in my application. Actually it's the first time for me to implement a design pattern at all! i used to put all my code in the so called now presentation layer.
i want to implement data validation, for example, password should not be more than 10 characters and have to contain special characters. Should i put this code in the data access layer? but my data access layer contains methods that take the DTO as a parameter for example
[Code]....
and the same is for other CRUD operations (DELETE and UPDATE), so implementing such validation on the DAL would make me duplicate the code in each and every method that accepts the DataObject as a paramter. Same holds for the business logic layer where i am using it as a proxy between the presentation and the data access layers.
Eventually it has to use the same Data Objects as parameters. This only leaves me with one option which is to do the validation on the Data Object part. But i think this is not the essence of the respository pattern which states that the Data object class should only be a "container" class with no behavior.
I've been reading recently about EF4, and how to build an architecture for asp.net web forms application using it.
I explored using POCOs (self tracking entities), with WCF, but found out that my application will be deployed on a single box (i.e. one tier), so I started reading about logical separation of layers, and came up with the following solution:
DAL layer that contains EDMX model and EF APIs, and also generated context object.Entities DLL that holds all generated POCO entities using ADO.NET POCO entity generator. (for persistence ignorance, and decoupling entities from DAL).Business layer that contains a façade for each related group of business functions, the façade will be aware of and using DAL layer. And in each function, it will initiate context and uses different entities to carry out specific job (i.e. function).UI layer that only calls the business layer façade classes. With no awareness of DAL, but it will be aware of entities (i.e. using entities DLL), as the business layer will return results basically as entity collections.
I want to know what you think about this architecture.
I also read about an architecture that uses repository and unit of work patterns, but what I understand that context object is already implementing a UOF pattern, and also object sets are implementing repository pattern (correct me if I'm wrong), so the only advantage of using additional abstraction over them is to make the business layer communicates to my classes, not EF classes, and this is good only if the DAL strategy might change (i.e. by using another tool other than EF, which is not my plan).
I read some article about unitOfwork and repository but i'm still confused about how they interact, and how to use them in the right way.
I'm using an addressbook project to practise on patterns (even if , likely, patterns are not usefull) without any ORM framework for persistence.
My domain objects are (at now) : AddressBook (acts as an application controller), Contact (contains information about each contact in the address book), ContactGroup (mantain collections of contact).
Should i have to use distinct repository object for contact ad contactgroup?
I thought to use a UnitOfWork for the operation about the adding/removing contact to group : the user can add existing contact to a group, create a new contact while adding it to the group or remove contact from group.
Just wondering, in an ASP.NET MVC3 environnement with entity framework. Should the Unit of Work point to the service layer or the repository (and then the repository point to the service layer) ?
Ive saw two example:
* One where the unit of work and repository both have an instance to the service layer..
Link: Entity Framework 4 CTP 4 / CTP 5 Generic Repository Pattern and Unit Testable
Doesn't use a service layer but its obvious that one could be use in that case.
* Second where the unit of work have an instance to the repository which have an instance to the service layer..
I am trying to understand the fundamental differences between the Provider Model and Repository Pattern.
I have used the Provider Model in many many situations and am confident with it when designing applications. However, the more examples I encounter on the internet and asp.net evolution I keep coming across "Repository" Interfaces for classes that look like a Provider Model.
I have dug around a bit but all I can see is that they kinda do the same thing, or closely overlap by enforcing an inheriting class to adhere to a "contract" of implemented / abstracted methods etc...is there more to it?
what is considered a many-to-many relationship in a domain model class ? I mean how to implement a many-to-many relationship in a domain model class ? In SQL this is represented by a link table between two table but how this is represented in a domain model driven application ?
When implementing MVP in a ASP.NET project, what are your preferences for how you organize the relationship between your presentation project and your web project?
I would like to check whether a folder exists or not if not create. I'm sure this folder exists, but for some reason I get "false" when I check with "Exists" method.
The only reason I think could be because of the W: drive? I moved this application to production site and even there it returns false.
while I'm type in Windows explorer on my localhost and on the server "W:/Webs/ASPPages/cropper/uploads" it opens this folder. So my localhost and IIS server has W: mapping.
for test I tried to create the folder then it says can't find the path...
userFolderName = @"W:/Webs/ASPPages/cropper/uploads" //I also tried @"W:WebsASPPagescropperuploads" //I also tried @"W:WebsASPPagescropperuploads" //I also tried "W:\Webs\ASPPages\cropper\uploads" DirectoryInfo dirInfo = new DirectoryInfo(userFolderName);........
is it possible to create kind of widgets that are pluggable in ASP.NET MVC? I'd like to give my users the option to upload and attach a widget that I provide (ie. zip format). Recently I thought about deploying Areas in different project assemblies. Is it still possible with MVC RC2 (later RTM) and is there an option to dynamically attach that areas (say from a admin panel)?
Second question, how would you guys create a dynamic layout where admins could select widgets to display, arrange them, disable, move them etc.? I mean a flexible layout that can be changed via the admin panel without having to touch the code. Here I thought about defining and storing layout widgets paths in a db. Later I could associate these widgets with routes (in db). For each request (controller, action) I would fetch the layout among with associated widgets and output them recursively. Probably I could user RenderAction and PartialViews for that.s my direction correct or should I focus on some other technique?
In all the samples I've seen on how to set up nhibernate, the cfg.xml doesn't include any information on any kind of proxy, but when I step through to tutorials, I get errors saying a proxy hasn't been configured.
I want to alert a user of a new message using some kind of USB device (e.g. a flashing light). Is it possible to control a USB device from ASP.NET or Silverlight?
How to create a user control for this kind of layout. I have a css. But dont know how to create a control for this kind of display. Title is the department name and below mentioned radio buttons are status for each department. Now department can be multiple as present in database. This one box can contain only two department list and new box needs to be created as soon as 2 departments are filled into this. How can I create user control for this type to bind it from datatable. I am reading about DynamicDataField but seems to be of no use. Here fields encircled is department and its statuses
I have a nested table structure, a part of which is rendered by a ajax call that returns HTML from the server. The markup looks like this:
<tr> <td><table cellpadding="0" cellspacing="0" border="0"> <%-- Content will be displayed from ajax call 1 --%> <%-- Content will be displayed from ajax call 2 --%> </table> </td> </tr> </table> .. more html
In jquery, I need to insert this html for which i need an element to traverse to so that I can call the html() of that element. Unfortunately, if I use a div, for example:
<table cellpadding="0" cellspacing="0" border="0"> <div id="divAjax1"> <%-- Content will be displayed from ajax call 1 --%> </div> <div id="divAjax2"> <%-- Content will be displayed from ajax call 2 --%> </div> </table>
the classes are setup such that the div or a span causes other issues.
I have this next gridview on my page : First name, Last name, ID.
It gets populated with data, and everything works great. I now wish to add a row just under the header (or above it- but I've been told it's impossible) with three checkboxes- one for each column.
Thing is- I geuss I would have to implement it programatically and I wasn't sure how could I pull this off.
I m trying to create a custom textbox with a enum kind property in it(like textmode).the enum values will come from database..but enums cant be dynamic..is there another way out??