Monday, February 22, 2010

Creating an ASP.NET MVC 2 Controller Factory with Ninject

Introduction



Recently I've been getting into Test Driven Development and one useful thing that helps me out with this is making use of the Inversion of control principle. This makes it easy to pass a Mock version of all my services for the purposes of testing.

However this presents a challenge with the standard MVC Controller Factory. It only supports the parameterless contructors. However, one of the great things about ASP.NET MVC (2) is that it allows you to override most aspects of the framework. It doesn't restrict you as much as it's ASP.NET webforms predecessor. So to avoid the so call "Anti Pattern" of having both a Parameterless Constructor for your "Real Services" and an overloaded constructor for your testing/Mock Services, you can follow this guide to create a Controller Factory which uses ninject. Then you'll only have 1 constructor and you'll sleep soundly.

Creating Ninject Controller Factory




  • Now let's create a new MVC 2 Project
  • Once it open's we'll need to add a reference to ninject.core.dll

  • Next, let's create a helper method for our ninject controller factory called NinjectControllerFactory.cs

  • We'll need to inherit from the default controller factory. Mainly so we don't have to re-invent the wheel and we can just override one part of it.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace NinjectIoc
{
    public class NinjectControllerFactory : DefaultControllerFactory
    {
    }
}

  • For the purposes of this demo we'll need to create an example service and interface, to demo the Ioc process and ninject.

namespace ExampleServices
{
    public interface IExampleInterface
    {
        void Method1();
        string Property1 { get; }
    }

    public class ExampleConcreteClass : IExampleInterface
    {

        #region IExampleInterface Members

        public void Method1()
        {
            // Do Nothing.
        }

        public string Property1
        {
            get
            {
                return "Hello World";
            }
        }

        #endregion
    }
}
  • Now we can setup a ninject Module which returns our ExampleConcreteClass when given the IExampleInterface.
  • We do this by creating a class which inherits from ninjects standardmodule and overrides the Load Method

private class ExampleConfigModule : StandardModule
    {
        public override void Load()
        {
            Bind<IExampleInterface>().To<ExampleConcreteClass>();
        }
    }
  • Finally we'll override the GetControllerInstance Method from the DefaultControllerFactory using ninject to return a controller complete with any parameters in the controllers constructor.
public class NinjectControllerFactory : DefaultControllerFactory
    {
        private IKernel kernel = new StandardKernel(new ExampleConfigModule());

        protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
        {
            // We don't want to pass null to ninject as we'll get a strange error.
            return controllerType == null ? null
                                          : (IController)kernel.Get(controllerType);
        }
    }
  • Now we'll need to tell the MVC 2 framework to use our new Controller Factory insted of the defaultControllerFactory.
  • To do this we'll need to edit the global.asax.cs file
public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // Route name
                "{controller}/{action}/{id}", // URL with parameters
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

            // Setup Our new Controller Factory.
            ControllerBuilder.Current.SetControllerFactory(new NinjectControllerFactory());

        }
  • That's it for the setup. Now we'll need to test it out.
  • Let's update the default Home Controller to include a parameter in it's constructor
public class HomeController : Controller
    {
        #region Testing Our Controller Factory

        private IExampleInterface _example;

        public HomeController(IExampleInterface exampleInterface)
        {
            // Test our our new Ninject Controller Factory
            _example = exampleInterface;
        }

        #endregion

        public ActionResult Index()
        {
            // Will it work?? 
            ViewData["Message"] = _example.Property1;

            return View();
        }

        public ActionResult About()
        {
            return View();
        }
    }

  • Now if this work's we should see the word's "Hello World" on the home page.

  • Cool. it worked.

Conclusion


It would be very easy to swap out Ninject for another Ioc container. So i hope it helps someone out there. If you want to get a copy of the example code then I've copied it up to my



Enjoy.

142 comments:

  1. I'm not able to download a copy of your example, can you check that your link is good please ?

    ReplyDelete
    Replies
    1. The effectiveness of IEEE Project Domains depends very much on the situation in which they are applied. In order to further improve IEEE Final Year Project Domains practices we need to explicitly describe and utilise our knowledge about software domains of software engineering Final Year Project Domains for CSE technologies. This paper suggests a modelling formalism for supporting systematic reuse of software engineering technologies during planning of software projects and improvement programmes in Final Year Project Centers in Chennai.

      Software management seeks for decision support to identify technologies like JavaScript that meet best the goals and characteristics of a software project or improvement programme. JavaScript Training in Chennai Accessible experiences and repositories that effectively guide that technology selection are still lacking.

      Aim of technology domain analysis is to describe the class of context situations (e.g., kinds of JavaScript software projects) in which a software engineering technology JavaScript Training in Chennai can be applied successfully

      Delete
  2. Hey.. thanks for that. I've updated the link and it works ok now.. please try again ;)

    ReplyDelete
  3. Great post, still cannot get why "Type controllerType" may be null?

    ReplyDelete
  4. The blog gave me idea to create asp net mvc 2 controller My sincere thanks for sharing this post please continue to share this post
    Dot Net Training in Chennai

    ReplyDelete
  5. Excellent post. you have post an very informative information. Keep it up. Salesforce Training in Chennai | Selenium Training in Chennai

    ReplyDelete
  6. Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here. Kindly keep blogging. If anyone wants to become a .Net developer learn from Dot Net Training in Chennai. or learn thru ASP.NET Essential Training Online . Nowadays Dot Net has tons of job opportunities on various vertical industry.
    or Javascript Training in Chennai. Nowadays JavaScript has tons of job opportunities on various vertical industry.

    ReplyDelete
  7. Thanks for sharing this niche useful informative post to our knowledge.
    brochure designers in chennai | brochure design company in chennai

    ReplyDelete
  8. Para penjudi akan dengan mudah untuk memenangkan permainan judi ceme keliling. Hanya dengan menggunakan situs ini dan menggunakan cara ini maka para penjudi akan dengan mudah untuk mendapatkan banyak kemenangan
    asikqq
    http://dewaqqq.club/
    http://sumoqq.today/
    interqq
    pionpoker
    bandar ceme terpercaya
    freebet tanpa deposit
    paito warna
    syair sgp

    ReplyDelete
  9. Wow it is really wonderful and awesome thus it is very much useful for me to understand many concepts and helped me a lot. it is really explainable very well and i got more information from your blog.
    Blockchain online training

    ReplyDelete
  10. Great blog thanks for sharing Looking for the best creative agency to fuel new brand ideas? Adhuntt Media is not just a digital marketing company in chennai. We specialize in revamping your brand identity to drive in best traffic that converts.

    ReplyDelete
  11. Nice blog thanks for sharing Choosing the right place to buy your first plant isn’t that hard of a choice anymore. Presenting the best plant nursery in Chennai - Karuna Nursery Gardens is proud to showcase more than 3000+ plants ready to be chosen from.

    ReplyDelete
  12. I found your blog while searching for the updates, I am happy to be here. Very useful content and also easily understandable providing.. Believe me I did wrote an post about tutorials for beginners with reference of your blog.
    Devops certification training
    Devops online course
    Devops online training
    Devops training course

    ReplyDelete
  13. I just loved your article on the beginners guide to starting a blog.If somebody take this blog article seriously in their life, he/she can earn his living by doing blogging.thank you for thizs article. blockchain online training

    ReplyDelete
  14. Thank you for excellent article.You made an article that is interesting.
    AWS Solutions Architect courses in Bangalore with certifications.
    https://onlineidealab.com/aws-training-in-bangalore/


    ReplyDelete
  15. Awesome blog thankks for sharing 100% virgin Remy Hair Extension in USA, importing from India. Premium and original human hair without joints and bondings. Available in Wigs, Frontal, Wavy, Closure, Bundle, Curly, straight and customized color hairstyles Extensions.

    ReplyDelete
  16. Very useful blog thanks for sharing IndPac India the German technology Packaging and sealing machines in India is the leading manufacturer and exporter of Packing Machines in India.

    ReplyDelete
  17. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
    http://chennaitraining.in/bi-bw-training-in-chennai/
    http://chennaitraining.in/solidworks-training-in-chennai/
    http://chennaitraining.in/autocad-training-in-chennai/
    http://chennaitraining.in/ansys-training-in-chennai/
    http://chennaitraining.in/revit-architecture-training-in-chennai/
    http://chennaitraining.in/primavera-training-in-chennai/

    ReplyDelete
  18. Best Corporate Video Production Company in Bangalore and top Explainer Video Company in Bangalore , 3d, 2d Animation Video Makers in Chennai
    Nice article. Very much informative. Keep writing and share information

    ReplyDelete
  19. Thank you very much for the details you shared. Kindly try to implement a kind of information through it and keep writing such wonderful things.
    Gym Equipment

    ReplyDelete
  20. This is a very nice article we consider your effort of collecting the information and putting it in words as amazing also take a look at our services

    Best mobile app development companies in India
    Best ios app development companies in New Delhi

    ReplyDelete
  21. This is a very good article and nice collection of information , would love to read more of such blogs and also know our services

    Mobile application development in India
    Mobile application development in Delhi

    ReplyDelete
  22. Hi, I enjoy your blog. There are a lot of good information on this blog, I'd like to read it and I think people will get a lot of support from this blog. Thank you for sharing this informative blog, please keep up and share some unique posts with us in the future.
    Mobile app development companies
    we are the best Mobile app development company in Bangalore
    Mobile app development company in India
    Mobile app development companies in India

    ReplyDelete
  23. Hi, I enjoy your blog. There are a lot of good information on this blog, I'd like to read it and I think people will get a lot of support from this blog. Thank you for sharing this informative blog, please keep up and share some unique posts with us in the future.
    Mobile app development companies
    we are the best Mobile app development company in Bangalore
    Mobile app development company in India
    Mobile app development companies in India

    ReplyDelete
  24. This is a really explainable very well and i got more information from your site.Very much useful for me to understand many concepts and helped me a lot.Best data science courses in hyerabad

    ReplyDelete
  25. keep up the good work. this is an Ossam post. This is to helpful, i have read here all post. i am impressed. thank you. this is our site please visit to know more information
    data science training in courses

    ReplyDelete
  26. The information given in this article is very good and I like it. I have also written this kind of blog you can also read for more knowledge.
    why cloud computing is needed
    benefits of machine learning
    benefits of devops
    php vs .net
    js interview questions
    ethical hacking interview questions

    ReplyDelete
  27. This is a really very nice post you shared, i like the post, thanks for sharing..

    Data Science Training

    ReplyDelete
  28. Thanks for posting the best information and the blog is very informative.Data science course in Faridabad

    ReplyDelete
  29. Chennai IT Training Center
    Artificial Intelligence training in chennai - Basically AI Artificial Intelligence is a programming which is created for robots to think and work on there own without the help of humans.

    RPA Training Institute in Chennai - RPA is useful in making complex decision by collaborating with Artificial Intelligence. And it will also contribute to the market of Big data and IOT. Join the Best RPA Training Institute in Chennai now.

    Load runner training in Chennai - Load runner is an software testin tool. It is basically used to test application measuring system behaviour and performance under load. Here comes an Opportunity to learn Load Runner under the guidance of Best Load Runner Training Institute in Chennai.

    ReplyDelete
  30. Chennai IT Training Center
    Artificial Intelligence training in chennai - Basically AI Artificial Intelligence is a programming which is created for robots to think and work on there own without the help of humans.

    RPA Training Institute in Chennai - RPA is useful in making complex decision by collaborating with Artificial Intelligence. And it will also contribute to the market of Big data and IOT. Join the Best RPA Training Institute in Chennai now.

    ReplyDelete

  31. First You got a great blog .I will be interested in more similar topics. I see you have really very useful topics, i will be always checking your blog thanks.

    Digital Marketing Training Institutes in Hyderabad


    ReplyDelete
  32. I Want to leave a little comment to support and wish you the best of luck.we wish you the best of luck in all your blogging endeavors.
    data science in bangalore

    ReplyDelete
  33. Really nice and interesting post. I was looking for this kind of information and enjoyed reading this one. Keep posting. Thanks for sharing.


    best data science institute in hyderabad

    ReplyDelete
  34. HI guys,
    This is a very good post, and I like it very much. For us, it's insightful and helpful. For a long time, I've been looking for this and I'm just really pleased to say that I'm working with this stuff as well. Thanks for sharing this with us.

    Digital Marketing Company in Jaipur
    Digital Marketing company In Delhi
    Digital Marketing Company in Bangalore
    SEO Company in Jaipur
    Website development Company in Jaipur
    PPC Company in Jaipur
    Digital Marketing Company in USA

    ReplyDelete
  35. If you don"t mind proceed with this extraordinary work and I anticipate a greater amount of your magnificent blog entries

    digital marketing courses in hyderabad with placement

    ReplyDelete
  36. I just got to this amazing site not long ago. I was actually captured with the piece of resources you have got here. Big thumbs up for making such wonderful blog page!
    data analytics course in bangalore

    ReplyDelete
  37. Thanks for posting the best information and the blog is very helpful.artificial intelligence course in hyderabad

    ReplyDelete
  38. This is an excellent post . thanks for sharing it. It is really what I wanted to see. I hope in the future you will continue to share such an excellent post.
    business analytics course

    ReplyDelete
  39. I am a new user of this site, so here I saw several articles and posts published on this site, I am more interested in some of them, hope you will provide more information on these topics in your next articles.
    data analytics training in bangalore

    ReplyDelete
  40. I am a new user of this site, so here I saw several articles and posts published on this site, I am more interested in some of them, hope you will provide more information on these topics in your next articles.
    data analytics training in bangalore

    ReplyDelete
  41. It's really nice and meaningful. it's a really cool blog.you have really helped lots of people who visit blogs and provide them useful information
    business analytics course

    ReplyDelete
  42. This post is very simple to read and appreciate without leaving any details out. Great work!
    digital marketing courses in hyderabad with placement

    ReplyDelete
  43. Excellent Blog! I would like to thank for the efforts you have made in writing this post. I am hoping the same best work from you in the future as well. I wanted to thank you for this websites! Thanks for sharing. Great websites!
    Data Science Training in Bangalore

    ReplyDelete
  44. Thanks for posting the best information and the blog is very important.data science institutes in hyderabad

    ReplyDelete
  45. Wonderful blog found to be very impressive to come across such an awesome blog. I should really appreciate the blogger for the efforts they have put in to develop such an amazing content for all the curious readers who are very keen of being updated across every corner. Ultimately, this is an awesome experience for the readers. Anyways, thanks a lot and keep sharing the content in future too.

    data science institute in bangalore

    ReplyDelete
  46. I read your blog. The information you give in the blog is very good.
    mobile app development company
    android apps development
    iphone apps development
    Mobile Application Development Companies in Chennai
    mobile app development companies
    app development companies
    mobile app development company in India
    top app development companies
    top mobile app development company
    Android App Development Company in Chennai
    App Development Companies in Chennai
    App Development Company in Chennai
    Apps Development Companies in Chennai
    Apps Development Company in Chennai
    Best App Development Companies in Chennai
    Best Mobile App Development Companies in Chennai
    ios app development companies in Chennai
    List of app development companies in Chennai
    mobile App Development Company in Chennai
    Mobile Application Development Companies in Chennai
    Mobile Application Development Company in Chennai
    Mobile Apps Development Companies in Chennai
    top mobile app development companies chennai
    mobile app development
    top mobile app development company
    mobile application development
    mobile apps development
    offshore mobile app development
    offshore mobile application development
    top mobile app development companies in india
    top mobile apps development
    app development
    mobile application development companies
    best mobile app development company
    mobile app development companies in chennai
    Mobile App Development
    Mobile App Development Company
    custom mobile app development
    Native Mobile App Development Company in Chennai
    Android App Development Company
    IOS App Development Company in Chennai

    ReplyDelete
  47. Thanks for posting the best information and the blog is very important.digital marketing institute in hyderabad

    ReplyDelete
  48. i am glad to discover this page : i have to thank you for the time i spent on this especially great reading !! i really liked each part and also bookmarked you for new information on your site.
    artificial intelligence training in chennai

    ReplyDelete
  49. Fantastic article I ought to say and thanks to the info. Instruction is absolutely a sticky topic. But remains one of the top issues of the time. I love your article and look forward to more.
    Data Science Course in Bangalore

    ReplyDelete
  50. Thanks for posting the best information and the blog is very important.artificial intelligence course in hyderabad

    ReplyDelete
  51. Very wonderful informative article. I appreciated looking at your article. Very wonderful reveal. I would like to twit this on my followers. Many thanks! .
    Data Analytics training in Bangalore

    ReplyDelete
  52. This Was An Amazing ! I Haven't Seen This Type of Blog Ever ! Thankyou For Sharing…

    AWS Training in Hyderabad

    ReplyDelete
  53. I truly like you're composing style, incredible data, thankyou for posting.
    data science training

    ReplyDelete
  54. Terrific post thoroughly enjoyed reading the blog and more over found to be the tremendous one. In fact, educating the participants with it's amazing content. Hope you share the similar content consecutively.

    data science course in varanasi

    ReplyDelete
  55. I was basically inspecting through the web filtering for certain data and ran over your blog. I am flabbergasted by the data that you have on this blog. It shows how well you welcome this subject. Bookmarked this page, will return for extra. data science course in jaipur

    ReplyDelete
  56. I am impressed by the information that you have on this blog. It shows how well you understand this subject.
    data scientist course

    ReplyDelete
  57. This is an excellent post I seen thanks to share it. It is really what I wanted to see hope in future you will continue for sharing such a excellent post.
    data scientist course

    ReplyDelete
  58. This is really very nice post you shared, i like the post, thanks for sharing..
    data science course

    ReplyDelete
  59. Wonderful article. It's very useful.
    It looks like you have put lot of work into this.
    Mobile apps have become an important part of every business. Mobile apps have been affecting business for quite a while and help in expanding scalability. Developing an astonishing-looking app with robust security and modern technology is a tough task. For this QuikieApps, the leading Mobile app development company has the best expertise in mobile app development. To develop the finest applications with attractive interfaces and smooth operations, you can count on us. QuikieApps is the top React Native app development company in the market. We have influenced various fields including travel, sports, eCommerce, enterprise, marketing, social media, gaming, etc. As a top Reactjs Development Services Companyprovider, QuikieApps design, and develop Web Apps and Mobile apps that get featured in the app store and win the marketplace. We build apps that get noticed. We excel in strategy, design, and development for iPhone & Android apps, and work for startups and enterprises as well.
    Web development company

    ReplyDelete
  60. A great website with interesting and unique material what else would you need.
    data science training

    ReplyDelete
  61. The advancement of technology has positively influenced the growth of businesses all over the planet. With the help of modern technologies like websites and mobile applications, every firm can sell its products or services online without hassle. We, QuikieApps, have acquired recognition and reputation through the reliance of our respected clients as the top Web development company. Also Quikieapps is the top front-end development company and flutter app development company in Bangalore, India, USA, UK, Dubai. Adapting the dynamic technology of the web and mobile applications is the first step to success in this modish and competitive world.

    ReplyDelete
  62. In essence, a CRM software consultant helps you utilize a powerful tool for managing interactions with existing and potential clients as well as identifying leads. CRM software streamlines communication and increases the efficiency of team responses to clients.

    ReplyDelete
  63. Employees can help clients through DevOps consulting services and solve many real-world problems. Listed below are some examples of how DevOps applications are making an impact in the real world.

    ReplyDelete
  64. Thanks for sharing We are the best product photography company in Chennai. We have latest equipment and well-experienced team with us, we ensure that all your product photography services requirements are met to excellence.

    ReplyDelete
  65. Good post. I would like to thank you for the effort you put into writing this interesting and informative article. If you need a visa , you can apply for Turkey Visa and Visa on Arrival Turkey You can fill the form. It is easy & quick to get a Turkey eVisas by following 3 simple steps.

    ReplyDelete
  66. Extremely overall quite fascinating post. I was searching for this sort of data and delighted in perusing this one. Continue posting. A debt of gratitude is in order for sharing. cloud computing course in jaipur

    ReplyDelete
  67. Nice post. I'm impressed! Extremely useful information. Thank you and keep up the good work. whatsapp mod

    ReplyDelete
  68. I feel very grateful that I read this. It is very helpful and very informative and I really learned a lot from it.best cyber security institute in delhi

    ReplyDelete
  69. Great article this is really informative and innovative: with new updates.with new updates. It was really valuable. Thanks a lot. Travelers can easily apply for Indian visa online. The Government of India has provided an easy-to-use method to apply for an Indian Visa.

    ReplyDelete
  70. Fantastic article I ought to say and thanks to the info. Instruction is absolutely a sticky topic. But remains one of the top issues of the time. I love your article and look forward to more.
    Data Science Course in Bangalore

    ReplyDelete

  71. Thanks for sharing this information, Keep it up.... South Africa tourist visa, The Government of South Africa has confirmed that South Africa's new e-Visa system will be implemented for 15 countries by March 2022.

    ReplyDelete
  72. This is a wonderful inspiring article. I am practically satisfied with your great work. You have really put together extremely helpful data. Keep it up.. Are you planning to visit Kenya? For this, you need to fill the Kenya online visa application and pay the fee.

    ReplyDelete
  73. Wonderful article. It's very useful.
    It looks like you have put lot of work into this.
    Mobile apps have become an important part of every business. Mobile apps have been affecting business for quite a while and help in expanding scalability. Developing an astonishing-looking app with robust security and modern technology is a tough task. For this QuikieApps, the leading Mobile app development company has the best expertise in mobile app development. To develop the finest applications with attractive interfaces and smooth operations, you can count on us. QuikieApps is the top React Native app development company in the market. We have influenced various fields including travel, sports, eCommerce, enterprise, marketing, social media, gaming, etc. As a top Reactjs Development Services Companyprovider, QuikieApps design, and develop Web Apps and Mobile apps that get featured in the app store and win the marketplace. We build apps that get noticed. We excel in strategy, design, and development for iPhone & Android apps, and work for startups and enterprises as well.
    Web development company

    ReplyDelete

  74. Birbal is a cloud-based video interview software. The key feature of this tool is that it merges with AI to provide predictive analytics. This lets you get the true sense of a candidates.

    video interview platform
    video interview software

    ReplyDelete
  75. Thank you for writing such an interesting blog. Please add some more relevant topics to the conversation. We've come to read your blog because there's no other purpose for us to be here, as you well know. Well, if you get time, you must checkout my website DedicatedHosting4u.com

    ReplyDelete
  76. Very wonderful informative article. I appreciated looking at your article. Very wonderful reveal. I would like to twit this on my followers. Many thanks! .
    Data Analytics training in Bangalore

    ReplyDelete
  77. Very informative message! There is so much information here that can help any business start a successful social media campaign!
    data science training in london

    ReplyDelete
  78. Really an awesome blog and useful content. Keep update more blogs again soon. Thank you.
    Data Science Training in Hyderabad

    ReplyDelete
  79. It's good to be back! I thought I've been to this site before, but after reading some of the posts, I realized it's new to me. In any case, I'm glad I found it and will definitely bookmark it and check back often. how to get India visa, You can apply for an Indian visa online through the India visa website.

    ReplyDelete
  80. I have bookmarked your site since this site contains significant data in it. You rock for keeping incredible stuff. I am a lot of appreciative of this site.

    ReplyDelete
  81. 360DigiTMG, the top-rated organisation among the most prestigious industries around the world, is an educational destination for those looking to pursue their dreams around the globe. The company is changing careers of many people through constant improvement, 360DigiTMG provides an outstanding learning experience and distinguishes itself from the pack. 360DigiTMG is a prominent global presence by offering world-class training. Its main office is in India and subsidiaries across Malaysia, USA, East Asia, Australia, Uk, Netherlands, and the Middle East.

    ReplyDelete
  82. I have express a few of the articles on your website now, and I really like your style of blogging. I added it to my favorite’s blog site list and will be checking back soon… data scientist course in kanpur

    ReplyDelete
  83. Amazingly by and large very interesting post. I was looking for such an information and thoroughly enjoyed examining this one.
    Keep posting. An obligation of appreciation is all together for sharing.
    business analytics course in gwalior

    ReplyDelete
  84. Thank you for sharing this kind of information about programming languages. I highly recommended Flutter App Development Company. This is the latest technology used by many programmers.

    ReplyDelete
  85. Google wants end users. An expert digital marketing agency in London can help you understand this better. So, Google can find the answer you are looking for, and you can trust the results you see. If Google thinks both are true, it ranks websites up and down based on queries. By placing something high in the search rankings, Google effectively guarantees the source.

    ReplyDelete
  86. I was basically inspecting through the web filtering for certain data and ran over your blog. I am flabbergasted by the data that you have on this blog. It shows how well you welcome this subject. Bookmarked this page, will return for extra.https://360digitmg.com/course/certification-program-on-digital-marketing

    ReplyDelete
  87. Nice knowledge gaining article. This post is really the best on this valuable topic. data scientist course in kanpur

    ReplyDelete
  88. Hii sir, Nice blog. Thanks for sharing. Lots of people query, What is the Indian passport photo size? You can read info about India visa photo requirements via our Indian visa page.

    ReplyDelete
  89. Hello everyone, Foreign citizens can enter India for business purposes. Indian government allows foreign country citizens they can can be apply for e business visa for India. e Business Visa India, Non-Indian visitors who are looking for business business or meetings, setting up industrial or business enterprises in India or other similar business activities etc.

    ReplyDelete
  90. Create innovative, human-centric apps for better customer retention & conversions at the best rate with CronJ's react js development services!

    ReplyDelete

  91. It would help if you thought that the data scientists are the highest-paid employees in a company.
    data science course in kochi

    ReplyDelete
  92. I love the way you explain your article. It's easy to read and understandable. I want to know articles like this. People have the option to apply for a e visa Turkey online which is a hassle free process. And its time and cost saving also.

    ReplyDelete
  93. We have had the experience of using mvc design when undergoing digital transformation, by actually hiring dedicated developers who committed to deliver a similar project.

    ReplyDelete
  94. Such a wonderful blog! This is really superb and thanks for your sharing with us...
    preliminary protective order
    contract dispute resolution process

    ReplyDelete
  95. Video poker requires plenty of strategic thinking, so don't play if you're 우리카지노 drained. We additionally advise you to comply with our video poker ideas for profitable. Gambling movies have gained a lot of reputation over the past few years, however unfortunately, there aren't many that concentrate on} video poker.

    ReplyDelete
  96. India e Visa for Andorra Citizens. For inhabitants of Andorra, India offers e-Visa services, making it easier for them to enter the nation for a variety of reasons. If you are an Andorran citizen planning a trip to India, you can apply for an e-Visa on the official website of the Indian government.

    ReplyDelete