Thursday, January 6, 2011

Can You Really Create A Business Logic Layer?

The past three posts of this little mini-series have gone from a Working definition of business logic to a Rigorous definition of business logic and on to some theorems about business logic. To wrap things up, I'd like to ask the question, is it possible to isolate business logic into a single tier?

Related Reading

There are plenty of opinions out there. For a pretty thorough explanation of how to put everything into the DBMS, check out Toon Koppelaar's description. Mr. Koppelaars has some good material, but you do need to read through his earlier posts to get the definitions of some of his terms. You can also follow his links through to some high quality discussions elsewhere.

Contrasting Mr. Koppelaar's opinion is a piece which does not have nearly the same impact, IMHO, because in Dude, Where's My Business Logic? we get some solid history mixed with normative assertions based on either anecdote or nothing at all. I'm a big believer in anecdote, but when I read a sentence that says, "The database should not have any knowledge of what a customer is, but only of the elements that are used to store a customer." then I figure I'm dealing with somebody who needs to see a bit more of the world.

Starting At the Top: The User Interface

First, let's review that our rigorous definition of business logic includes schema (types and constraints), derived values (timestamps, userstamps, calculations, histories), non-algorithmic compound operations (like batch billing) and algorithmic compound operations, those that require looping in their code. This encompasses everything we might do from the simplest passive things like a constraint that prevents discounts from being over 100% to the most complex hours-long business process, along with everything in between accounted for.

Now I want to start out by using that definition to see a little bit about what is going on in the User Interface. This is not the presentation layer as it is often called but the interaction layer and even the command layer.

Consider an admin interface to a database, where the user is entering or modifying prices for the price list. Now, if the user could enter "Kim Stanley Robinson" as the price, that would be kind of silly, so of course the numeric inputs only allow numeric values. Same goes for dates.

So the foundation of usability for a UI is at very least knowlege of and enforcement of types in the UI layer. Don't be scared off that I am claiming the UI is enforcing anything, we'll get to that a little lower down.

Now consider the case where the user is typing in a discount rate for this or that, and a discount is not allowed to be over 100%. The UI really ought to enforce this, otherwise the user's time is wasted when she enters an invalid value, finishes the entire form, and only then gets an error when she tries to save. In the database world we call this a constraint, so the UI needs to know about constraints to better serve the user.

Now this same user is typing a form where there is an entry for US State. The allowed values are in a table in the database, and it would be nice if the user had a drop-down list, and one that was auto-suggesting as the user typed. Of course the easiest way to do something like this is just make sure the UI form "knows" that this field is a foreign key to the STATES table, so it can generate the list using some generic library function that grabs a couple of columns out of the STATES table. Of course, this kind of lookup thing will be happening all over the place, so it would work well if the UI knew about and enforced foreign keys during entry.

And I suppose the user might at some point be entering a purchase order. The purchase order is automatically stamped with today's date. The user might see it, but not be able to change it, so now our UI knows about system-generated values.

Is this user allowed to delete a customer? If not, the button should either be grayed out or not be there at all. The UI needs to know about and enforce some security.

More About Knowing and Enforcing

So in fact the UI layer not only knows the logic but is enforcing it. It is enforcing it for two reasons, to improve the user experience with date pickers, lists, and so forth, and to prevent the user from entering invalid data and wasting round trips.

And yet, because we cannot trust what comes in to the web server over the wire, we have to enforce every single rule a second time when we commit the data.

You usually do not hear people say that the UI enforces business logic. They usually say the opposite. But the UI does enforce business logic. The problem is, everything the UI enforces has to be enforced again. That may be why we often overlook the fact that it is doing so.

The Application and The Database

Now let's go through the stuff the UI is enforcing, and see what happens in the application and the database.

With respect to type, a strongly typed language will throw an error if the type is wrong, and a weakly typed language is wise to put in a type check anyway. The the DBMS is going to only allow correctly typed values, so, including the UI, type is enforced three times.

With respect to lookups like US state, in a SQL database we always let the server do that with a foreign key, if we know what is good for us. That makes double enforcement for lookups.

So we can see where this is going. As we look at constraints and security and anything else that must be right, we find it will be enforced at least twice, and as much as three times.

You Cannot Isolate What Must be Duplicated

By defining First Order Business Logic, the simplest foundation layer, as including things like types and keys and constraints, we find that the enforcement of this First Order stuff is done 2 or 3 times, but never only once.

This more or less leaves in tatters the idea of a "Business Logic Layer" that is in any way capable of handling all business logic all by its lonesome. The UI layer is completely useless unless it is also enforcing as much logic as possible, and even when we leave the Database Server as the final enforcer of First Order Business Logic (types, constraints, keys), it is still often good engineering to do some checks to prevent expensive wasted trips to the server.

So we are wasting time if we sit around trying to figure out how to get the Business Logic "where it belongs", because it "belongs" in at least two places and sometimes three. Herding the cats into a single pen is a fool's errand, it is at once unnecessary, undesirable, and impossible.

Update: Regular reader Dean Thrasher of Infovark summarizes most of what I'm saying here using an apt industry standard term: Business Logic is a cross-cutting concern.

Some Real Questions

Only when we have smashed the concept that Business Logic can exist in serene isolation in its own layer can we start to ask the questions that would actually speed up development and make for better engineering.

Freed of the illusion of a separate layer, when we look at the higher Third and Fourth Order Business Logic, which always require coding, we can decide where they go based either on engineering or the availability of qualified programmers in particular technologies, but we should not make the mistake of believing they are going where they go because the gods would have it so.

But the real pressing question if we are seeking to create efficient manageable large systems is this: how we distribute the same business logic into 2 or 3 (or more) different places so that it is enforced consistently everywhere. Because a smaller code base is always easier to manage than a large one, and because configuration is always easier than coding, this comes down to meta-data, or if you prefer, a data dictionary. That's the trick that always worked for me.

Is This Only A Matter of Definitions?

Anybody who disagrees with the thesis here has only to say, "Ken, those things are not business logic just because you wrote a blog that says they are. In my world business logic is about code baby!" Well sure, have it your way. After all, the nice thing about definitions is that we can all pick the ones we like.

But these definitions, the theorems I derived on Tuesday, and the multiple-enforcement thesis presented here today should make sense to anbyody struggling with where to put the business logic. That struggle and its frustrations come from the mistake of imposing abstract conceptual responsibilities on each tier instead of using the tiers as each is able to get the job done. Databases are wonderful for type, entity integrity (uniqueness), referential integrity, ACID compliance, and many other things. Use them! Code is often better when the problem at hand cannot be solved with a combination of keys and constraints (Fourth Order Business Logic), but even that code can be put into the DB or in the application.

So beware of paradigms that assign responsibility without compromise to this or that tier. It cannot be done. Don't be afraid to use code for doing things that require structured imperative step-wise operations, and don't be afraid to use the database for what it is good for, and leave the arguments about "where everything belongs" to those with too much time on their hands.

133 comments:

Dean Thrasher said...

Great article, Ken.

I've been tripped up by "business logic consolidation" meme in numerous projects. It ranks a close second to "creating a security layer" in the annals of flawed systems thinking. Both business logic and security are cross-cutting concerns.

The software industry has slowly moved to a defense-in-depth approach to security, since imposing many security checks at various levels in the code creates a far more defensible system. Perhaps we will belatedly embrace the idea that knowledge and enforcement of business logic is the job of every component of a software application.

After all, you'd never want to say to a client, "we've consolidated all the business logic in this layer here, allowing the rest of the application to be as illogical as we want."

KenDowns said...

@Dean:

"we've consolidated all the business logic in this layer here, allowing the rest of the application to be as illogical as we want."

ROFLMAO. Had to take a break and get some coffee to calm down.

Also, I'm putting in a short update, check it out.

John Zabroski said...

I tend to refer to business logic as being a projection of requirements across the system. The important thing isn't that they are cross-cutting, but rather that they are defined in one place, so that we can have a single source of truth about the enterprise.

CONCORDIA Programming said...

Ken, you said perfectly: "the nice thing about definitions is that we can all pick the ones we like". But I have to say: "In my world business logic is about code baby!"
Nice post, thanks Ken

obat herbal glaukoma said...

pengobatan penyakit glaukoma secara alami tanpa operasi

Obat Herbal Glaukoma

obat herbal tbc said...

your post is very interesting
thank you for sharing
i really liked

Obat Herbal TBC

obat herbal polip hidung said...

excellant post

Obat Herbal Polip Hidung

Unknown said...

Its a useful information
A well-managed email database is by far the best way to boost sales without risking budget waste because it appeals to consumers who have already opted in to receive marketing information from you. Germany Mailing Lists

Unknown said...

"""Tunjukan Cara Bermainmu Hanya di www.mgmpoker88.com memberi Promo menarik bagi pecinta permainan kartu online :
◙ Minimal DEPOSIT dan Withdraw Hanya RP. 20.000.-
◙ Jackpot Hingga Jutaan Rupiah Setiap Harinya
◙ Cashback Mingguan 0.5%
◙ Bonus Refferal 20%

Untuk Info Lebih Lanjut Bisa Saja Langsung Hubungi Costumer Service kami di :
LiveSupport 24JAM.
◙ Livechat : https://goo.gl/UdJZKT
◙ Skype : jessy wijayatan
◙ Phone : +85577597038
"""

Unknown said...

Good work…unique site and interesting too… keep it up…looking forward for more updates.Good luck to all of you and thanks so much for your hard-work.
asi legal bangalore, asi legal,asi legal cochin,Shahul hameed

pkv games said...

Anda pecinta Judi Online??, ingin mendapatkan kemenangan yang besar dengan modal 25rb saja??, dan ingin mendapatkan jackpot serta bonus yang besar setiap harinya??, maka daftarkan diri anda disalah satu situs judi online yang sudah terpercaya di Indonesia.

1 mandiridomino.net
2. qqkompas.net
3. dadudomino.com
4. dewadominoqq.net
5. dewajudiqq.net
6. vipmandiriqq.net
7. bandarjudiqq.org
8. pemainbandarq,info

Untuk semua situs judi online di atas menawarkan permainan DominoQQ, BandarQ, Poker Online, Capsa Susun, Bandar Poker, Sakong Online

Dan jika anda ingin melakukan permainan Judi Casino, Judi Togel dan Judi Bola, maka bisa mengunjungi website dibawah ini.

1. indototo88.net
2. mastercasino88.com

Vistas AD Media said...

nice blog

We Are also providing Web Designing Company in Bangalore - Vistas is one of the top website design companies and our Web Designers deliver premium Web Design Services in Bangalore

Abubakar said...

stunning, there is a long way to go here. On account of just for sharing the articles.summer school holidays Ireland

Abubakar said...

i like your thoughts that you describe in your post
fluente no ingles

Unknown said...

Very good post amazing content i bookmarked you site for upcoming amazing posts.

city of Longmont weed

Unknown said...

thanks for this post very interesting content
japanese rice hat

Billy. said...

You have completed an awesome activity. I will burrow it and actually prescribe to my companions. I am sure they will be profited from this site



http://arizonaast.org/index.php/cave-creek-arizona-lawyer-2/



BroddyAdams said...

Hmm is anyone else encountering problems with the images on this blog loading? I'm trying to figure out if its a problem on my end or if it's the blog. Any feed-back would be greatly appreciated.Import Project Forecasts

Web Development Company said...

Hi,

Thanks for sharing a very interesting article about Can You Really Create A Business Logic Layer? This is very useful information for online blog review readers. Keep it up such a nice posting like this. Keep it up such a nice posting like this.

Regards,
WondersMind,
Web Design Company Bangalore

Ram Niwas said...
This comment has been removed by the author.
Ram Niwas said...
This comment has been removed by the author.
Raj Kumar said...
This comment has been removed by the author.
Chiến SEOCAM said...

आपण लिहिलेली माहिती खूप चांगली आहे. खूप खूप धन्यवाद

Kỹ sư bật mí 7 tác dụng kỳ diệu của cửa lưới chống muỗi

Chàng trai cho biết nên mua lưới chống chuột ở đâu?

Bác sỹ hé lộ 28 Cách ngăn muỗi hiệu quả

Bật mí phương pháp Phòng chống muỗi cho biệt thư ở miền Nam

Maketting SEO said...

Never share your secrets with anyone because it can ruin you. This is probably the most important advice in life.

Chàng trai tiết lộ giá của đá ruby đỏ

Đá tourmaline vẻ đẹp tiềm ẩn

Mẹo nhận biết đá emerald

Khám phá về giá đá ruby lục yên

Chiến SEOCAM said...

Zonsezi ndizothandiza kwambiri kwa ine. Zikomo kwambiri chifukwa chogawana mfundo zosangalatsa izi.

Trưởng phòng chia sẻ cách nuôi thú cưng sạch sẽ

Kỹ sư tư vấn chọn cửa lưới inox hay sợi thủy tinh

Giám đốc chia sẻ những phím tắt ảo diệu dân công sở nên biết

Người nuôi chó hé lộ những giống chó hiền lành nhất

Maketting SEO said...

Mae yna adegau pan fyddwch chi'n baglu ac mae'n( máy xông tinh dầu ) ymddangos nad ydych yn gallu sefyll a pharhau, ceisiwch, os gwelwch yn dda( máy phun sương tinh dầu ) cynilo a meddwl y bydd siarad da am fywyd weithiau'n( máy xông tinh dầu ) eich helpu i oresgyn( máy xông tinh dầu ) anawsterau, eich helpu i sefyll yn gadarn a mynd ymlaen. Mae'r erthygl ganlynol yn eich cyflwyno i fwy na 100 o eiriau prydferth am fywyd.

Chiến SEOCAM said...

Tôi xin cảm ơn bạn. Vì đã tạo ra một bài viết rất hay và thú vị. Chúc bạn may mắn

lều xông hơi loại nào tốt

lều xông hơi cá nhân

bán lều xông hơi

mua lều xông hơi ở đâu

Ashraf said...

Nice..


Freshpani is providing online water delivery service currently in BTM, Bangalore you can find more details at Freshpani.com
Online Water Delivery | Bangalore Drinking Water Home Delivery Service | Packaged Drinking Water | Bottled Water Supplier

Chiến SEOCAM said...

Chúc bạn tuần mới vui vẻ và hạnh phúc bên gia đình và những người thân yêu. Xin cảm ơn vì đã chia sẻ bài viết

máy phun tinh dầu

máy khuếch tán tinh dầu tphcm

máy khuếch tán tinh dầu hà nội

máy xông phòng ngủ

Chiến SEOCAM said...

Phối chó husky

Phối giống chó husky

Dịch vụ phối giống chó Poodle

Phối chó Pug

Maketting SEO said...

Tökezlediğiniz ve ayağa kalkıp(  taxi Nội Bài ) devam edemediğiniz( taxi noi bai ) gibi görünen zamanlar vardır, lütfen bazen( taxi sân bay nội bài rẻ nhất )  zorlukların üstesinden gelmenize yardımcı olacak, yaşamınızla(số điện thoại taxi nội bài ) ilgili iyi ( taxi hàng không nội bài ) et. Aşağıdaki makale, yaşam hakkında 100'den fazla güzel kelime size tanıtır.

Maketting SEO said...

Nội Thất Trẻ Em Bảo An Kids là doanh nghiệp chuyên thiết kế và thi công các sản phẩm nội thất trẻ em bao gồm: Phòng ngủ trẻ em, Giường tầng, bàn học đẹp, kệ sách, bàn học hiện đại, Một số câu hỏi khi sử dụng giường tầng

Chandra Sekhar Reddy said...

Thanks for sharing this article
"Sanjary Academy provides excellent training for Piping design course. Best Piping Design Training Institute in Hyderabad,
Telangana. We have offer professional Engineering Course like Piping Design Course,QA / QC Course,document Controller
course,pressure Vessel Design Course, Welding Inspector Course, Quality Management Course, #Safety officer course."
Piping Design Course in India­
Piping Design Course in Hyderabad
Piping Design Course in Hyderabad
QA / QC Course
QA / QC Course in india
QA / QC Course in Hyderabad
Document Controller course
Pressure Vessel Design Course
Welding Inspector Course
Quality Management Course
Quality Management Course in india
Safety officer course

Buồn thế said...

Bài viết của bạn ok đấy

lều xông hơi

lều xông hơi tại nhà

lều xông hơi giá rẻ

lều xông hơi sau sinh

Chiến NHX said...

Hay quá đê

10 CÁCH TRỊ MUỖI ĐỐT HIỆU QUẢ

Sầu nhân thế said...

Bài viết của bạn quá ok

máy tạo hương thơm trong phòng

máy xông tinh dầu bằng điện tphcm

máy xông hương

may xong huong tinh dau

máy đốt tinh dầu điện

Buồn thế said...

Rất hay và tuyệt vời

https://www.flipsnack.com/cualuoihm/

https://creativemarket.com/cualuoihm

https://pastebin.com/u/cualuoihm

Chiến NHX said...

Bạn đã có một bài viết quá hay và tuyệt vời

https://www.okeynotes.com/banchocanh

https://www.f6s.com/banchocanh

https://www.ioby.org/users/anhnguyenvanchien020892373478

https://pro.ideafit.com/profile/ban-chocanhc

Buồn thế said...

Chắc bạn sẽ có bài viết hay

https://forums.pokemmo.eu/index.php?/profile/131787-cualuoihm/
https://doremir.com/forums/profile/cualuoihm
https://www.wincert.net/forum/profile/100889-cualuoihm/
https://www.goodreads.com/user/show/104133368-cualuoihm

Zinavo-Web Design | Web Development | SEO | Mobile Apps | ERP/CRM said...

Really awesome blog! Your blog is really useful for me and Thanks for sharing this informative blog.Web Development Company in Bangalore | Website Design Companies in Bangalore | Web Design Company in Bangalore | Website Design Company in Bangalore

Bồn ngâm massage chân Doca said...

Hay và thú vị quá

case máy tính cũ

vga cũ hà nội

mua bán máy tính cũ hà nội

Lắp đặt phòng net trọn gói

Ram Niwas said...
This comment has been removed by the author.
Chiến NHX said...

ok

Dịch vụ vận chuyển chó mèo cảnh Sài Gòn Hà Nội

Situs Artikel Judi Online Terlengkap 2019 said...

Piala Liga Eropa
Cara Menang Main Poker Online
Cara Main Judi Poker
Judi Slot Online Terpercaya
Cara Menghitung Odds Bola
Game Esport
Daftar Togel Online

Anonymous said...

Nice blog keep going..
Digital Marketing | Outsource SEO Services | Digital Marketing Services | Digital Marketing in India

poker Indonesia said...

Pada kesempatan kali ini saya ingin merekomendasikan kepada para bettor Indonesia untuk mencoba keberuntungannya dengan bermain di salah satu agen IDN Poker Online Terpercaya Indonesia yaitu Nonapoker. Meskipun masih tergolong baru di dunia judi online, namun situs berdiri sejak tahun 2019 tersebut juga menawarkan beragam jenis permainan poker IDN secara lengkap kepada para bettor Indonesia. Contohnya seperti :
- Poker Online
- DominoQQ
- Capsa Susun Online
- Ceme
- Ceme Keliling
- Super10
- Omaha

Selain menyediakan permainan karu online secara lengkap, situs judi online terbaik dan terpercaya di Indonesia tersebut juga menawarkan berbagai varian bonus promo menarik lainnya yang bisa diperoleh oleh para bettor Indonesia. Sebu saja bonus promo seperti :
- Bonus Referral
- Bonus Turnover
- Bonus Cashback
- Bonus Kejutan lainnya

Untuk menciptakan kenyamanan bermain para members, situs nonapoker telah menyediakan beberapa layanan komunikasi populer lainnya, Contohnya seperti :
- Line
- Whatsapp
- Skype
- Wechat

Selain itu, untuk mempermudah proses bertransaksi para bettor, situs Nonapoker juga telah menyediakan akun rekening dari beberapa bank ternama di Indonesia, yaitu :
- Bank BCA
- Bank BRI
- Bank BNI
- Bank Panin
- Bank Danamon
- Bank Mandiri
- Bank CIMB Niaga

Bagaimana menurut anda, apakah tertarik segera bergabung dengan situs Nonapoker? Untuk itu segeralah kunjungi dan daftarkan diri anda di agen poker Indonesia tersebut dengan menggunakan link yang akan saya berikan dibawah ini.
- http://69.16.199.120/
- https://nonapoker1.club/
- http://nonapoker.biz/

Bồn ngâm massage chân Doca said...

Thông tin bài viết thực sự hữu ích

thanh lý phòng net

màn hình máy tính 24 inch cũ

lắp đặt phòng net

giá card màn hình

Chiến NHX said...

Những chia sẻ hay

Dịch vụ vận chuyển chó mèo cảnh Sài Gòn Hà Nội

cáo tuyết

cáo tuyết thái lan

Phối chó bull pháp

Techiesys said...

Post is good and informative. You can check them out here -

Website Designer in Bangalore


Máy khuếch tán tinh dầu said...

ok mà anh

máy xông tinh dầu phun sương bottle cap

may xong phong ngu

may xong huong

may phun suong nao tot

Đồ gia dụng said...

We have world-class technicians to help you a lot for

linh kiện máy tính cũ
thanh lý máy tính

Anonymous said...

Thank you for Sharing a valuable information, We also provide the best Web design and development services to reach your Business goal. For more details visit here Web design company in Bangalore

Đồ gia dụng said...

Chúng ta đều biết nguồn máy tính là một trong những thiết bị không thể thiếu của một máy tính để bàn trọn bộ. Chính vì vậy, để đảm bảo một máy tính để bàn hoạt động tốt hoặc ít nhất để giảm thiểu tối đa các linh kiện máy tính khác có đầy đủ điện năng khi “hoạt động” thì một bộ nguồn máy tính cần phải “khỏe”- điều này cũng có nghĩa là nếu bộ nguồn máy tính của một máy tính bị hỏng thì chiếc máy tính đó sẽ không thể hoạt động được nữa.Vậy cách duy nhất để duy trì cũng như kéo dài tuổi thọ của máy là không cố sử dụng máy tính khi nguồn máy tính đã bị hỏng. Và nhận biết những dấu hiệu cảnh báo nguồn máy tính sắp hỏng sẽ giúp bạn có những phương án kịp thời để xử lý.
Những dấu hiệu cảnh báo nguồn máy tính cũ sắp hỏng

Techiesys said...

Techiesys is a seo company in Bangalore that works efficiently with its clients.

Quikks Digital Solutions said...

We are a Seo Firm Bangalore.Our Senior SEO Consultant has 10+ years of experience, offers services like SEO, PPC, SMM, online reputation management & web development both to small and medium companies. As a running offer, we are providing free performance audit for our customers.

Pokerwin88 | Poker Deposit Pulsa | Ceme Online said...


Pokerwin88 merupakan situs Poker Deposit Pulsa Minimal 10rb yang Resmi.

Pokerwinqq
Pokerwin
Ceme Online
Poker Deposit Pulsa
Poker Online
Poker Online
Poker Online
Ceme Online
Poker Deposit Pulsa

Poker Online
Ceme Online
Poker Deposit Pulsa
IDN Poker
DominoQQ
POKER PULSA TANPA POTONGAN

CrownQQ Agen BandarQ said...

Spesial Promo Khusus Member Setia Di Situs CrownQQ
Yuk Buruan Daftar Dan Mainkan 9 Game Berkualitas Hanya Di Situs CrownQQ
Agen BandarQ Terbesar Dan Terpercaya Di indonesia
Rasakan Sensasi serunya bermain di CrownQQ, Agen BandarQ Yang 100% Gampang Menang
Games Yang di Hadirkan CrownQQ :
* Poker Online
* BandarQ
* Domino99
* Bandar Sakong
* Sakong
* Bandar66
* AduQ
* Sakong
* Perang Baccarat (New Game)

Promo Yang Hadir Di CrownQQ Saat ini Adalah :
=> Bonus Refferal 20%
=> Bonus Turn Over 0,5%
=> Minimal Depo 20.000
=> Minimal WD 20.000
=> 100% Member Asli
=> Pelayanan DP & WD 24 jam
=> Livechat Kami 24 Jam Online
=> Bisa Dimainkan Di Hp Android
=> Di Layani Dengan 5 Bank Terbaik

<< Contact_us >>
WHATSAPP : +855882357563
LINE : CS CROWNQQ
TELEGRAM : +855882357563


Link Resmi CrownQQ:
RATUAJAIB. COM
RATUAJAIB.NET
RATUAJAIB.INFO

DEPOSIT VIA PULSA TELKOMSEL | XL 24 JAM NONSTOP

CROWNQQ | AGEN BANDARQ | ADUQ ONLINE | DOMINOQQ TERBAIK | DOMINO99 ONLINE TERBESAR

Máy mátxa chân said...

ok anh trai

https://bonngamchan.vn/may-massage-chan-hang-nhat-co-tot-nhu-loi-don/

https://bonngamchan.vn/

https://bonngamchan.vn/danh-muc/bon-ngam-chan/

https://bonngamchan.vn/may-ngam-chan/

Bồn ngâm massage chân Doca said...

ok anh haizzz

https://ngoctuyenpc.com/man-hinh-may-tinh-24-inch

https://ngoctuyenpc.com/mua-ban-may-tinh-cu-ha-noi

https://ngoctuyenpc.com/mua-ban-may-tinh-laptop-linh-kien-may-tinh-cu-gia-cao-tai-ha-noi

https://ngoctuyenpc.com/cay-may-tinh-cu

OS Publishers said...

Thanks for share this article. I would like to share this post click here to know more Scientific Publishers

startup platform said...

Fantastic post, very informative. I wonder why the other specialists of this sector do not notice this. You must continue your writing. I am sure, you have a great writer. keep posting!

best altcoins to invest in India said...

Thanks for sharing an informative blog keep rocking bring more details for us.I like the helpful information for us you provide in this article. Very high quality content and useful information!

Ram Niwas said...

It was such a valuable information. Thank you for sharing.
Web Design Company in Delhi

Natasya said...

JAGUARQQ | DOMINO 99 | POKER | BANDARQ ONLINE

* Dengan Minimal Deposit : Rp 15.000,-
*Menyediakan Deposit Via OVO & PULSA ( XL & TELKOMSEL )
* Tersedia 9 Game Dalam 1 User ID
+ BandarQ
+ ADUQ
+ SAKONG
+ DOMINO99
+ BANDAR66
+ POKER
+ BANDAR POKER
+ CAPSA SUSUN
+ PERANG BACCARAT

* Bonus Rollingan 0,5% Setiap minggu
* Bonus Referal 20% Seumur hidup

- Kontak Kami -
WA : +855964608606
TELEGRAM : +855964608606
LINE : csjaguarqq
Website : 99jaguar

BACA JUGA BLOGSPOT KAMI:
Teman Wisataa
JaguarQQ Win
Gamess Online99
Gosip99
Cerita Bokep99

Joshna Ravada said...

Nice post and it's informative too. Thanks for sharing your knowledge and you can also check ecommerce website development in bangalore.

Unknown said...

İdeasoft N11 Entegrasyonu ile ürünlerinizi koaly ve pratik bir şekilde ürünlerinizi entegre edin.

UplayOnline said...

Very high quality content and useful information!


UPLAY365

Unknown said...

SIAUAE is one of the top audit firms in UAE with highly experienced professionals. As a leading Audit Firms in UAE , we achieved the label of best tax consultant in UAE.Our CA services Will help you.

We providing the best VAT consultancy services in UAE .As a leading VAT Consultants in UAE , we achieved the label of best VAT consultant in UAE.

Looking for the top accounting firms in UAE? SIAUAE is the best Accounting Firms in UAE , we offer comprehensive professional services in UAE.

SIAUAE management consultancy is a professional Management Consultancy UAE , Helping clients achieve their business goals. For more details call us now.

CrownQQ Agen BandarQ said...

CrownQQ Agen DominoQQ BandarQ dan Domino99 Online Terbesar

Yuk Buruan ikutan bermain di website CrownQQ

Sekarang CROWNQQ Memiliki Game terbaru Dan Ternama loh...

9 permainan :
=> Poker
=> Bandar Poker
=> Domino99
=> BandarQ
=> AduQ
=> Sakong
=> Capsa Susun
=> Bandar 66
=> Perang Baccarat (NEW GAME)

=> Bonus Refferal 20%
=> Bonus Turn Over 0,5%
=> Minimal Depo 20.000
=> Minimal WD 20.000
=> 100% Member Asli
=> Pelayanan DP & WD 24 jam
=> Livechat Kami 24 Jam Online
=> Bisa Dimainkan Di Hp Android
=> Di Layani Dengan 5 Bank Terbaik
=> 1 User ID 9 Permainan Menarik

Ayo gabung sekarang juga hanya dengan
mengklick daftar crownqq

Link Resmi CrownQQ:
eurohoki,com
eurohoki,net
eurohoki,org
eurohoki,info

BACA JUGA BLOGSPORT KAMI:
Info CrownQQ
CrownQQWIN
Berita dan Info Dunia

Info Lebih lanjut Kunjungi :
WHATSAPP : +6287771354805
LINE : CS CROWNQQ
TELEGRAM : +855882357563

JesslynShu said...

judi slot online

situs judi slot online terpercaya

situs judi slot

slot online

judi slot uang asli

situs slot online indonesia

slot online uang asli

situs judi slot online uang asli

game slot online

kios365

Unknown said...

Good Blog, thanks for sharing
Today the companies are continually being challenged to reduce the expenses, most of working expenditures and other requirements. The main costs include the salary of employees like HR professional, accountant, auditors and administration. These problem can be overcome by best expert business outsourcing company. They provide quality and valuable services at low cost for the business enterprises. In UAE most of accounts payable outsourcing companies offers cost effective accounting services that will help the companies effectively in the current situation.
Audit firms in UAE

Unknown said...

Good Blog, thanks for sharing
the intensity of smells can't be exaggerated. Smell has such a solid association with one's passionate express that it revives the recollections that went with our experience, in a few occasions, returning over numerous years. A deliberately built fragrance can lift one's state of mind, and places one out of a positive and innovative outlook. Our fragrance arrangements give you a chance to make the ideal experience for your customers and associates – one in which they remain drew in and associated.
Aroma diffuser

manhquynh.1679@gmail.com said...

Very good article, I also want to do what you share. But really, I am not ready. I was not confident in front of many people and gave presentations. I tried but failed, I was very nervous at that time: Máy ép dầu thực vật Nanifood, Máy ép tinh dầu Nanifood, Máy ép dầu Nanifood, Máy lọc dầu Nanifood, Máy ép dầu, May ep dau, Máy lọc dầu, Máy ép tinh dầu, Máy ép dầu thực vật, Máy ép dầu gia đình, Máy ép dầu công nghiệp, Bán máy ép dầu thực vật, Giá máy ép dầu,............

kseo.agency said...

ISO Certification in Delhi – Genveritas a global ISO Certification Consulting firm represents considerable authority in tweaked and result-situated answers for assisting organizations to actualize change and improve business execution.

Neuro Doctors are a cohesive group of Top Neurosurgeon in Bangalore Neurologists, Intervention Neuroradiologist, pain management specialists who work together to provide comprehensive neurosciences care to our patients.

KEEN SEO Agency – Best Web Design Company in Bangalore . We provide full-service Web Design & Development Solutions that also includes specialized SEO services for Small Businesses. We offer Strategist Local SEO, Ecommerce SEO, website auditing, Paid Search (PPC) strategies including Google Ads, Facebook & Linked In Ads for Small Business (B2B & B2C).

ISO Certification Consultant said...

ISO Delhi
ISO Certification Delhi
ISO Consultants Delhi
ISO Consultants in Delhi
ISO Certification in Delhi
ISO Certification Consultants in Delhi

ISO Certification Consultant said...

seo bangalore
seo company in bangalore
seo agency in bangalore
seo services in bangalore
best seo company in bangalore
top seo company in bangalore
best seo agency in bangalore
best seo services in bangalore
best seo companies in bangalore
seo company bangalore
seo agency bangalore
seo services bangalore

Spyland Italia said...

This blog is useful as well as informative. Keep sharing such blogs I really like your posts.
web development
App development
Digital marketing agency

Web Educare said...

This is a very good content and thank you for sharing such an wonderful information. Please follow my website for more information in Advanced SEO Training in Kolkata.

Digital Marketing Training.
Digital Marketing training institute.
Digital Marketing Agency in Kolkata.
Digital Marketing Services in Kolkata.
Advanced Digital Marketing Courses.
SMM Training in Kolkata.
SEO Training in Kolkata

IATRC said...

Very nice information. Really appreaciated. Thank you for the details. Please follow my site for PLC Training in Kolkata.

PLC SCADA Training in Kolkata.
PLC Training in Kolkata.
SCADA Training in Kolkata.
HMI Training in Kolkata.
VFD Training in Kolkata.
Industrial Automation Training in Kolkata.

Appsbit said...

Please keep sharing this types of content, really amazing. Please follow my website for more information in Best IT Professional Courses in Kolkata.

ANSIBLE Training in Kolkata.
DevOps Training in Kolkata.
CKA Training in Kolkata.
CKAD Training in Kolkata.
Docker Training in Kolkata.
Kubernetes Training in Kolkata.
AWS Training in Kolkata.
AZURE Training in Kolkata.
VMWARE Training in Kolkata.
Citrix Training in Kolkata.
NSX Training in Kolkata.
VDI Training in Kolkata.

togel harian said...


Sakurapoker juga memberikan kemudahan bertransaksi seperti deposit 24 jam semua bank seperti bca, bni, mandiri, bri dan cimb. Semua transaksi akan diproses tanpa adanya jam offline, transaksi tidak akan diproses jika posisi bank sedang gangguan.

Support Deposit Poker Online OVO, Gopay, Dana dan Link

Máy khuếch tán tinh dầu said...

Chia sẻ của bạn quá hay

máy khuếch tán tinh dầu hà nội

máy xông phòng ngủ

máy xông mùi thơm

Anonymous said...

When you go for creating a website, you need to do so with care because you want the website to not only be user-friendly but also very attractive. In this regard, you will find plenty of options available to you. You can either download free software that offers a great many functions to make your website appealing or you can hire the services of professional website Design Company in Bangalore.
Web Development Company in Bangalore

Letter Writing said...

Yorinfopoint basically provides educational content like application letter format, writing skills, and more. You will find informative articles. Our website published articles only for your search easier.
Letter and Writings
Paragraph Writing
Types of Nouns
Inofmral Letter
Parts of Speech

Yash Gaurav said...

Good article about Programming in database.
Being a best website designing company in Faridabad, we are focused on the online success and growth of our clients by providing them nice website design and website development process, whether it is technical or design glitch we always push our boundaries to create unique and innovative ideas for your desired goals. But that is crucial to have a Website Design that justifies your Image. So we have Best Web designers, Web Developers, and project managers who provide expertise in the area of Website development in the most creative and supportive manner.

Yash Gaurav said...

Good and informative article.Give a good exposure over database programming.
we provide web design services.we are no.1 website design and development company in faridabad,delhi/ncr

emailtaai said...

Software development company in Noida team has to perform in accord with the client's engineering team for ideal results. Techsaga Corporations address this facet of the software development process most aggressively with our streamlined and well-planned resources.

Chiến Chịu chơi said...

Tuyệt vời

Bách Hóa Cam

Dung dịch các loại

Gel

Công ty bán gel sát khuẩn tay nhanh tại HCM tốt nhất

mani said...

the blog or and best that is extremely useful to keep I can share the ideas
of the future as this is really what I was looking for, I am very comfortable and pleased to come here. Thank you very much.

Best SEO Company in Bangalore|
SEO Services Company In Bangalore|
SEO Services In Bangalore|
SEO Agency In Bangalore|

Fred said...

Thanks for sharing valuable information and very well explained. SEO Services in BangaloreKeep posting. SEO Company in Bangalore

Sầu nhân thế said...

Thật tuyệt vời

Mách bạn chi phí thi công nội thất trọn gói tại hà nội

Chi phí thi công nội thất trọn gói bao nhiêu năm 2021

Khám phá chi phí thi công nội thất trọn gói bao nhiêu

Máy mátxa chân said...

ok hay mà

màn hình máy tính 2k

lắp đặt phòng net trọn gói

lắp đặt phòng nét

lắp đặt phòng game

Chiến Chelsea said...

Những chia sẻ quá hay r

Mua quà tặng doanh nghiệp ở đâu tốt?

Bí quyết chọn quà tặng doanh nghiệp tốt

Cửa hàng làm kỷ niệm chương tốt

Tuyệt chiêu chọn quà tặng thành công

Sầu nhân thế said...

ok

https://avanga.vn/khai-niem-than-so-hoc-la-gi/

Ý nghĩa số 2 trong biểu đồ ngày sinh

Ý nghĩa số 3 trong biểu đồ ngày sinh

Ý nghĩa con số chủ đạo 2 trong thần số học

Deep Bhardwaj said...

Nice article. Thank you for this informative post. If you are looking for SEO expert in Bangalore then contact Deep Bhardwaj. We have 7+ years of experience in providing the best SEO services in Bangalore.

SEO expert Bangalore said...

Nice post really useful information. We are a leading SEO service provider in Bangalore. Contact us for the best SEO services in Bangalore.

Abishek said...

Nice post it is really an interesting article we are also providing the web design services in mumbai. We are the leading
website development company in mumbai
web design company in mumbai

Naveen said...

Thanks for posting this article Car mechanic Adelaide

Renovate Me said...

Thanks for sharing this post Home renovation Adelaide

Naveen said...

Thanks for sharing this post Kiln Dried Sand

Adelaide Tree Surgery said...

Thanks for posting the great article Tree Removal Services

SEO expert in Delhi - Deep Bhardwaj said...

Is your business looking for an SEO expert in Delhi? Hire Delhi SEO expert to get more organic traffic and get first-page ranking in Google. Visit our website and request a free SEO consultation today.

Anonymous said...

Thanks for sharing.
We at Antino Labs believe in redefining and refining our model to suit the industry's requirements. Antino Labs' several years of experience in the market has let us register our global presence. Antino Labs' has the vision to become the world's most trusted partner for digital transformation and we aim to become a brand that defines innovation and the latest technology. We offer clients a one-stop solution for all their interests regarding IT consulting services in Gurgaon and UI/UX design services in Gurgaon.

ISO 9001 Certification in South Africa said...

This is an excellent post I seen thanks to share it.

ISO 9001 Certification in Iraq

Digital Marketing Agency said...

really liked this content, loved reading & viewing.

Search engine optimization agency

ISO Consultant in Singapore said...

ISO 27001 is basically- “ISO 27001 – Information science — Security methods — Information protection administration structures — Requirements.” In easy terms,ISO 27001 Certification in Dubai is the most regarded worldwide preferred on statistics security. These certificates are issued through the International Organization for Standardization (ISO), in collaboration with the International Electro-Technical Commission (IEC).

GST Registration in Bangalore said...

thanks for sharing this Blog..

BACKLINKS
BACKLINKS

bharath said...

ISO 22000 Certification in Dubai

Certvalue is the top ISO 22000 Consultants in Dubai for providing ISO 22000 Certification in Burj Khalifa, Burj Al Arab, Ajman, Sharjah,Al Ain and other major Cities in Dubai with services of implementation.

ISO Implementation in Saudi Arabia said...

Hi thanks for sharing this amazing do follow backlinks

Do Backlinks
Do Backlinks

Renovate Me said...

Thanks for posting this great article Home Renovation Adelaide

bharath said...

CE Mark Consultants in Dubai required declaration of product properties is laid down in European norms (EN) standards issued by CEN European commission for standardization. You can find information on CE marking tailored for manufacturers, importers, distributors and consumers.
https://www.certvalue.com/ce-mark-certification-in-dubai/

Buồn thế said...

Thật thú vị

Thần số học số 3

Thần số học số 2

Thần số học số 4

Thần số học số 5

Anonymous said...

The Global Associates is a unique full service sales and marketing organization offering Customized Strategic and Tactical Sales Solutions to Organizations, Globally.

B2B Lead Generation and Appointment Setting Services, Tele sales Companies, Inside Sales Outsourcing Companies.

Lead Generation and Appointment Setting Services

CAD Design and Drafting Services said...

The AEC Associates is the pioneer in offering Design Support Services across the Global Architecture, Engineering, and Construction Industry. Our team has over 100 Architects, Engineers, Interior Designers, and CAD Technicians. The senior management at The AEC Associates has 75 years, of collective experience in setting up cutting edge operational processes and communication regimes. With the right mix of talent and domain expertize, we have designed a seamless process to offer Architectural CAD and BIM services globally.

bharath said...

ISO 9001 Certification in Bangalore


ISO 9001:2015 is a worldwide commonplace that sets the needs for a powerful Quality Management System. It details specific processes, procedures, and activities that organizations should produce, implement, maintain and improve to with success manage creating products or delivering services.

bharath said...

ISO 14001 Certification in Saudi Arabia
ISO 14001 Certification in Saudi Arabia is a world standard that outlines the necessities for an economical environmental management system (EMS); thus, obliging with this commonplace permits a corporation to boost its environmental performance following an internationally recognized protocol Developing associate EMS helps firms and organizations to spot, monitor, manage and control environmental problems during a comprehensive manner.

bharath said...

thanks for sharing this Blog. do check my do follow sites.
do follow sites
do follow sites
do follow sites
do follow sites
do follow sites

Anonymous said...

Great article you have there! tree service text

link quotex indonesia said...

Quotex Indonesia
Quotex Web

Anonymous said...

Slot Online

Pratham Gupta said...

Master Infotech is an IT services firm that provides a wide range of services. We intend to maintain high commitment, dependability, and innovation standards in the future. To establish ourselves as a leading name in the industry, we make it a priority to deliver world-class quality with absolute precision.
Our team of experts creates custom work plans that take into account the competitive market.

We strive to bring excellence to all of our complex projects in an agile manner, framing and amplifying exceptional capabilities. We lead in an unconventional way in these times of rapid technological change.

Please click the following link to learn more about Digital Marketing:

Best Digital Marketing Agency in Chandigarh

David Buttler said...

Working as a freelance C++ game developer is quite easy compared to being a full-time employee. It will save your time and help you focus more, and get you better projects. C++ game development is a rewarding and fulfilling career option when you have an eye for the game development and the mind of a coder.

Erdi Kurniadi said...

Dobra web stranica : One Piece
Dobra web stranica : Profil
Dobra web stranica : One Piece
Dobra web stranica : One Piece
Dobra web stranica : One Piece
Dobra web stranica : One Piece
Dobra web stranica : Logo
Dobra web stranica : One Piece

Naveen Kumar said...

Tamil Astrology is an Occult Science that tells us about that deep rooted connection between the celestial bodies and human beings.

nidhi pethe said...

Amazing article. It's very useful.
It looks like you have put lot of work into this.
SMARS designs jewelry to run along with your ever-changing wardrobe. A piece of Jewelry can either make or break your entire look; therefore, every unique outfit needs a different piece of jewelry to compliment it. But looking at the prices of traditional jewelry, we usually find occasions like festivals or ceremonies to buy it. And these adorable pieces spend most of their lives in the lockers. Komal, the founder of SMARS, understood this gap in the market. Every single piece is limited edition and walks hand-in-hand with trends. Adored by customers from all over the world, we ensure the quality delivery of our high-end, Indian fashion costume jewelry. Shop online for latest collection of Kundan, antique and temple jewelry in India check out necklace sets, earrings, bangles, chokers for girls and many more Indian jewelry sets for women available with free shipping across India.
Take a look: Bangles Set Online

EnnConsultancy said...

A Professional ISO consultancy company in Coimbatore - ENN Consultancy. We provide iso 9001, iso 22000, iso 14001 consultants Services, and Training in Salem, Erode, Tirupur, Trichy, Madurai, Karur, and Chennai.
Visit EnnConsultancy

Web Development India said...

This is an excellent post

Website Development Company

Laravel Development Company in india

PHP Development Company in india

WordPress Development Company in india

Medline Academics - IVF Training institute said...

Establish a training system for hands-on training and theoretical knowledge in the field of Clinical Embryology and in ART laboratory management. The Embryologist certification is presently based on trust regarding students and their supervisors, stating that participants have a threshold experience period for about 3 to 6 years and a minimum number of completed protocols (50 from each of the nine core laboratory methods of ART)

Anonymous said...

Dixinfotech is the fastest growing. ecommerce web development company india. We have a talented team consisting of designers, engineers and project managers, we excel in providing end-to-end solutions within your budget, goals and timeline.


https://www.dixinfotech.com/ecommerce-website-development

Anonymous said...

Dixinfotech is the fastest growing. ecommerce web development company india. We have a talented team consisting of designers, engineers and project managers, we excel in providing end-to-end solutions within your budget, goals and timeline.

mansoor alam said...

nice blog.
Get backlinks at lowest price and 50% off on seo services and website design call or what's app +918013470356

ronnie said...

It's always fascinating to explore different viewpoints in the field, and I will certainly delve into Toon Koppelaar's explanation for a deeper understanding. Diversity of opinions, including those related to custom web design, often leads to valuable insights.

Brain Jones said...

Thanks a bunch! Your input is truly valuable
For Visit nicotine free vape juice