এটি কোনও ডোমেন চালিত ডিজাইন RESTful ওয়েব সেবার জন্য কি একটি ভাল ভিজ্যুয়াল স্টুডিও সমাধান কাঠামো?


15

আমি একটি .NET 4.5 সি # ওয়েব এপিআই এর বিশদ সমাধান তৈরি করছি এবং আমি চাই যে আমার প্রকল্পের সমাধানটি সঠিক এবং / অথবা বুদ্ধিমান (-প্রশ্ন?) ডোমেইন ড্রাইভন ডিজাইন ব্যবহার করে ডিজাইন করা সমাধানের জন্য কিনা আমাকে বলুন?

সমাধানটি 6 টি প্রকল্পে বিভক্ত হয়েছে:

  • / বেজ

(কোনও কিছুর দ্বারা রেফারেন্স নেই)

ওয়েব প্রকল্প এবং সমাধান এবং বাইরের বিশ্বের মধ্যে ইন্টারফেস গঠন করে। ওয়েব এপিআই কন্ট্রোলার রয়েছে। অনুরোধের বস্তুগুলি থেকে মান সংগ্রহ করা এবং কাজের জন্য বিজাপি স্তর জিজ্ঞাসা করার বাইরে প্রায় কোনও যুক্তি নেই।

  • /Biz.Api

(বেস দ্বারা রেফারেন্স])

ডোমেন পরিষেবা সরবরাহ করে এবং / বেস ইন্টারফেস প্রকল্পকে / বিজ.ডোমেন প্রকল্পে ডোমেন ব্যবসায় যুক্তিযুক্ত বিষয়গুলিতে অ্যাক্সেসের অনুমতি দেয়।

  • /Biz.Domain

(বিজ। এপিআই দ্বারা রেফারেন্স)

Biz.Api স্তরটির জন্য ডোমেন ক্লাস সরবরাহ করে। এগুলি মেমোরিতে ব্যবসায়ের ডেটা ম্যানিপুলেট করার জন্য পদ্ধতি সরবরাহ করে।

  • /Dal.Db

(বিজ। এপিআই দ্বারা রেফারেন্স)

ডাটাবেস সংগ্রহস্থল স্তর। ডাটাবেসগুলি অ্যাক্সেস করে এবং মানচিত্রগুলি ফেরত তথ্যগুলিকে অভ্যন্তরীণ ডিটিও'র / ইন্টারফেস স্তরটিতে সংজ্ঞায়িত করে into

  • /Dal.Services

(বিজ। এপিআই দ্বারা রেফারেন্স)

বাহ্যিক নির্ভরতা যেমন ওয়েব পরিষেবাদিগুলির জন্য একটি প্রক্সি স্তর সরবরাহ করে এবং / ইন্টারফেস প্রকল্পে সংজ্ঞায়িত অভ্যন্তরীণ ডিটিওগুলিতে তাদের ফেরত ডেটা ম্যাপ করে।

  • / ইন্টারফেস

(উপরের বেশিরভাগ প্রকল্পের দ্বারা রেফারেন্স)

আইওসির মতো জিনিসের জন্য চুক্তিগুলি সংজ্ঞায়িত করার জন্য সমাধানের চারপাশের ডেটা পাস করার জন্য ডিটিও ক্লাস এবং সি # ইন্টারফেস রয়েছে।


"/Biz.Api ডোমেন পরিষেবাদি সরবরাহ করে": আপনি কী অ্যাপ্লিকেশন পরিষেবাদি বলতে চান? এছাড়াও, সংগ্রহস্থলগুলি সাধারণত ডিটিও না করে সত্তা (সমষ্টিগত শিকড়) দেয় না। এবং এই প্রকল্পগুলির মধ্যে নির্ভরতাগুলিও জানার জন্য ভাল হবে;)
গিলিয়াম

হ্যাঁ, আমি অ্যাপ্লিকেশন পরিষেবাগুলি বোঝাতে চাইছি। সংগ্রহস্থলগুলি ক্লাসগুলির উদাহরণগুলি ফিরিয়ে আনছে যা ডেটা সঞ্চয় করা ছাড়া কিছুই করে না - এই ক্ষেত্রে অটোম্যাপার ব্যবহার করে এই ডেটা ম্যাপ করা হয়। ফেরত দেওয়া উদাহরণটির কোনও হেরফের পদ্ধতি নেই, যা আমি সংগ্রহ করি সত্তাগুলির কাছে।
ম্যাট ডব্লু

"এই ডেটা ম্যাপ করা হয়েছে": কি এবং কিসের মধ্যে? "কৌশলগত কৌশলগুলি" বলতে কী বোঝ?
guillaume31

উত্তর:


22

এই ফোল্ডার কাঠামোটি ভৌ ভার্ননের বিখ্যাত ইমপ্লিমিটিং ডোমেন চালিত ডিজাইন বই দ্বারা অনুপ্রাণিত ।

সমাধান:
S ওয়েব সার্ভিস ( আরএসটি পরিষেবাদি এখানে বসবাস করে)
├ ওয়েব সার্ভিস টেস্টস
├ অ্যাপ্লিকেশন (অ্যাপ্লিকেশন পরিষেবাগুলি এখানেই থাকে)
├ অ্যাপ্লিকেশন
টেস্টস main ডোমেন (সত্তা, ভিও, ডোমেন পরিষেবাদি, ডোমেন ফ্যাক্টরি, স্পেসিফিকেশনস, ডোমেন ইভেন্টস, রিপোজিটরি ইন্টারফেসস, ইনফ্রাস্ট্রাকচার সার্ভিসেস ইন্টারফেস)
main ডোমেইন
টেস্টস ├ ইনফ্রাস্ট্রাকচার (সংগ্রহস্থল অবকাঠামো সেবা impl।, বহিরাগত পরিষেবাগুলিতে অ্যাডাপ্টার)
└ InfrastructureTests

আমি একটি সমাধান দিয়ে শুরু করি তারপরে আমার আবেদনের প্রতিটি স্তরের জন্য চারটি প্রকল্প এবং প্রতিটি স্তর পরীক্ষার জন্য আরও চারটি প্রকল্প তৈরি করব।

কোনও ফোল্ডার interfacesবা servicesআপনার ডোমেন স্তরে তৈরি করবেন না পরিবর্তে সম্পর্কিত ক্লাসগুলিকে মডিউলগুলিতে কার্যকারিতা দ্বারা গোষ্ঠী করা উচিত।


1

যতটা কাঠামো আছে, আমার কাছে এটি ঠিক আছে যদিও আমি বিভিন্ন, আরও স্ব-বর্ণনামূলক নামগুলি নিয়ে এসেছি, যেমন "YourProjectWebApi"পরিবর্তে "Base", "Dal.External"পরিবর্তে "Dal.Services"এবং এর মতো আরও কিছু।

"অভ্যন্তরীণ ডিটিও" অংশে কোনও গন্ধ থাকতে পারে, কারণ আপনার ভাণ্ডারগুলি সত্ত্বা থেকে সরিয়ে নিয়ে সরাসরি ডোমেন (ব্যবসায়) পদক্ষেপ গ্রহণ করতে সক্ষম হবেন। প্রতিষ্ঠানগুলি কেবল ডিটিওর নয়।

ইন্টারফেস প্রজেক্ট (ডিপোজিটরিগুলিতে ফিরিয়ে দেওয়া?) এবং এর নিজস্ব ডোমেন অবজেক্ট থেকে ডোমেন স্তর ডিটিওর মধ্যে কিছু ম্যাপিং করছে সেটার Dal.Dbকোনও নির্ভরতা নেই এই সত্য থেকে আমি একত্রিত হই Biz.Domain,। এটি একটি আদর্শ অত্যাধুনিক (== "পেঁয়াজ" বা "ষড়জাগর") ডিডিডি আর্কিটেকচারে সঠিক হবে না - ডোমেন স্তরটি অন্যান্য প্রকল্পগুলিকে উল্লেখ করা উচিত নয়। একই কারণে, রেপোজিটরি ইন্টারফেসগুলি ডোমেনে ঘোষণা করা উচিত এবং Interfacesআমার অনুমান অনুসারে নয় ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.