1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

محدودیت های Castle ActiveRecord در NHibernate

شروع موضوع توسط minaaa ‏19/11/11 در انجمن برنامه نویسی

  1. کاربر پیشرفته

    تاریخ عضویت:
    ‏9/12/10
    ارسال ها:
    19,773
    تشکر شده:
    6,457
    امتیاز دستاورد:
    113
    [h=1][/h]
    [​IMG]
    Castle ActiveRecord یک کتابخانه مفید برای استفاده از NHibernate است. این کتابخانه هم کار mapping را مشابه Fluent NHibernate ساده می‌کند و هم کار مدیریت session و خیلی کارهای دیگر را خودش مدیریت می‌کند. به طوری که استفاده از NHibernate بسیار ساده‌تر شود. Castle ActiveRecord در واقع پیاده‌سازی Design Patternی به همین نام یعنی Active Record است. با این که Castle ActiveRecord کار با NHibernate را بسیار ساده‌تر کرده ولی به خاطر همین سادگی، محدودیت‌هایی هم نسبت به استفاده مستقیم از NHibernate دارد.



    از جمله:

    ۱- الگوی Active Rercord به طور کلی مورد انتقاد است.
    بعضی‌ها معتقدند الگوی Active Record ناکارآمد است و می‌توان به جای آن از الگوهای بهتری مثل Repository Pattern استفاده کرد. دقت کنید که الگوی پیش‌فرض Castle ActiveRecord همان Active Record است اما می‌توان با الگوهای دیگری از جمله Unit of Work هم با آن کار کرد.

    ۲- در فرایند Schema Update آن
    نمی‌توان اسکریپت‌های update را قبل از اجرا دید.

    ۳- Second Level Cache در بیشتر متودهای کلاس ActiveRecordBase امکان پذیر نیست، از جمله بیشتر overloadهای متود FindAll. برای فعال بودن Second Level Cache باید در Criteriaها از SetCachable(true)‎ استفاده شود.

    ۴- Second Level Cache ظاهراً در ActiveRecordLinq هم به همان دلیل قبلی غیر فعال است. در LINQ موجود در NHibernate چه در provider قدیمی چه در NH 3
    راه حل‌هایی وجود دارد ولی ظاهراً نمی‌توان از آنها در Castle ActiveRecord استفاده کرد.



    قاعدتاً غیر از این‌ها محدودیت‌های دیگری هم وجود دارد اما آن چه که مهم است این است که عمده این محدودیت‌ها را می‌توان با ارث‌بری از کلاس ActiveRecordBase یا ActiveRecordMediator و افزودن امکانات مورد نظر به کلاس جدید دور زد. اگر هم پایه بودید می‌توانید یک branch از
    سورس کد Castle ActiveRecord ایجاد کرده، قابلیت مورد نظر را به آن اضافه کرده و patch آن را به تیم توسعه دهنده Castle ActiveRecord بفرستید تا اگر مورد قبول واقع شد، آن امکان من بعد در نسخه‌های رسمی Castle ActiveRecord اضافه شود.