C# - How To Write A Good Core Architecture For A Project In MVC
Nov 24, 2010
I'm going to have to write a big system in January with ASP.NET MVC3 / C#, and need to know how to write a system that will WORK. I do have a bit of experience with ASP.NET MVC and C# but would not call myself an expert. It needs to be extensible so that I can extend it later with new features. How would one go about this? Is there books that explains this topic in detail or should I use trial and error? In short I need to know good design practice in my code thats extend-able for the future.
I need to design a good exception handling. That can include logging and user friendly error page etc I read more articles and got some ideas. I am not using Enterprise Library now.
I'm interested to hear from other developers their opinion on an approach that I typically take. I have a web application, asp.net 2.0, c#.
What I usually do to write out drop downs, tables, input controls, etc. is in the code behind use StringBuilder and write out something like sb.Append("
I don't find myself using to many .net controls as I typically write out the html in the code behind. When I want to use jQuery or call JavaScript I just put that function call in my sb.Append tag like sb.Append("td...onblur='fnCallJS()'.
I've gotten pretty comfortable with this approach. For data access I use EntitySpaces.
I'm just kind of curious if this sort of approach is horribly wrong, ok depending on the context, good, time to learn 3.0, etc. I'm interested in learning and was just looking for some input.
Edit
After reading the comments here it sounds like I should take a look at MVC. I've not done that yet. The only hesitancy in doing so is that the existing project is just that, existing. There is a lot of code already done the way I explained and it is hard to imagine what would be involved in changing it, advantages of doing so, and just learning what that would take.
The other thing I'm taking away from the comments is that my code behind should really not include much of the sb.Append code, whereas now it is filled with it in numerous functions. To me it is not messy but that is because I know what each function does and can look at it and see, oh that writes out x, y, and z.
It's not uncommon for me to just have a div on the .aspx part and then build up the .innerHtml of that with the StringBuilder in the code behind.
In page behind classes I am using a private and shared object (list<client> or just client) to temporary hold data coming from database or class library. This object is used temporarily to catch data and than to return, pass to some function or binding acontrol. 1st: Can this approach harm any way ? I couldnt analyse it but a thought was using such shared variables may replace data in it ?2nd: Please comment also on using such variables in BLL (to hold data coming from database) where new object of BLL class will be made everytime.
i know some thing about the MVP pattern... but when you want to develop a project(web project) based on the MVP pattern from where we need to start... i mean which component we need to start developing first ... Model or View or Presenter... what are the points that we need to keep in mind....
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?
My boss asked me to develop an API library for user registration. I am planning to write it in C#, compile it into DLL, and then give DLL to other groups to use it in a web (ASP.Net) application.
Im pretty new to NUnit and am beginning the process of setting up my tests. Some of these test involve a database, specifically checking a particular value against a value in a database and if its not greater than the last retrieved value, flag an error. Whats the best way to test in this scenario ? should I write one value to a database then create another value thats out of sequence and run a database query ? This would involve putting a known value into the table, then running the query with another value.
There is no rollback attribute for nunit, so I gues using TransactionScope would work, that way I could return the database to a known state after the test. There tables have foreign keys so that means adding a lot of extra 'dummy' data first to some of the other tables. Is this sort of 'testing' the best way ? I basically need to perform the test based on an existing data value and I guess this must be pretty standard stuff, so whats the best way ?
As I understand it, the tests should be self contained, so any data i insert into the database during the test should be removed afterwards, is this correct ? If so, it means I need to insert test data into 6 additional tables just to test one function, then remove it after the test has completed, is this the normal way to to this ?
if there is any config setting or any other way to force the response to be written all at once instead of it being written in multiple packets??The problem is I am using a response filter to edit anchor href's and the html parser (HtmlAgilityPack) strips out the malformed HTML when the framework writes to the response stream multiple times, so enforcing an all at once write would solve this headache.
I have been creating my BLL and DAL with in the same project as my UI. These have been logical tiers in their own folder with in the same project, that's with in the same solution. I want to try to create a solution that is more like a truly multi tiered app.
I've heard people talk about using a separate projects for their DAL and BLL. My understanding is that these would be separate dlls that would contain the appropriate code for each of the these tiers. I have a few questions regarding this.
Is this a good way to do this? It seems like a logical approach. It also seems like the next step in me moving towards an architecture that's truly tiered. Should I do this differently?
Should the projects for the BLL and the DAL use the same namespace? I think I read that some people use a namespace for each of these that indicates what they are, such as BLL and DAL.
I am trying to use Domain Driven Development (DDD) for my new ASP.NET MVC2 project with Entity Framework 4. After doing some research I came up with the following layer conventions with each layer in its own class project:
[code]... Currently my Repositories layer holds a reference to the Domain layer.From my understanding injecting a UserRepository to the UserService class works very well with unit testing as we can pass in fake user repositories.So with this architecture it looks like my Web project needs to have a references to both my Domain and Repositories layers.But is this a valid?Because historically the presentation layer only had a reference to the Business Logic layer.
Is there a good way to change the aspnet_Users, aspnet_Membership, aspnet_Applications and other table names which are generated by the ASPNET SQL Server registration tool -
[URL]
and change the reference to them in web.config or machine.config without breaking the default login, profiles and roles functionality that is provided by those tables?
We have a web solution. In it we have 2 websites and a core project in the core project are some classes that encapsulate data that a database utility class searches using sql and populates the entities. The entities are stored in generic lists.
We have just upgraded our project and I want to start using linq, I was wondering the best way to go about it. SHould I creata new linq project? Or Should I just use ling on new pages only and stick to our current data access layer for pags that already exist?
Its vital that we start using linq as it will save us time in the future
I am using asp.net 3.5 and I am trying to create a project structure (asp.net web solution with UI/Business/Data access) which would be like a base and ready for any new projects in my team and all could use this standard structure only as a base(outer boundary) and they can expand the structure. Also adding on to it I wanted to include certain features like adding libraries of reusable code/functions, so that every team member could use functions from my library within this base structure. To summarize the above, I need to create standard .net project structure/framework/architecture with resusable code library included in it. How can I do this..
I am working on singleton desing patterns and want some real world example of design patterns.Can you please give me an example how you have used singleton pattern in you project. I would appreciate if you can provide code.
i ma new to asp.net, i am just learning asp.net using this site and some resources from internet , internet is the only source for me. and here i have a project that should be designed by the patter of 3 tier architecture. i have an idea, but i couldn't start it, need your guidance, if i did this , it will very useful for me to get a job.these are the requirements and steps.
I am not new to ASP.Net application development but I haven't used some of the new frameworks or features that are used in applications these days.
For cross-cutting concerns, things like: Logging, Caching and DAAB are used in projects these days to implement proven and efficient source code from either Microsoft or other third party vendors such as Log4Net for logging purposes.
I'm about to begin a new asp.net application using .net 4.0. Only concern I have is since the project calls for reporting, I cannot use SSRS with SQL Server 2008 b/c the tempate for Bus Intelligence Projects is missing from 4.0. I've been told that the next release of SQL Server 2011 (some time this year), will resolve this problem. Meanwhile, I'm wondering if the following approach would work:
1) Create the application in VS2010 using the SQL Server 2008 db.
2) Create the SSRS Bus Intelligence project using VS2008 and create a seperate website pointing to the same SQL Server 2008 Db?
Kind of a hack, but I guess the only problem with this is, the Bus Intelligence project will not be able to reference and leverage and DLL or code from the application.
how to design following small webproject and database .i am totally new in this area.
I need to quickly develop a system so that everyone can access the status of the job going online into the system
Activities
Move the job between work centers when it's completed.
Transfer button. So when design is done we should be able to click the transfer button and move the job from Design to Procurement
Here are the work centers.
plan cerement TST Shipped Each work center should have due dates User will have to update manually due date for each work center and this will be different for each job.
I have two projects (Project A and Project B), these projects are hosted in different locations and on different servers. Project B want to access the files of Project A. which technique is required to fulfill my requirements.